#数据卷:
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂在
- 一个容器也可以被挂在多个数据卷
#数据卷的作用:
- 容器数据持久化,
- 外部机器和容器间接通信,
- 容器之间数据交换.
#容器数据卷的挂载
#通过-v 命令
#docker run -it -v 本机目录:容器目录 容器 command
[root@localhost home]# docker run -it -v /home/test:/home centos /bin/bash
[root@ed5829f48f5e /]#
#在容器内部的home目录下新建一个test01.txt文件
[root@ed5829f48f5e /]# cd home
[root@ed5829f48f5e home]# ls
[root@ed5829f48f5e home]# touch test01.txt
[root@ed5829f48f5e home]# ls
test01.txt
#由于容器已和本机挂载,此时查看本机/home/test的目录下发现有在容器中创建的test01.txt文件
[xiezuotao@localhost home]$ cd test
[xiezuotao@localhost test]$ ls
test01.txt
#此时关闭容器,在本机中修改test01.txt文件中的信息,
本机中修改文件中的信息
[root@localhost test]# vim test01.txt
[root@localhost test]# cat test01.txt
abcd
efgh
ijkl
mnop
#打开容器,查看容器中test01.txt文件是否发生改变
#打开容器
[root@localhost home]# docker start ed5829f48f5e
ed5829f48f5e
[root@localhost home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ed5829f48f5e centos "/bin/bash" 13 minutes ago Up 7 seconds jolly_shaw
b07c48fa6439 portainer/portainer "/portainer" 3 hours ago Up 11 seconds 0.0.0.0:8088->9000/tcp, :::8088->9000/tcp fervent_rosalind
96ad5a5352ad nginx "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01
#进入容器并查看容器中的test01.txt文件
#发现容器内的数据依旧是同步的
[root@localhost home]# docker exec -it ed5829f48f5e /bin/bash
[root@ed5829f48f5e /]# cd /home
[root@ed5829f48f5e home]# ls
test01.txt
[root@ed5829f48f5e home]# cat test01.txt
abcd
efgh
ijkl
mnop
#只要通过 --volumes-from 可以实现数据共享 共享卷 (拷贝)
#先启动一个容器docker01
[root@localhost xiezuotao]# docker run -it --name docker01 Xiezuotao/centos
#通过 --volumes-from 将docker02和docker01共享
[root@localhost xiezuotao]# docker run -it --name docker02 --volumes-from docker01 Xiezuotao/centos
#删除docker01,docker02依旧还可以访问这个文件
#好比是备份
#多个mysql实现数据共享
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql:5.7
#可以实现两个容器数据同步
#容器间配置信息的传递,数据卷容器的生命周期一直持续到没有容器为止.
#一旦持久化到本地,这个时候本地的数据不会删除.