我已经在本地创建了一个图像,它包含两层
$ docker images inspect existingimagename
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:e21695bdc8e8432b1a119d610d5f8497e2509a7d040ad778b684bbccd067099f",
"sha256:3ff73e68714cf1e9ba79b30389f4085b6e31b7a497f986c7d758be51595364de"
]
},
现在我正在构建另一个图像并希望节省空间。上一个镜像的第一层是主文件系统。所以我决定使用它
FROM sha256:e21695bdc8e8432b1a119d610d5f8497e2509a7d040ad778b684bbccd067099f
ENV LANG=en_US.UTF-8
CMD ["/usr/bin/bash"]
然后我尝试构建新图像
$ docker build -t newimage -f Dockerfile .
Sending build context to Docker daemon 443.5MB
Step 1/3 : FROM sha256:e21695bdc8e8432b1a119d610d5f8497e2509a7d040ad778b684bbccd067099f
pull access denied for sha256, repository does not exist or may require 'docker login'
它给出了错误。
那么如何处理这种情况。
从图像层缓存中获利的一种简单方法是创建一个仅包含第一层的基础图像。
然后FROM <base image>
在您的其他 Dockerfile 中使用。
这样,磁盘空间将被节省,因为多个图像将共享同一层,并且构建速度也会更快。
Dockerfile 基础:
FROM scratch
ADD ./system.tar.gz /
docker build -f Dockerfile-base -t base .
Dockerfile-1:
FROM base
COPY ./somefiles /
docker build -f Dockerfile-1 -t image1 .
Dockerfile-2:
FROM base
COPY ./otherfiles /
docker build -f Dockerfile-2 -t image2 .
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句