镜像分层、容器数据卷理解

镜像理解

    镜像就像光盘,是个一系列文件的集合,包含了程序、配置及运行环境信息,属于联合文件系统。

    镜像分层:centos的镜像只有200M,但是tomcat的镜像却400多M,为什么?是因为镜像是分层结构,就像下图,tomcat的镜像中包含了其依赖的jdk、centos等资源,所以显得比较大。

容器数据卷理解

     docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删除时删除其挂载的数据卷。数据卷就是容器中的数据持久化的一种方式。

     使用命令添加数据卷,需要参数v(volume的缩写),后接宿主机路径和容器路径的映射关系。 

     如果后跟ro,则表示只读。 

docker -it -v /宿主机绝对路径:/容器内路径  镜像名
docker -it -v /宿主机绝对路径:/容器内路径:ro  镜像名

     我们也可以使用DockerFile来添加容器卷,DockerFile就是对镜像模板的描述文件,如下描述了使用DockerFile添加容器卷的方法。

mkdir mydocker
cd mydocker
vim DockerFile

#volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished, ------------, success!"
CMD /bin/bash


docker build -f /mydocker/DockerFile -t haylen/centos .
docker run -it haylen/centos

docker inspect 运行的容器id

      数据卷容器就是指挂在数据卷的容器,该容器可以作为父容器,被其他容器挂载,从而实现容器间数据的共享。

docker run -it --name dc01 haylen/centos

docker run -it --name dc02 --volume-from dc01 haylen/centos

docker run -it --name dc03 --volume-from dc01 haylen/centos

      使用这种方式共享后,把dc01删除,其共享数据仍然存在。直至所有的dc都删除,否则容器卷都一直共享存在。

如果您喜欢这篇文章,别忘了点赞和评论哦!

发布了172 篇原创文章 · 获赞 93 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/chenzhanhai/article/details/100182094