仅数据容器已过时,现在被视为反模式!
在过去的日子里,在使用Docker的volume子命令之前以及在可以创建命名卷之前,当在任何容器中都不再有对它们的引用时,Docker删除了这些卷。仅数据容器已过时,因为Docker现在可以通过各种docker volume子命令创建命名卷以及更多实用程序。由于这个原因,现在仅数据容器被视为反模式。
过去几年中,网络上的许多资源都提到了使用一种称为“仅数据容器”的模式,该模式只是一个Docker容器,其存在只是为了保持对数据量的引用。
请记住,在这种情况下,“数据卷”是未从主机挂载的Docker卷。为了明确VOLUME起见,“数据卷”是使用Dockerfile指令或使用-v命令中的命令行开关docker run(特别是使用format)创建的卷-v /path/on/container。因此,“仅数据容器”是一个容器,其唯一目的是附加数据量,该数据量由命令中的--volumes-from标志使用docker run。例如:
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子命令和命名卷,请参阅创建命名卷。