linux - 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
)
这个挂载点名称在主机中的路径是什么?
解决方案
卷数据在主机上的位置是一个实现细节,您不应试图利用它。在某些环境中,例如 Docker Desktop for Mac 应用程序,数据将隐藏在您无法直接访问的虚拟机中。虽然我很少遇到这种情况,但也有替代的音量驱动程序可以让您将内容存储在其他地方。
每次你docker run
创建一个基于声明 a 的镜像的容器时VOLUME
,如果你不使用选项挂载其他东西-v
,Docker 将创建一个匿名卷并将其挂载到那里(就像你没有指定一个--mount source=...
)。如果您从同一个映像启动多个容器,我相信每个容器都会获得一个新卷(如果有,则具有不同的主机路径)。Dockerfile 无法控制卷在主机上的位置;操作员可以挂载不同的命名卷或主机目录。
实际上,VOLUME
在 Dockerfile 中使用几乎没有意义。您可以使用docker run -v
此处是否VOLUME
为同一目录。它的主要作用是防止以后的RUN
命令修改那个目录。
推荐阅读
- yahoo-finance - 雅虎财经:按 ISIN 或 Ticker 搜索,不带后缀
- c# - 发送数据时 JSON 的顺序很重要吗?
- python - 在 Python 中使用多行文本自定义文本属性列表的格式?
- python - 如何在python中使用if else与范围?
- java - 返回仅包含给定数组的前 2 个元素的新数组的最短代码是什么?
- windows - 输入-PSSession powershell 到 RDP 并运行 IPConfig。给出错误
- .htaccess - 使用 .htaccess 重定向到不同服务器上的外部网站只是为了在开头有“www”
- spring-data-rest - 未找到搜索 API EntityRepresentationModel
- node.js - 在nodejs中提取多种类型的压缩文件
- r - HTML Rvest 抓取不显示表格