场景
- Docker容器删除后,在容器中的数据也会消失。
- Docker容器和外部机器不可以直接交换文件,网络不互通(可以通过数据卷)
- 容器之间数据交换
数据卷的作用
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以挂在多个数据卷
配置数据卷
- 创建启动容器时,使用 -v 参数设置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件)
目录必须是绝对路径,如果目录不存在,会自动创建。可以挂载多个数据卷。
例(一个容器挂载一个目录):
bash
复制代码
docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash # -v 后面的就是 宿主机目录(文件):容器内目录(文件) docker run -it --name=c1 -v ~/data:/root/data_container centos:7 # 宿主机里面可以用~写,但是容器里面不可以
例(一个容器挂载多个目录):
ruby
复制代码
docker run -it --name=c2 \ -v ~/data2:/root/data2 \ -v ~/data3:/root/data3 \ centos:7 # \ 表示换行,和原先的连在一起
例(多个容器挂载一个目录):
ruby
复制代码
# 有 c3 和 c4 两个容器 docker run -it --name=c3 -v ~/data:/root/data centos:7 docker run -it --name=c4 -v ~/data:/root/data centos:7
数据卷容器
多容器进行数据交换
- 多个容器挂载同一个数据卷
- 数据卷容器
配置数据卷容器
1.创建启动c3数据卷容器,使用-v参数设置数据卷
bash
复制代码
docker run -it --name=c3 -v /volume centos:7 /bin/bash
2.创建启动c1,c2容器,使用 --volumes-from 参数设置数据卷
ini
复制代码
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash