背景
docker理念:
- 将应用与运行的环境打包形成容器,运行可以伴随容器,但是我们对数据的要求希望是持久化的
- 容器之间希望可以有共享数据
Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除以后,数据自然就没有了。
为了能保存数据,在docker中我们使用容器数据卷。
特点: - 数据卷可以在容器之间共享或重用数据
- 卷中的更改直接生效
- 数据卷中的更改不会包含在镜像的更新中。
- 数据卷的生命周期一直持续到没有容器使用它为止。
数据卷添加
管理volume
docker volume create tomcat-vol // 自定义数据卷
docker volume ls // 查看所有数据卷
docker volume inspect tomcat-vol // 查看指定数据卷详情信息
自定义数据卷后,我们可以使用该数据卷:
docker run -p 8080:8080 -d --name mytomcat -v tomcat-vol:/usr/local/tomcat f796d3d2c195
再观察该目录:
ls -al /var/lib/docker/volumes/tomcat-vol/_data
说明数据卷挂载成功。
run
命令:
docker run -it -v /宿主机绝对路径目录:/容器目录 镜像名
容器内目录不能修改文件,只能查看,宿主机可以修改文件(ro:read only)
docker run -it -v /宿主机绝对路径目录:/容器目录:ro 镜像名
DockerFile添加
vi Dockerfile
docker build -f /mydocker/Dockerfile -t wj/centos .
Dockerfile文件内容:
FROM centos
VOLUME ["/dataContainer","/dataContainer2"]
CMD echo "success"
CMD /bin/bash
执行结果:
数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,成为数据卷容器。
命令:--volumes-from
docker run -it --volumes-from 父容器名 镜像名
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。