问题标签 [docker-layer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
94 浏览

docker - 为什么 CMD 命令会生成一个新层?

全部。

我有一个关于 Docker 层图像的问题。

我认为 RUN、ADD、COPY、CMD 命令会生成一个新层。但是,我想知道为什么 CMD 命令会生成一个新图层。

例如,我理解“ADD hoge.txt /var/tmp”需要一个层,因为该命令会生成一个新文件“hoge.txt”。但是,“/bin/bash”命令不会生成任何内容。

你能告诉我原因吗?

另外,centos7 官方镜像中的命令“CMD [”/bin/bash“]”似乎生成了一个包含一些文件的层,如下所述。

0 投票
1 回答
95 浏览

docker - 为什么子容器的层中没有列出父容器映像 SHA?

考虑一个容器镜像,我们称之为BaseContainerImage. 我基于 docker hub 上的容器映像(如果重要,则为 .Net Core 3.1 运行时)构建此容器映像。“基于”是指FROMdocker hub 镜像的引用。

当我构建它时,它的 SHA 为:sha256:9ec7b7481feee3eb141f7321be1df353b1ab8b6bdf0d871717b6f7e90e6ed0f6。(通过检查config.digest容器图像的清单找到。)

然后我去制作一个新的容器镜像,我们调用它ApplicationContainerImage。它基于BaseContainerImage, 使用引用上述 SHA 的标记。构建后,我查看容器映像的清单。

我希望该layers部分包含“父”容器图像的 SHA。 但事实并非如此。

当我比较两者的层时,所有层BaseContainerImage都在ApplicationContainerImage. 所以我知道FROM工作。但我只是不明白为什么 . 的 SHABaseContainerImage被排除在ApplicationContainerImage.

为什么 SHA 的BaseContainerImage层没有列出ApplicationContainerImage

后来的注释:
当我去BaseContainerImage从远程存储库下载时,它告诉我(作为PULL命令输出的一部分,摘要Digest: sha256:a1dd2dfdfc51e7abba1d2db319ba457e7b72f7258f5cefca0ee6ec6845f564b6 显然与上述摘要不匹配。但是当我运行docker manifest inspect完全相同的图像时,config.digestsha256:9ec7b7481feee3eb141f7321be1df353b1ab8b6bdf0d871717b6f7e90e6ed0f6,与我之前得到的相符。

为什么有两个不同的 SHA 值?一个只是为了拉动作吗?

0 投票
0 回答
93 浏览

docker - 如何在不使用缓存层但使用前一阶段的缓存的情况下构建多阶段 Docker 构建的每个部分

我有一个 4 阶段的 Dockerfile,如下所示,但是当我不想使用缓存时,我无法找到优化构建的最佳方法(以确保使用最新的图像和包) …</p>

目前我使用以下命令单独 构建每个php, nginx&容器......</p>ssh

这样做的问题是,因为我正在使用--no-cache标志,所以每个后续阶段都会重新构建它们所依赖的早期阶段。

有时我可能只想构建容器镜像的一个子集。

我有哪些优化选项?我可以想到以下……</p>

  1. 根据 Dockerfile 中的顺序,找出我们想要构建的最后一个镜像,并首先使用--no-cache标志构建最后一个镜像,然后在没有标志的情况下构建所有其余镜像--no-cache

  2. 在我需要确保不使用缓存的每个步骤中使用随机值构建 arg,就像这样......</p>

    …然后为每个构建命令传递相同的时间戳。

我在其中一个方面走在正确的轨道上,还是有其他更好的选择?

0 投票
0 回答
40 浏览

docker - 删除/减小用于安装软件的 docker 层的大小

有人可以帮助我吗?
很抱歉这个问题很长,但我试图尽可能详细地描述我的问题。
我正在尝试在我的 docker 映像中安装一个软件。

  • 在下图中的数字 2 中,您可以看到 I COPY ace/ /tmp/- ace/是一个包含我的软件安装程序的目录。在 dockerfile 中,我已经在安装完成后删除了 /tmp/ 文件夹。
    问题是如何将用于COPY安装程序的层的大小从 docker 上下文减小到/tmp/.
  • 同时,您可以看到,在数字 1 处,与数字 2 类似,但它的大小已减小,实际大小repo/为 1 Gb。我不知道这里有什么区别

关于图层的信息

我的码头文件:

0 投票
0 回答
374 浏览

docker - Docker撰写返回消息错误:注册层失败:ApplyLayer退出状态1标准输出:标准错误:重新安装/,标志:0x84000:权限被拒绝

在运行命令后,我使用 docker-compose 拉取 docker 映像并创建容器,docker-compose up我收到了消息ERROR: failed to register layer: ApplyLayer exit status 1 stdout: stderr: remount /, flags: 0x84000: permission denied。为什么 docker-compose 返回此消息?请任何人都可以帮助我,谢谢。

在此处输入图像描述

0 投票
1 回答
31 浏览

image - 如何检查 Docker 映像中的单个层?

我需要获取有关单个图层的更多信息——可能通过图层 ID——例如创建和上次修改日期。

docker image inspectDocker 映像中的单层是否有类似的东西?

0 投票
1 回答
119 浏览

docker - Docker 无法拉取镜像没有这样的文件或目录

我正在使用最简单的 docker 文件从另一个图像创建一个 docker 图像:

图像构建和标记成功。但是,当我将其推送到 Azure 容器注册表并拉取映像时,我收到以下错误:

来自同一注册表的原始图像提取并成功运行。

知道我做错了什么吗?

0 投票
0 回答
44 浏览

linux - Docker:“符号链接的级别太多”

我一直在尝试通过我的 umbrel 节点安装 btcpay-server。我 ssh-ed 进入服务器并为 btcpay-server 拉取 docker 映像。

这样做时,docker 无法安装 postgres 层并给了我这个错误:

完整日志:

我在运行在树莓派 4 上的 debian 上运行所有这些。

docker版本:Docker 版本 20.10.12,构建 e91ed57

码头工人撰写文件: