一、Docker容器数据卷
是什么有什么用
Docker将应用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的以及容器之间希望有可能共享数据。
Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。
简单来说就是可以实现数据的持久化和数据的共享
容器内添加数据卷的方法
1、直接命令添加
docker run -it -v /宿主机绝对路径目录:/容器内目录 image-name/image-id
docker run -it -v /usr/local/mylogs:/usr/local/tomcat/logs -p 1234:8080 d3de50634988
docker run -it -v /usr/local/mylogs:/usr/local/tomcat/logs:ro -p 1234:8080 d3de50634988 容器只读
查看是否挂载成功 docker inspect container-id
在宿主机文件夹下查看是有日志文件,当容器删除了也会存在
2、DockerFile添加
宿主机创建/user/local/DockerFile 并编写DockerFile
FROM centos
VOLUME ["/usr/local/tomcat/logs","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
构建镜像
docker build -f /usr/local/DockerFile -t wangxiaodong/centos .
启动镜像
docker run -it wangxiaodong/centos
查看数据卷挂在情况
docker inspect c2532631a417
二、Docker数据卷容器
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
例:以上面新建的镜像wangxiaodong/centos为模板并运行容器centos01/centos02/centos03,他们都会有配置的数据卷
1、先启动一个父容器centos01
docker run -it centos01 wangxiaodong/centos
2、centos02/centos03继承自centos01
docker run -it --name centos02 --volumes-from centos01 wangxiaodong/centos
docker run -it --name centos03 --volumes-from centos01 wangxiaodong/centos
3、三个容器中对数据卷目录下进行增删改都能达到数据的共享