docker 卷的装载点名称

Mount point name for a docker volume

使用以下命令:

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

source 挂载点 nameubervol 指向 target /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"]

我的理解是,target 位于路径为 /var/log/jenkins 的容器内 && /var/jenkins_home


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

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

卷数据在主机上的位置是您不应尝试利用的实现细节。在某些环境中,例如 Docker 应用程序的 Docker 桌面,数据将隐藏在您无法直接访问的虚拟机中。虽然我很少遇到,但也有备用 volume drivers 可以让您将内容存储在其他地方。

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

实际上,在 Docker 文件中使用 VOLUME 几乎没有意义。您可以使用 docker run -v,无论此处是否为同一目录使用 VOLUME。它的主要作用是 prevent future RUN commands from modifying that directory.