试图理解dockerfile及其目录中的VOLUME命令
我最近刚开始在本地电脑上使用windows操作系统使用docker,我正处于试图理解音量的阶段。 据我所知,在推荐行中,只需添加以下命令即可将本地目录连接到容器目录:试图理解dockerfile及其目录中的VOLUME命令,docker,containers,dockerfile,Docker,Containers,Dockerfile,我最近刚开始在本地电脑上使用windows操作系统使用docker,我正处于试图理解音量的阶段。 据我所知,在推荐行中,只需添加以下命令即可将本地目录连接到容器目录: -v [host location]:[container location] 使用dockerfile时,请指定容器目录: VOLUME [container location] 因此,当使用 docker volume ls 我可以看到在我的计算机上创建的卷 DRIVER VOLUME NAME
-v [host location]:[container location]
使用dockerfile时,请指定容器目录:
VOLUME [container location]
因此,当使用
docker volume ls
我可以看到在我的计算机上创建的卷
DRIVER VOLUME NAME
local 3d25e0608d5500c4dba29f8c3bc7b5ba4d5348e6fbd54644a20a5701f0b9f427
我的问题是我试图理解这本书在我的电脑上的什么位置
使用inspect可获得以下结果:
[
{
"CreatedAt": "2019-05-01T13:47:41Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/3d25e0608d5500c4dba29f8c3bc7b5ba4d5348e6fbd54644a20a5701f0b9f427/_data",
"Name": "3d25e0608d5500c4dba29f8c3bc7b5ba4d5348e6fbd54644a20a5701f0b9f427",
"Options": null,
"Scope": "local"
}
]
我不明白“/var/lib/docker/volumes/…”到底在哪里。
docker使用的是虚拟linux驱动器吗?您不能直接访问docker命名的卷(或位于
/var/lib/docker
中的任何其他卷)。例如,官方Docker示例将启动附加容器,装载相同的卷以进行基本数据管理操作
如果需要直接访问卷中的数据,使用主机目录绑定装载可能是最简单的选择
您应该避免在Dockerfile中写入卷
指令。您不需要使用dockerrun-v
将目录装载到容器中;它的关键作用是,如果您还没有一个-v
选项,那么它会自动为您添加一个-v
选项。在实践中,您将得不到任何好处,并且会遭受一些令人困惑的副作用(值得注意的是,RUN
步骤不会在卷
目录中进行持久更改)
您在
docker volume ls
中看到的匿名卷可能是您的volume
指令的结果。对于docker for Windows和Mac,是的,/var/lib/docker是docker运行的嵌入式VM的一部分,而不是在host/var/lib/docker目录中。