Docker 数据卷并装载到主机



我刚刚通读了Docker文档,并试图更好地理解Docker数据量,因为文档有点模糊。

我的理解是,有两种方法可以挂载 Docker 卷:

  • 安装简单(例如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>

(方法 1)卷实际装载到哪里?

这样做:

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,则该源是指运行 docker 的 VM 内的本地目录。

这个位置如何在集装箱更换中幸存下来?

它们之所以存在,是因为它们基于主机的本地目录(它们是卷,因此它们存在)。

如果您在多个主机上运行 Swarm 或集群,则无法使用这些命令,以便在不同主机上运行的容器可以访问这些卷,是吗?

关于简单的卷配置,您是正确的。这就是docker变得棘手的地方,持久性。您可以在主机文件系统级别实现共享目录,然后作为卷挂载到容器中,以便跨集群主机获得共享卷。

https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-shared-storage-volume-as-a-data-volume

最新更新