使用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个其他引用
答案 0 :(得分:0)
apk --no-cache
安装相同的软件包可能会得到不同的sha256,这取决于是否有任何本地缓存。更改映像的原因是因为文件元数据(例如mtime或atime)已更改。
您应该构建一个基础层,该基础层安装了所有依赖项,然后从基础层构建。