1

使用 Dockerfile 构建一个 docker 镜像,将相同的镜像推送到 Artifactory。我注意到,当使用 apk --no-cache 时,sha256 会发生变化,尽管 Dockerfile 没有。

我将 3 个不同的图像推送到 Artifactory,并且在检查时我注意到 3 个不同的层 - 这是否意味着它占用 3 个层而不是参考推送的第一层?

我构建了相同的 Dockerfile 3 次,并将图像推送到 Artifactory。检查图像层我注意到 3 个不同层的图像(不同的 sha256)。

FROM alpine:3.9

ADD resources/repositories /etc/apk/repositories
RUN apk --no-cache add curl && apk --no-cache add --repository  http://myartifactory.com:8081/artifactory/alpine-nl-remote/alpine/edge/testing gosu

运行(其中构建 1 更改为 2 和 3)

docker build -t myartifactory.com/apline:3.9-1
docker push

检查 Artifactory 我现在每个图像都有 3 层。一旦层不同,并且所有 3 幅图像中的两层相同

应该使用相同的 sha256 构建相同的图像,并且 Artifactory 应该有一个图像副本和两个指向该图像的引用

4

1 回答 1

0

apk --no-cache安装相同的包可能会得到不同的 sha256,取决于是否有任何本地缓存。图像更改的原因是因为文件元数据(如 mtime 或 atime)已更改。

您应该构建一个安装所有依赖项的基础层,然后从基础构建。

于 2020-02-08T03:57:44.003 回答