docker笔记6-数据卷
- 一、初识dockerfile
- 1.1 编写镜像
- 1.2 构建镜像
- 1.3 运行镜像
- 二、案例
- 2.1 多个容器共享数据
- 2.2 多个mysql数据共享
一、初识dockerfile
之前的内容中,我们都是通过pull的方式拉取别人写好的镜像,那么通过编写dockerfile,我们可以编写自己想要的镜像。
1.1 编写镜像
# 创建一个dockerfile文件,名字可以随便 建议Dockerfile
# 文件中的内容 指令(大写) 参数
vim dockerfile1
进入文件,编写内容
#这里的每个命令,就是镜像的一层!
FROM centos
VOLUME ["volume01","volume02"] #匿名挂载
CMD echo "---------end----------"
CMD /bin/bash
1.2 构建镜像
docker build xx
docker build -f /home/docker-test-volume/dockerfile1 -t kuangshen/centos:1.0 .
1.3 运行镜像
docker run -it kuangshen/centos:1.0 /bin/bash
二、案例
2.1 多个容器共享数据
需求:启动多个自定义的镜像,并且实现这些容器之间的数据卷挂载。
上面我们已经启动了一个docker01容器,那么接下来我们分别启动docker02、docker03容器,并分别以docker01为父容器,实现数据卷挂载。
命令:
--volume-from
docker run -it --name docker02 --volumes-from docker01 kuangshen/centos:1.0
docker run -it --name docker03 --volumes-from docker01 kuangshen/centos:1.0
我们分别在某一个容器的volume01或者volume02中进行创建文件,可以发现,其他容器也会同步更新这些操作。
简单理解,就像是一种映射关系。这个三个容器中的volume01和volume02文件都与虚拟机的/var/lib/docker/volumes/xxxx/_data
这个目录建立映射关系,因此就算其中某个容器关系或者被删除,也不会影响其他容器中的数据。
2.2 多个mysql数据共享
docker run -d -p 3310:3306
-v /etc/mysql/conf.d
-v /var/lib/mysql
-e MYSQL_ROOT_PASSWORD=root
--name mysql01 mysql:5.7
docker run -d -p 3311:3306
-e MYSQL_ROOT_PASSWORD=root
--name mysql02
--volumes-from mysql01 mysql:5.7
# 这个时候可以实现两个容器数据同步