一、数据卷概念
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
二、数据卷作用
- 容器数据持久化
- 外部机器和容器间接通信(数据交互)
- 容器之间数据交换
三、配置数据卷
- 创建启动容器时,使用 –v 参数 设置数据卷
# 设置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
# 为容器内目录添加只读权限
# 容器内目录:不能创建文件,为只读权限,但是宿主机目录 下可以创建东西
# 宿主机目录 下可以创建东西
docker run ... –v 宿主机目录(文件):容器内目录(文件):ro ...
- 注意:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
3.1、验证–当容器目录和数据卷目录绑定后,对方的修改会立即同步
启动容器,可以看到容器内部创建一个/root/data-container目录
docker run -it --name c2 -v /root/data:/root/data-container centos:latest
查看宿主机,可以看到宿主机创建了/root/data目录
在宿主机/root/data目录,添加内容
查看容器内部,看到也存在相同的内容
3.2、验证–容器数据持久化
删除刚刚的c2容器
看到数据卷目录没有被删掉
再创建c2容器,容器的目录挂载到原先的数据卷中,可以看到原先的数据还在。
这说明数据卷目录可以作为容器数据的持久化。
3.3、验证–一个容器也可以被挂载多个数据卷
docker run -it --name c3 -v /root/data1:/root/data-container1 -v /root/data2:/root/data-container2 centos:latest
3.4、验证–一个数据卷可以被多个容器同时挂载
实现2个容器挂载同一个数据卷,实现数据同步功能
docker run -it --name c4 -v /root/data-centos:/root/data-data4 centos:latest
docker run -it --name c5 -v /root/data-centos:/root/data-data5 centos:latest
在c4容器中,添加数据到a.txt,a.txt会同步到数据卷,数据卷又将数据同步到c5容器,最终c4和c5的数据是一致的。
四、配置数据卷容器
4.1、目的
- 简化多容器进行数据交换
4.2、配置数据卷容器
创建启动d3数据卷容器,使用 –v 参数 设置数据卷
docker run -it --name=d3 -v /d3-centos centos:latest
创建启动 d1 d2 容器,使用 –-volumes-from 参数 设置数据卷
docker run -it --name=d1 --volumes-from d3 centos:latest
docker run -it --name=d2 --volumes-from d3 centos:latest
查看数据是同步
d3容器添加数据
d2容器查看数据
查看d1数据卷目录和容器目录
docker inspect d1
查看d2数据卷目录和容器目录
docker inspect d2