Tag: 图层

可以是一个docker层“绕过”构build?

让我们来看看我有一个像这样的Dockerfile: FROM debian:stretch RUN apt update RUN apt install -y wget RUN wget https://stackoverflow.com/ # I know the wget is useless. Is just an example 🙂 CMD ["echo", "hello-world"] 我想把这个新的RUN语句放在wget语句上。 在这个改变之后,当我重build的时候,它会把我修改的所有命令重新运行到down,所以wget会再次执行。 问题是wget命令花了很多时间来完成,因为在我的真实文件中,文件是一个非常大的文件。 问题是,可以将docker“调整”到某处以避免再次构buildwget层的执行? 如果我已经build立了它,那么即使改变它的声明,该层可以再次使用吗? 谢谢。

我应该尽量减lessdocker层的数量?

文档没有详细阐述这个话题。 它说: 最小化层数 在Docker 17.05之前,甚至在Docker 1.10之前,重要的是尽量减less图像中的图层数量。 以下改进缓解了这种需求: 在Docker 1.10及更高版本中,只有RUN,COPY和ADD指令创build图层。 其他说明会创build临时中间图像,不再直接增加构build的大小。 Docker 17.05及更高版本增加了对多阶段构build的支持,允许您只将需要的构件复制到最终的图像中。 这允许您在中间构build阶段包含工具和debugging信息,而不增加最终图像的大小。 它看起来像最新的Docker版本不能解决处理许多层的问题。 他们宁愿努力减less最终形象的数量。 最重要的是,文档没有说明为什么很多层是坏的。 我知道42层的AUFS限制 。 保留广泛使用的图像的层数是有意义的,因为这有助于在其上构build其他图像以适应限制。 但是,还有其他的存储驱动程序和图像用于其他目的。 保留图像很小是很好的一个显而易见的原因 – 占用磁盘空间和networking带宽。 但是,我不认为链接RUN语句 ,从而将许多层压缩成一个整体。 如果不同的RUN更新文件系统的不同部分,则一个层和多个层的大小应该大致相同。 另一方面,许多层允许使用caching并更快地重build图像。 他们也被平行拉。 我在一个拥有私人Dockerregistry的小团队中工作。 我们永远不会遇到42层限制,关心性能和开发速度。 如果是这样,我应该尽量减lessdocker层的数量?