目录
1.数据卷
Docker 容器删除后,在容器中产生的数据还在吗?
Docker 容器删除后,在容器中产生的数据也会随之销毁 Docker
容器和外部机器可以直接交换文件吗?
容器之间想要进行数据交互?
1.数据卷是宿主机中的一个目录或文件 2.当容器目录和数据卷目录绑定后,对方的修改会立即同步 3.一个数据卷可以被多个容器同时挂载 4.一个容器也可以被挂载多个数据卷
2.数据卷的作用
容器数据持久化 外部机器和容器间接通信 容器之间数据交换
3.2配置数据卷
1.设置数据卷
# 创建启动容器时,使用 –v 参数 设置数据卷 docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
docker run -i -t --name c1 -v /root/data:/root/data_container docker.io/centos:7 /bin/bash
2.注意事项
1. 目录必须是绝对路径 2. 如果目录不存在,会自动创建 3. 可以挂载多个数据卷 # 挂载多个目录卷
docker run -i -t --name c1 -v /root/data:/root/data_container \
-v /root/data2:/root/data_container2 \
docker.io/centos:7 /bin/bash
3.3配置数据卷容器
1.多容器进行数据交换
1. 多个容器挂载同一个数据卷
docker run -it --name=c3 -v /root/data:/root/data docker.io/centos:7
docker run -it --name=c4 -v /root/data:/root/data docker.io/centos:7
2. 数据卷容器
2.配置数据卷容器
# 删除容器,没停的容器需要先用 docker stop 命令停止后再进行删除
docker rm c1 c2 c3 c4
# 创建启动c3数据卷容器,使用 –v 参数 设置数据卷,volume 宿主机会自动分配一个目录,然后容器内根目录会有volume目录
docker run -it --name=c3 -v /volume docker.io/centos:7 /bin/bash
# 查看自动分配的命令,查看 json中的属性 Mounts[0].Source
docker inspect c3
"Mounts": [
{
"Type": "volume",
"Name": "43383c7e6cb8d2161a2cd11024128a52816d49c7627d834291f8acd81f27c14d",
"Source": "/var/lib/docker/volumes/43383c7e6cb8d2161a2cd11024128a52816d49c7627d834291f8acd81f27c14d/_data",
"Destination": "/volume",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
# 创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷
docker run -it --name=c1 --volumes-from c3 docker.io/centos:7
docker run -it --name=c2 --volumes-from c3 docker.io/centos:7
# 三个容器数据卷都是挂载到宿主机的Mounts[0].Source目录下,删除c3容器也不会应影响到c1和c2
3.4数据卷小结
1.数据卷概念
宿主机的一个目录或文件
2.数据卷作用
1.容器数据持久化 2.客户端和容器数据交换 3.容器间数据交换
3.数据卷容器
1.创建一个容器,挂载一个目录,让其他容器继承自该容器( --volume-from ) 2.通过简单方式实现数据卷配置