Docker 之五 Docker 数据卷与数据卷容器
前言
容器在运行期间产生的数据不会写在镜像里面,重新用此镜像创建并启动新的容器就会初始化镜像,加一个全新的容器可写层来保存数据。生产环境中使用 Docker 的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,Docker 提供数据卷和数据卷容器来解决;另外还可以通过 commit 提交一个新的镜像来保存产生的数据,也可以通过 “docker cp” 命令在宿主机与容器之间互相拷贝数据文件。
容器中管理数据主要的两种方式
数据卷(Data Volumes):容器内数据直接映射到本地主机环境。
数据卷容器(Data Volume Containers):使用特定容器维护数据卷。
数据卷的功能介绍
- 绕过 “写时复制” 系统,以达到本地磁盘 IO 的性能。
- 绕过 “写时复制” 系统,有些文件不需要在 docker commit 打包进镜像文件。
- 实现容器内部数据的持久化。
- 数据卷可以在容器间共享和重用数据。
- 数据卷可以在宿主机和容器间共享数据。
- 数据卷数据改变是直接修改的。
- 数据卷是持续性的,直到没有容器使用它们;即便是初始的数据卷容器或中间层的数据卷容器删除了,只要还有其他的容器使用数据卷,那么里面的数据都不会丢失。
Docker 通过命令的方式添加数据卷
1 | # 创建宿主机的文件共享目录,即使不手动在宿主机上创建数据卷目录,Docker也会自动创建 |
Docker 通过编写 Dockerfile 的方式添加数据卷
1 | # 创建Dockerfile文件,并添加以下文件内容 |
Docker 数据卷容器的使用
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止;即便是初始的数据卷容器或中间层的数据卷容器删除了,只要还有其他的容器使用数据卷,那么里面的数据都不会丢失。
1 | # 首先创建Dockerfile文件 |