首页 > 解决方案 > docker 卷的挂载点名称

问题描述

使用以下命令:

docker container run -dit --name testcontainer –mount source= ubervol, target=/vol alpine:latest

挂载点名称ubervol指向位于容器内的目标 /vol,如下所示:

user@machine:~$ docker container exec -it b4fd sh
/ # pwd
/ 
/ # ls vol
vol

在此处输入图像描述

ubervol位于/var/lib/docker/volumes/ubervol主机路径中的容器外部(托管 docker 守护进程)


使用以下 Dockerfile:

# Create the folders and volume mount points
RUN mkdir -p /var/log/jenkins
RUN chown -R jenkins:jenkins /var/log/jenkins

RUN mkdir -p /var/jenkins_home
RUN chown -R jenkins:jenkins /var/jenkins_home

VOLUME ["/var/log/jenkins", "/var/jenkins_home"]

我的理解是,目标位于带有路径/var/log/jenkins &&的容器内/var/jenkins_home


源挂载点名称是什么?对于每个目标(/var/log/jenkins&& /var/jenkins_home

这个挂载点名称在主机中的路径是什么?

标签: linuxdockerdockerfiledocker-machinemount-point

解决方案


卷数据在主机上的位置是一个实现细节,您不应试图利用它。在某些环境中,例如 Docker Desktop for Mac 应用程序,数据将隐藏在您无法直接访问的虚拟机中。虽然我很少遇到这种情况,但也有替代的音量驱动程序可以让您将内容存储在其他地方。

每次你docker run创建一个基于声明 a 的镜像的容器时VOLUME,如果你不使用选项挂载其他东西-v,Docker 将创建一个匿名卷并将其挂载到那里(就像你没有指定一个--mount source=...)。如果您从同一个映像启动多个容器,我相信每个容器都会获得一个新卷(如果有,则具有不同的主机路径)。Dockerfile 无法控制卷在主机上的位置;操作员可以挂载不同的命名卷或主机目录。

实际上,VOLUME在 Dockerfile 中使用几乎没有意义。您可以使用docker run -v此处是否VOLUME为同一目录。它的主要作用是防止以后的RUN命令修改那个目录


推荐阅读