dockers-系统学习-容器的数据卷
一、数据卷概念
-
宿主机上的一个正常目录或文件
-
通过数据卷可以在容器之间实现共享和重用
-
当容器目录和数据卷目录绑定后,对方的修改会立即同步
-
一个容器也可以被挂载多个数据卷
-
一个数据卷可以被多个容器同时挂载
二、数据卷作用
-
通过数据卷可以在容器之间实现共享和重用
-
外部机器和容器间接通信(数据交互)
-
对数据卷的修改会立马生效(非常适合作为开发环境)
-
容器数据持久化
三、 配置数据卷
- 创建启动容器时,使用 –v 参数 设置数据卷
docker run … –v 宿主机目录(文件):容器内目录(文件) …
例如:
docker run -it --name sjj -v /root/data:/root/data-container redis:latest
命令解释:创建了一个名称为sjj的容器,创建一个数据卷/root/data,并挂载到容器的/root/data-container目录下。
2.注意:
1. 目录必须是绝对路径
2. 如果目录不存在,会自动创建
3. 可以挂载多个数据卷
3.1、验证–当容器目录和数据卷目录绑定后,对方的修改会立即同步
docker run -it --name sjj -v /root/data1:/root/data-container redis:latest
宿主机/root/data1 目录创建成功
容器的/root/data-container 目录创建成功
在宿主机/root/data1目录,添加内容a.txt
查看容器内部,看到也存在相同的内容
3.2、验证–容器数据持久化
删除sjj容器,宿主机/root/data1目录没有被删除
再创建sjj1容器,容器的目录挂载到原先的数据卷中,可以看到原先的数据还在
3.3、验证–一个容器也可以被挂载多个数据卷
docker run -it --name sjj2 -v /root/data3:/root/data-container1 -v /root/data4:/root/data-container2 redis:latest
3.4、验证–一个数据卷可以被多个容器同时挂载
docker run -it --name sjj3 -v /root/data1:/root/data-container redis:latest
docker run -it --name sjj4 -v /root/data1:/root/data-container2 redis:latest
在sjj3容器中,添加数据到c.txt,c.txt会同步到数据卷,数据卷又将数据同步到sjj4容器,最终sjj3和sjj4的数据是一致的。
四、 配置数据卷容器
4.1、目的
- 将多容器的数据交换进行简化
4.2、配置数据卷容器
-
创建启动d3数据卷容器,使用 –v 参数 设置数据卷
docker run -it --name=d3 -v /d3-redis redis:latest
-
创建启动 d1 d2 容器,使用 –-volumes-from 参数 设置数据卷
docker run -it --name=d1 --volumes-from d3 redis:latest
docker run -it --name=d2 --volumes-from d3 redis:latest
-
验证数据是同步的
- d1容器添加数据
- d2容器查看数据
3. 查看d1数据卷目录Source和容器目录Destination:docker inspect d1
4. 查看d2数据卷目录Source和容器目录Destination:docker inspect d2