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

桑托什

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

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

推荐阅读

编写 Dockerfile 的最佳实践 § 利用构建缓存

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Dockerfile:如何从另一个镜像的最后一层创建一个新镜像

来自分类Dev

我们可以根据另一个字段的值来更改一个字段的字体颜色吗?

来自分类Dev

我们可以从另一个函数调用OnCreate()方法吗

来自分类Dev

镜像中的另一个完整备份会干扰镜像吗

来自分类Dev

我们可以将一个.js文件的变量用于另一个.js文件吗?

来自分类Dev

我们可以将一个递归查询的输出用于另一个递归查询吗?

来自分类Dev

我们可以在同一层使用多个损失函数吗?

来自分类Dev

我可以基于同一个镜像同时启动多个 Docker 容器吗?

来自分类Dev

我们将多少 docker 镜像推送到一个私有存储库?

来自分类Dev

我们可以将函子作为参数传递给另一个函子吗?

来自分类Dev

我们可以在另一个类的构造函数的帮助下初始化对象吗?

来自分类Dev

Ionic ion-checkbox我们可以将图标更改为另一个图标吗?

来自分类Dev

AnimationController:我们可以将TickerProvider vsync传递给另一个类吗?

来自分类Dev

我们可以在另一个SP中使用Sql Server Profiler获得存储过程调用吗

来自分类Dev

我们可以在邮件功能中使用post方法重定向到另一个页面吗

来自分类Dev

我们可以在另一个类的构造函数的帮助下初始化对象吗?

来自分类Dev

我们可以将文件孔分配给另一个文件吗?

来自分类Dev

我们可以在Eclipse中从我们的项目中调用另一个项目Java类吗

来自分类Dev

为什么我们需要另一个模式来进行模式缝合?

来自分类Dev

我可以轻松地创建一个主机“镜像”来缓存下载的Debian软件包吗?

来自分类Dev

我们可以从另一个版本进行AWS Lambda版本

来自分类Dev

我们可以将变量从一个C程序传递到另一个C程序吗?

来自分类Dev

我们可以继承另一个类中的一个类中定义的自定义变量吗?

来自分类Dev

我们可以将系列从另一个数据框中追加到一个数据框中的字段吗?

来自分类Dev

我们可以将一个厨师服务器.pem替换为另一个厨师服务器.pem吗?

来自分类Dev

我们可以将变量从一个C程序传递到另一个C程序吗?

来自分类Dev

我们可以将一个动作应用于Spark中的另一个动作吗?

来自分类Dev

我们可以在另一个事件上调用为一个事件编写的JS函数吗?

来自分类Dev

我们可以使用 SharedPreference 将数据从一个 Activity 共享或传输到另一个 Activity 吗?

Related 相关文章

  1. 1

    Dockerfile:如何从另一个镜像的最后一层创建一个新镜像

  2. 2

    我们可以根据另一个字段的值来更改一个字段的字体颜色吗?

  3. 3

    我们可以从另一个函数调用OnCreate()方法吗

  4. 4

    镜像中的另一个完整备份会干扰镜像吗

  5. 5

    我们可以将一个.js文件的变量用于另一个.js文件吗?

  6. 6

    我们可以将一个递归查询的输出用于另一个递归查询吗?

  7. 7

    我们可以在同一层使用多个损失函数吗?

  8. 8

    我可以基于同一个镜像同时启动多个 Docker 容器吗?

  9. 9

    我们将多少 docker 镜像推送到一个私有存储库?

  10. 10

    我们可以将函子作为参数传递给另一个函子吗?

  11. 11

    我们可以在另一个类的构造函数的帮助下初始化对象吗?

  12. 12

    Ionic ion-checkbox我们可以将图标更改为另一个图标吗?

  13. 13

    AnimationController:我们可以将TickerProvider vsync传递给另一个类吗?

  14. 14

    我们可以在另一个SP中使用Sql Server Profiler获得存储过程调用吗

  15. 15

    我们可以在邮件功能中使用post方法重定向到另一个页面吗

  16. 16

    我们可以在另一个类的构造函数的帮助下初始化对象吗?

  17. 17

    我们可以将文件孔分配给另一个文件吗?

  18. 18

    我们可以在Eclipse中从我们的项目中调用另一个项目Java类吗

  19. 19

    为什么我们需要另一个模式来进行模式缝合?

  20. 20

    我可以轻松地创建一个主机“镜像”来缓存下载的Debian软件包吗?

  21. 21

    我们可以从另一个版本进行AWS Lambda版本

  22. 22

    我们可以将变量从一个C程序传递到另一个C程序吗?

  23. 23

    我们可以继承另一个类中的一个类中定义的自定义变量吗?

  24. 24

    我们可以将系列从另一个数据框中追加到一个数据框中的字段吗?

  25. 25

    我们可以将一个厨师服务器.pem替换为另一个厨师服务器.pem吗?

  26. 26

    我们可以将变量从一个C程序传递到另一个C程序吗?

  27. 27

    我们可以将一个动作应用于Spark中的另一个动作吗?

  28. 28

    我们可以在另一个事件上调用为一个事件编写的JS函数吗?

  29. 29

    我们可以使用 SharedPreference 将数据从一个 Activity 共享或传输到另一个 Activity 吗?

热门标签

归档