apk-无缓存图像层更改

时间:2019-04-29 13:17:07

标签: apk artifactory alpine

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

我向Artifactory推送了3张不同的图像,当检查时我注意到有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应该具有该图像的一个副本以及指向该图像的2个其他引用

1 个答案:

答案 0 :(得分:0)

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

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