Docker容器的数据卷
数据卷概念
思考1: docker删除后,容器中产生的数据还在吗?
思考2: docker容器和外部机器能够直接交换文件吗?
思考3: 容器之间如何进行数据交换?
答案:
1 不在了
2 不能
3 数据卷!
数据卷:是一个宿主机中的目录或者文件。使用挂载将宿主机目录挂到容器中。
使用数据卷,可以解决上面的3个问题。

特性:
-
容器目录和数据卷绑定后,对方的修改会立即同步
-
一个数据卷可以被多个容器同时挂载
-
一个容器也可以被挂载多个数据卷
作用:
- 容器数据持久化
- 外部机器和容器的通信
- 容器之间的数据交换
数据卷命令
-
配置数据卷
创建容器时,通过使用-v参数设置数据卷
1目录必须为绝对路径
2不管是宿主机还是容器,目录不存在都会自动创建
3可以挂载多个数据卷
挂载方式1:
docker run .... -v {宿主机目录or文件}:{容器内目录or文件} -v .... -v ....
挂载方式2:
# 这种方法-v后面代表容器内部的目录,在宿主机中,是在docker内部创建一个临时目录存放
docker run .... -v {目录}

验证:


我们可以让2个容器同时挂载宿主机上的数据卷,达到多个容器共享数据的作用
数据卷容器
多容器进行数据交换:
1 多个容器挂载同一个数据卷
2 docker提供了专门用来做数据卷的容器-数据卷容器
结构

说明:c1容器和c2容器挂载c3容器的目录,而这个目录是由宿主机挂载到c3上面的
配置数据卷容器
1 创建 数据卷容器
docker run -idt --name volume_container -v /home/zhaozijian/docker_share:/datas nginx /bin/bash
此时我们可以使用docker inspect命令,查看binds属性,可以看到它的挂载磁盘。
source代表宿主机目录,Destination代表容器内部的目标目录

2 创建c1 c2容器
docker run -idt --name c1 --volumes-from volume_container nginx /bin/bash
docker run -idt --name c2 --volumes-from volume_container nginx /bin/bash
我们再次使用docker inspect查看c1或者c2,发现他和volume_container的挂载是相同的,我们可以通过管理volume_container来实现多个容器的同时管理
docker inspect c1

浙公网安备 33010602011771号