目录
一、容器数据卷概念
二、使用数据卷
2.1直接使用命令来挂载
三、实战测试
四、具名挂载和匿名挂载
4.1匿名挂载举例:
4.2具名挂载举例:
五、数据卷容器
一、容器数据卷概念
数据?如果数据都在容器中,那么容器删除,数据就是跟着删除丢失。需求:数据持久化
容器之间有一个数据共享技术(卷技术):
1、docker容器中产生的数据,同步到本地(目录的挂载,将容器内的目录挂载到Linux本地目录上)。
2、容器的持久化和同步操作,容器间也是可以实现数据共享。
二、使用数据卷
2.1直接使用命令来挂载
语法:
docker run -it -v 主机目录:docker容器内目录
测试
[root@zhoujunru ~]# docker run -it -v /home/ceshi:/home centos /bin/bash
启动起来时,通过docker inspect 容器ID命令查看容器详细信息想看卷是否挂载成功。
双向绑定:
在容器/home目录下touch新建文件,卷会把数据同步到容器外面宿主机上。
在宿主机上修改文件,容器内数据也会发生同步。
三、实战测试
获取镜像
[root@zhoujunru /]# docker pull mysql:5.7
运行容器,同时做数据卷挂载
[root@zhoujunru /]# docker run -d -p 3316:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/date:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=666666 --name mysql01 mysql:5.7
f49f802bc6ce6202381e923884f9d7e5f9d9078e6174169ea6d8797b4a00eb96
启动成功后,在本地使用SQLyog来测试。SQLyog连接到linux服务器的3316端口,3316端口和mysql容器的3306端口映射,这个时候我们就可以连接上mysql数据库。
在本地测试创建一个数据库,查看一下映射的路径是否OK。
将容器mysql01删除,,发现挂载到本地的数据依旧没有丢失,这就是容器的数据持久化功能。
四、具名挂载和匿名挂载
-v 容器内路径 #匿名挂载
-v卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载
4.1匿名挂载举例:
4.2具名挂载举例:
所有docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_date
五、数据卷容器
结论:容器之间配置信息传递,数据卷容器的生命周期一直会持续到灭有容器使用为止。但是一旦持久化到本地,这个时候,本地的数据是不会因为容器删除而删除的。