3

我正在阅读 Docker 关于卷的用户指南部分:https ://docs.docker.com/engine/userguide/containers/dockervolumes/

在第一部分,它说明了如何创建卷并将其添加到容器中,我将其称为“方法 1”:

您可以多次使用 -v 来挂载多个数据卷。现在,在您的 Web 应用程序容器中挂载一个卷。

$ docker run -d -P --name web -v /webapp training/webapp python app.py

这将在 /webapp 的容器内创建一个新卷。

稍后会谈到数据卷容器,我称之为“方法 2”:

如果您有一些要在容器之间共享的持久性数据,或者想从非持久性容器中使用,最好创建一个命名的数据卷容器,然后从其中挂载数据。

$ docker create -v /dbdata --name dbstore training/postgres /bin/true

-v这是我不明白的,通过简单地使用命令docker run(方法 1)实现卷与使用“数据卷容器”(方法 2)实现卷有什么区别?

您似乎只是在创建一个在图像的非持久容器的生命周期中持久的卷,如果我错了,请纠正我。

4

1 回答 1

1

据我了解,至少从 docker 1.12 开始,卷始终是同一件事:一些持久性数据存储在主机的某个位置。但是有不同的方法来管理卷:

  1. 创建它并将其安装到容器(您的方法 1)。有了这个,当你想将一个容器的卷挂载到另一个容器中时,你可以使用“volumes-from”
  2. 使用 创建卷docker volume create,并让 docker 管理它。它将被保存在主机系统的某个地方(例如/var/lib/docker),但您并不真正关心具体的位置和方式。
  3. 将主机目录挂载为卷,在这种情况下,您知道它在主机上的挂载位置,并且您对它“负责”。

然后,有“技巧”(如此所述。例如:

“如果您通过 docker run -v my-precious-data:/data imageName 从映像运行新容器来创建命名卷,则 /data 下的容器内的数据将被复制到命名卷中。”

因此,您创建/管理卷的方式可能会有所不同,但它本质上始终是一个卷。

于 2016-09-06T16:25:45.723 回答