[Docker] 使 Volume 独立于容器运行时的方式

在单纯使用 run 命令运行一个容器时,通常会使用 -v 挂载的方式来实现宿主机数据卷映射到容器内。

使用命令:

$ docker run --name mysql-con -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d custom-mysql-img:v1

这种方式很容易看到映射关系,缺点是在一些批量管理的脚本中,使数据卷管理与容器管理耦合了。

并没有一个独立的数据卷管理方式,容器停止时,也就没有所谓的数据卷映射了。

如何使数据卷让容器引擎来管理,是先创建独立的容器数据卷,demo 是给数据卷的名称。

使用命令:

$ docker create volume demo

$ docker run --name mysql-con -v demo:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d custom-mysql-img:v1

此时,数据卷是独立于容器的运行时而存在。

好处是,多个容器可以共享Volume,成本是需要维护Volume,但在分布式系统中维护Volume是必须的。

Other:[Docker] 容器持久化数据的首选机制 Volume

Refer:https://github.com/phvia/dkc

Other:https://tool.offso.com/navs/play-with-docker

Link:https://www.cnblogs.com/farwish/p/15416752.html

原文地址:https://www.cnblogs.com/farwish/p/15416752.html