仅数据容器
仅数据容器已过时,现在被视为反模式!
在以前的日子里,在 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
子命令和命名卷,请参阅创建命名卷