Py学习  »  docker

Docker:我们可以重用一个图像层来构建另一个图像吗

Santhosh Yedidi • 4 年前 • 758 次点击  

我已经在本地创建了一个图像,它包含两层

$ 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'

它会出错。

所以如何处理这个问题。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53311
 
758 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Thomasleveil
Reply   •   1 楼
Thomasleveil    5 年前

从图像层缓存中获益的一个简单方法是只创建第一层的基础图像。

然后使用 FROM <base image> 在你的其他档案里。

Dockerfile基:

FROM scratch
ADD ./system.tar.gz /
docker build -f Dockerfile-base -t base .

文件1:

FROM base
COPY ./somefiles /
docker build -f Dockerfile-1 -t image1 .

FROM base
COPY ./otherfiles /
docker build -f Dockerfile-2 -t image2 .

建议读取

Best practices for writing Dockerfiles § Leverage build cache