You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab服务器Docker运行Jekyll后找不到站点及容器问题排查

问题分析与解决

为什么第一次的站点找不到?

你第一次执行的命令存在关键的挂载路径错误:

sudo docker run --rm -it --volume="$PWD:/srv/jekyll1" jekyll/jekyll:4.0 jekyll new blog

jekyll/jekyll官方镜像的默认工作目录是/srv/jekyll,当你运行jekyll new blog时,Jekyll会在容器的**当前工作目录(也就是/srv/jekyll)**下创建blog站点目录。但你挂载的是宿主机的$PWD到容器的/srv/jekyll1,这个挂载目录和Jekyll创建站点的目录完全不相关!

再加上你用了--rm参数,容器执行完命令就会被立即删除,所以容器内/srv/jekyll/blog这个临时目录也跟着消失了,宿主机自然找不到它。

为什么第二次提示目录已存在?

你第二次的命令改成了:

sudo docker run --rm -it --volume="$PWD:/srv/jekyll" jekyll/jekyll:4.0 jekyll new blog

这次你把宿主机的$PWD(当前目录)挂载到了容器的默认工作目录/srv/jekyll,所以Jekyll检查容器内/srv/jekyll/blog时,其实是在检查宿主机$PWD下的blog目录——这说明你的宿主机当前目录下已经存在blog文件夹!

这个文件夹可能是你之前某次操作(比如不小心在宿主机创建的,或者之前错误挂载时意外留下的)产生的,和第一次容器里的临时站点没关系。

如何找到你的Jekyll站点?

  1. 首先确认你执行这些Docker命令时的当前目录:
    在宿主机上执行:

    # 查看vagrant用户的家目录下是否有blog
    ll /home/vagrant
    # 或者查看Vagrant共享目录(通常是/vagrant)
    ll /vagrant
    

    因为你是用vagrant用户操作的,大概率$PWD是这两个目录之一。

  2. 如果找到blog目录,那就是你现在能操作的站点;如果没找到,那第一次的站点确实已经随着容器删除了,你可以用--force参数重新创建:

    sudo docker run --rm -it --volume="$PWD:/srv/jekyll" jekyll/jekyll:4.0 jekyll new blog --force
    

后续正确操作建议

以后创建Jekyll站点时,确保挂载路径对应容器的默认工作目录/srv/jekyll,比如:

# 先切换到你想存放站点的宿主机目录
cd /path/to/your/site/folder
# 然后运行命令
sudo docker run --rm -it --volume="$PWD:/srv/jekyll" jekyll/jekyll:4.0 jekyll new blog

内容的提问来源于stack exchange,提问作者MikiBelavista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:55:14