我在docker run -v $(pwd):/app image_name
的图像中构建了我的Web项目的图像,其中包含所有依赖项。当运行容器时,它开始快速燃烧,我能够立即访问应用程序。
但是我直接在Dockerfile中构建所有东西,所以主机除了Dockerfile之外什么都没有。
所以我尝试检索项目文件,如sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
,但似乎文件夹被覆盖,因为当尝试提供公共文件夹时,它再也找不到了。只需排除音量选项就可以开始了。
当我认为它覆盖我的容器文件夹时,我是对的吗?
为什么这适用于GitLab项目? (https://docs.gitlab.com/omnibus/docker/README.html#prerequisites)
他们获得了容器中的所有项目,并将其安装在主机上。
.style...
答案 0 :(得分:0)
对于命名卷,在创建卷时,图像内容将从映像复制到命名卷。此命名卷将/bin
的内容复制到卷:
docker run -ti -v busyboxbin:/bin busybox sh
绑定安装的目录已安装到位并覆盖任何图像内容。所以这个例子会失败(除非你已经有/tmp/empty
中的文件副本)
docker run -ti -v /tmp/empty:/bin busybox sh
gitlab容器将在图像启动后填充装入的卷内容。日志很容易添加到那里。数据目录可能需要由应用程序初始化。如果没有文件存在,图像可能附带预先配置的配置以填充和运行。