在Docker的使用过程中往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,所以这就涉及到Docker容器的数据操作。
容器中数据管理主要有两种方式:数据卷和数据卷容器。
- 数据卷(Data Volumes) 容器内数据直接映射到本地宿主机。
- 数据卷容器(Data Volume Containers) 使用特定容器维护数据卷。
数据卷
数据卷是一个特殊的目录,它将主机目录直接映射进容器。可供一个或多个容器使用。
数据卷设计的目的就是为了 数据的持久化,它完全独立与容器的生命周期。因此,容器删除时,不会删除其挂载的数据卷,也不会存在类似的垃圾机制对容器存在的数据卷进行处理。
数据卷的特性
- 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中
- 数据卷可以在容器之间共享和重用
- 可以对数据卷里的内容直接修改,修改回马上生效,无论是容器内操作还是本地操作
- 对数据卷的更新不会影响镜像的更新
- 数据卷会一直存在,即使挂载数据卷的容器已经被删除
命令创建数据卷
docker run -it -v hostDirectory:containerDirectory imageName /bin/bash
加权限,容器内只读
docker run -it -v hostDirectory:containerDirectory:ro imageName /bin/bash
DockerFile创建数据卷(centos为例)
- 在指定文件夹下创建Dockerfile文件:vim Dockerfile
- 编辑Dockerfile
# volume test
FROM centos
VOLUME ["/container/dataVolume1","/container/dataVolume2"]
CMD echo "finished,-------------successful"
CMD /bin/bash - 将Dockerfile构建为docker镜像:docker -f build Dockerfile -t imageName . (说明:. 用于路径参数传递,标识当前路径)
数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个父容器实现数据共享,挂载数据卷的容器称为数据卷荣容器。
创建数据卷容器
- 启动dc01容器:docker run -it --name dc01 imageName
- dc02继承自dc01:docker run -it --name dc02 --volumes-from dc01 imageName
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止!!!