17. 容器数据卷
什么是容器数据卷?
容器数据卷,其实就是为了实现多个容器之间,数据同步与共享。
17.1. 启动容器
说明:在这里,我们使用上一章节构建的test/centos镜像,启动3个容器,使3个容器之间,可以实现数据同步与共享。
启动第一个容器:centos01
docker run -it --name centos01 test/centos /bin/bash
启动第二个容器:centos02
docker run -it --name centos02 --volumes-from centos01 test/centos /bin/bash
上面的命令表示:centos01作为父容器,centos02继承centos01进行启动
启动第三个容器:centos03
docker run -it --name centos03 --volumes-from centos01 test/centos /bin/bash
同上面“启动第二个容器”的命令一样
启动成功之后,如下:
17.2. 测试数据同步与共享
在centos01容器中新建一个文件
首先,查看3个容器中volume01目录下有没有文件
可以看到,3个容器中的volume01目录下是没有任何文件的。
第二,在centos01容器中,新建一个test01.txt文件,并且发现,在centos02、centos03容器中,都出现了该文件,如下图
这个时候,如果在启动一个容器centos04,并且centos04通过--volumes-from centos01进行启动的话,在centos04容器中的volume01目录下,也是存在test01.txt文件的。
测试结论
- 如果再启动一个容器centos04,并且centos04通过--volumes-from centos01进行启动的话,在centos04容器中的volume01目录下,也是存在test01.txt文件的。
- 如果在centos02或centos03容器中的volume01目录下也创建了其他的文件,同样,也会分别同步/共享到centos01或centos02或centos03容器中的volume01目录下。
- 停止并删除掉其中的任意一个容器,volume01目录下的文件不会丢失;也就是说,只要有任意一个容器在使用该目录,文件就不会丢失。
17.3. 应用与实践
通过以上的测试,我们发现,可以使用容器数据卷完成mysql、redis等数据的同步与共享。
以mysql为例:
#启动第一个mysql容器
docker run -d -p 3306:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
#启动第二个mysql容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
这样即可实现mysql的数据同步与共享。
17.4. 总结
- 容器之间用于数据同步的,一般都是配置文件居多
- 容器数据卷的生命周期,一直持续到没有容器使用为止。
-----------------------------------EOF----------------------------------