【问题标题】:Does docker reuse images when multiple containers run on the same host?当多个容器在同一主机上运行时,docker 是否会重用图像?
【发布时间】:2016-12-12 19:22:51
【问题描述】:

我的理解是 Docker 在 dockerfile 的每个阶段都会创建一个镜像层。

如果我有 X 个容器在同一台机器上运行(其中 X >=2)并且每个容器都有一个共同的底层映像层(即 debian),那么 docker 会在该机器上只保留一个基本映像的副本,或者每个容器都有多个副本吗?

这是否存在问题,或者 dockerfile 中的每一层都是如此?

这是如何工作的?

Kubernetes 是否会对此产生任何影响?

【问题讨论】:

标签: docker kubernetes dockerfile docker-image docker-container


【解决方案1】:

Dockers Understand images, containers, and storage drivers 详细介绍了大部分内容。

从 Docker 1.10 开始,构成映像的所有层在构建时都具有与其关联的 SHA256 安全内容哈希。只要层的内容相同,此哈希值在主机和构建之间是一致的。

如果任意数量的图像共享一个层,则该层的 1 个副本将被 Docker 引擎实例上的所有图像存储和使用。

随着新版本的发布,debian 这样的标签可以引用多个 SHA256 图像哈希值。使用FROM debian 构建的两个图像不一定共享层,只有当 SHA256 哈希匹配时。

在下面运行 Docker 引擎的任何东西都将使用此存储设置。

此共享也适用于 Docker Registry(>2.2 以获得最佳结果)。如果您要推送具有该注册表中已存在的层的图像,则会跳过现有层。与将图层拉到本地引擎相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    相关资源
    最近更新 更多