主机将容器目录挂载到主机?

时间:2018-01-08 00:13:25

标签: docker containers docker-volume

我在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...

1 个答案:

答案 0 :(得分:0)

对于命名卷,在创建卷时,图像内容将从映像复制到命名卷。此命名卷将/bin的内容复制到卷:

docker run -ti -v busyboxbin:/bin busybox sh

绑定安装的目录已安装到位并覆盖任何图像内容。所以这个例子会失败(除非你已经有/tmp/empty中的文件副本)

docker run -ti -v /tmp/empty:/bin busybox sh

gitlab容器将在图像启动后填充装入的卷内容。日志很容易添加到那里。数据目录可能需要由应用程序初始化。如果没有文件存在,图像可能附带预先配置的配置以填充和运行。