当前位置:  开发笔记 > 编程语言 > 正文

Docker EXPOSE会创建一个新图层吗?

如何解决《DockerEXPOSE会创建一个新图层吗?》经验,为你挑选了1个好方法。

我一直在玩创建docker文件和阅读文档,我想知道这个问题:在我的docker文件中添加EXPOSE命令是否添加了一个层?(如果它确实为什么我会关心/它在文件中的位置是否重要?)

文档中没有特别说明.

我理解RUN,COPY和ADD创建图层,因为它们会更改文件系统.但是暴露只是将元数据添加到容器中,它是否会更改生成一个图层?



1> gvilarino..:

是的,Dockerfile中的每条指令都会为生成的图像生成一个新图层.

但是,通过创建的图层EXPOSE图层.也就是说,它们的大小是0字节.

虽然它们不会影响您的存储,但它们确实可以在构建或从注册表中提取/推送图像时利用层缓存.

理解图像层的好方法是使用该docker history命令.例如,给定以下Dockerfile:

FROM scratch

EXPOSE 4000
EXPOSE 3000

docker build -t test/image .

如果你那么docker history test/image你会看到:

IMAGE               CREATED             CREATED BY                           SIZE                COMMENT
ab9f435de7bc        4 seconds ago       /bin/sh -c #(nop)  EXPOSE 4000/tcp   0 B                 
15e09691c313        5 seconds ago       /bin/sh -c #(nop)  EXPOSE 3000/tcp   0 B     

如果切换EXPOSE语句的顺序并再次构建,则会看到图层缓存被忽略.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有