Docker容器的数据卷
一、数据卷概念
概念:数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以挂载多个数据卷
可以解决以下问题
-
可以解决容器数据的持久化,正常来说docker容器删除后容器的数据也随之销毁
-
可以使docker容器和外部机器进行数据交换
-
容器之间也可以进行数据交换
二、数据卷的作用
- 容器数据的持久化
- 外部机器和容器间通信
- 容器之间数据交换
三、配置数据卷
- 创建启动容器,使用 -v 参数 设置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
演示命令:
docker run -it --name=c1 -v ~data:/root/data centos7
注意:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷【实现容器和容器之间的数据同步】
四、数据卷容器
创建一个容器,挂载一个目录,让其他容器继承自该容器(–volume-from)
多容器进行数据交换的方法
- 多容器挂载同一个数据卷
- 数据卷容器
五、配置数据卷容器
- 创建启动 c3 数据卷容器,使用 -v 参数 设置数据卷【在/volume前面没有 : 会自动在宿主机中分配数据卷的路径】
docker run -it --name=c3 -v /volume centos:7 /bin/bash
- 创建启动 c1、c2 容器,使用 --volumes-from 参数 设置数据卷
docker run -it --name=c1 --volumes-from centos:7 /bin/bash
docker run -it --name=c2 --volumes-from centos:7 /bin/bash
注意:
即便数据卷容器挂了,容器1和容器2仍然绑定宿主机的数据卷,他们之间还可以进行数据同步。
原因:
数据卷容器挂载数据卷后,数据卷容器中分配了挂载路径。容器1和容器2挂载数据卷容器后,是把整个路径直接复制到自己容器的配置中,挂载数据卷的配置路径仍然是数据卷的路径。