前言
本文是 Docker 容器的数据卷使用的简单教程,介绍了什么是数据卷、数据卷概念、以及如何使用数据卷等。
部分水印照片是我自己博客的水印。
1、数据卷概念
数据卷简单来讲就是一个目录,它是由Docker daemon 挂载到容器中的,因此数据卷并不属于联合文件系统,也就是说数据卷里面的内容不会因为容器的删除而丢失。Docker启动后,容器内的文件和宿主机是隔离的,如果不使用docker commit 操作提交容器为镜像把数据保存下来,数据就会因为容器的删除而丢失。
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
2、数据卷作用
docker默认容器关闭后数据就没了,如果不通过docker commit生成新的进行数据就会丢失。数据卷的作用就是将docker容器运行产生的数据持久化。
- 容器数据持久化
- 外部机器和容器间接通信
- 容器之间数据交换
3、配置数据卷
创建启动容器时,使用 –v 参数 设置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
#docker run -it --name=c1 -v /root/data:/root/data_container couchbase/centos7-systemd /bin/bash
容器的目录data_container
本机的目录data
1)此时在宿主机(本机)data目录下创建文件
touch test.txt
!](https://img-blog.csdnimg.cn/db5f709d77d249fea191f0bf2f0135ac.png)
2)在容器查看data_container,发现同步过来了。
![]](https://img-blog.csdnimg.cn/0d5b273b960b43a4bb554e0aa16fdc5b.png)
注意事项:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
4、多容器进行数据交换
- 多个容器挂载同一个数据卷
- 数据卷容器
5、数据卷容器
1)创建启动c3数据卷容器,使用 –v 参数 设置数据卷
docker run –it --name=c3 –v /volume centos:7 /bin/bash
2)创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷
docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
6、数据卷小结
1)数据卷概念
- 宿主机的一个目录或文件
2)数据卷作用
- 容器数据持久化
- 客户端和容器数据交换
- 容器间数据交换
3)数据卷容器
- 创建一个容器,挂载一个目录,让其他容器继承自该容器( --volume-from )
- 通过简单方式实现数据卷配置
总结
数据卷可以在容器之间共享和重用;对数据卷的修改会立马生效;对数据卷的更新,不会影响到镜像;数据卷默认会一直存在,即使容器被删除。数据卷简单来讲就是一个目录,它是由Docker daemon 挂载到容器中的,因此数据卷并不属于联合文件系统。最后,送上一句自己喜欢的话:“没有风浪,便没有勇敢的弄潮儿;没有荆棘,也没有不屈的开拓者。”。