仅数据容器

仅数据容器已过时,现在被视为反模式!

在以前的日子里,在 Docker 的 volume 子命令之前,在可以创建命名卷之前,Docker 在任何容器中没有对它们的引用时删除了卷。仅数据容器已过时,因为 Docker 现在提供了创建命名卷的功能,以及通过各种 docker volume 子命令提供的更多实用程序。由于这个原因,仅数据容器现在被视为反模式。

从过去几年开始,Web 上的许多资源都提到了使用称为仅数据容器的模式,该模式只是一个 Docker 容器,仅用于保持对数据卷的引用。

请记住,在此上下文中,数据卷是未从主机挂载的 Docker 卷。为了澄清,数据量是使用 VOLUME Dockerfile 指令创建的卷,或者在 docker run 命令中使用命令行上的 -v 开关创建的卷,特别是格式为 -v /path/on/container。因此,仅数据容器是一个容器,其唯一目的是附加数据卷,--volumes-from 命令中的 --volumes-from 标志使用该容器。例如:

docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true

运行上述命令时,将创建仅数据容器。它只是一个空容器,附有数据卷。然后可以在另一个容器中使用此卷,如下所示:

docker run -d --name="mysql" --volumes-from="mysql-data" mysql

mysql 容器现在具有相同的体积,也在 mysql-data 中。

因为 Docker 现在提供 volume 子命令和命名卷,所以此模式现在已过时,不推荐使用。

要开始使用 volume 子命令和命名卷,请参阅创建命名卷