我只是阅读了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/

    10-13 08:52
    查看更多