我只是阅读了Docker文档,并试图更好地理解Docker Data Volumes,以使文档有些模糊。
据我了解,有两种安装Docker Volume的方法:
docker run -it -v /data --name container1 busybox
);和docker run -it --name container1 -v /path/on/host:/datavol busybox
)但是,为了使卷在容器重新启动甚至容器交换期间保持不变(删除旧容器,创建/启动新的容器),在这两种方法中都不必将卷安装到主机吗?!?换句话说,如果我没有通过“简单安装方法”显式安装到主机,则实际将卷安装到何处?以及该位置如何在容器交换中幸免?
同样,在这两种情况下,我都假定该卷仅在给定主机本地,并且如果您在多个主机上运行Swarm或集群,则无法使用这些命令,以便在不同主机上运行的容器可以访问这些卷,是吗? (我猜这就是数据卷容器发挥作用的地方,对吗?)预先感谢!
最佳答案
是的,这两种方法都基于在容器生命周期中持续存在的主机目录。
使用以下命令可获得更多信息:
docker volume ls
docker volume inspect <volume-id>
# and
docker inspect <container-id>
做这个:
docker inspect <container-id>
您的答案在“来源”中:
"Mounts": [
{
"Type": "volume",
"Name": "96f5e6531480cc716cd030f3f60f8927a55728a52d55ad55589752c2b89f2001",
"Source": "/var/lib/docker/volumes/96f5e6531480cc716cd030f3f60f8927a55728a52d55ad55589752c2b89f2001/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
请注意,如果您使用的是OSX或Windows,则该Source指的是运行docker的VM中的本地目录。
它们之所以能够生存是因为它们基于主机的本地目录(并且它们是卷,因此存在)。
您对简单的卷配置是正确的。这就是docker变得棘手的地方,即持久性。您可以在主机文件系统级别实现共享目录,然后将其作为卷安装在容器中,以便跨群集主机获得共享卷。
https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-shared-storage-volume-as-a-data-volume
关于docker - Docker数据卷和挂载到主机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44500406/