在单纯使用 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