gpt4 book ai didi

docker - Docker EXPOSE 会创建一个新层吗?

转载 作者:IT老高 更新时间:2023-10-28 21:25:00 24 4
gpt4 key购买 nike

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

documentation 中没有特别说明。 .

我理解 RUNCOPYADD 创建层是因为它们会更改文件系统,但暴露只是将元数据添加到容器中,确实如此它的变化生成了一个层?

最佳答案

是的,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 语句的顺序并再次构建,您将看到层缓存被忽略。

关于docker - Docker EXPOSE 会创建一个新层吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41637560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com