什么是容器数据卷
- 将应用和环境打包成一个镜像!
- 数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化
-
MySQL
,容器删除了,删库跑路!需求:MySQL
数据可以存储在本地! - 容器之间可以有一个数据共享的技术!
Docker
容器中产生的数据,同步到本地! - 通过目录的挂载,将我们容器内的目录,挂载到
Linux
上面!
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷
- 方式一 :直接使用命令挂载
-v
docker run -it -v 主机目录:容器内目录 -p 主机端口:容器内端口
-v, // volume list Bind mount a volume
# /home/ceshi:主机home目录下的ceshi文件夹 映射:centos容器中的/home
[root@VM-0-6-centos ~]# docker run -it -v /home/ceshi:/home --name centos02 centos /bin/bash
#这时候主机的/home/ceshi文件夹就和容器的/home文件夹关联了,二者可以实现文件或数据同步了
[root@675da0dfb544 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@675da0dfb544 /]# cd home
[root@675da0dfb544 home]# touch aa.txt // 在home下建aa.txt文件
[root@675da0dfb544 home]# ls
aa.txt
[root@675da0dfb544 home]# exit // 退出容器
exit
[root@VM-0-6-centos ~]# cd /home //进入主机目录,查看文件
[root@VM-0-6-centos home]# ls
ceshi www
[root@VM-0-6-centos home]# cd ceshi
[root@VM-0-6-centos ceshi]# ls
aa.txt // 文件同步显示
- 通过
docker inspect 容器id
查看容器信息
[root@VM-0-6-centos ceshi]# docker inspect 675da0dfb544
……
"Mounts": [
{
"Type": "bind",
"Source": "/home/ceshi", // Linux 目录
"Destination": "/home", // 容器目录
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
测试文件的同步
再来测试!
- 停止容器
- 宿主机修改文件
- 启动容器
- 容器内的数据依旧是同步的
好处:我们以后修改只需要在本地修改即可,容器内会自动同步!