对Docker镜像layer的理解

9 篇文章 0 订阅

对Docker镜像layer的理解

转自:https://blog.csdn.net/u011069294/article/details/105583522

FROM python:3.6.1-alpine
RUN pip install flask
CMD [“python”,“app.py”]
COPY app.py /app.py

上面是一个Dockerfile的例子,每一行都会生成一个新的layer。 每一个层是上一层的增量或者是一些改变。

除了最上面的layer,镜像的每一层都是只读的。最上面的layer是为container创建的,是可读可写的,用来实现“copy-on-write",意思就是仅当对一些位于只读层的文件需要被编辑时,存储在较低layer层中的文件就会被拉到读/写容器层(最上面的一层),然后将那些更改存储在容器层中。

在这里插入图片描述

可以使用 docker diff [container id] 查看哪些文件被拉到了容器层。参考文档:https://docs.docker.com/engine/reference/commandline/diff/

由于有些layer层是只读的,因此这些只读的layer可以被image和运行容器共享。 例如,使用自己的Dockerfile创建具有相似基础层的新Python应用程序,将共享与第一个Python应用程序相同的所有层。

在这里插入图片描述

从同一 image 启动多个容器时,也可以看到layer层共享。 因为容器使用相同的只读层,所以可以想象启动容器非常快,并且在主机上的占用空间非常小。

对于Dockerfile中重复的部分的利用

可以将两个Dockerfile的公共代码放到一个基本Dockerfile中,然后在子Dockerfile使用FROM命令来使用公共的父Dockerfile。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值