当多个容器 运行 在同一主机上时 docker 是否重用图像?
Does docker reuse images when multiple containers run on the same host?
我的理解是 Docker 在 docker 文件的每个阶段创建一个图像层。
如果我在同一台机器上有 X 个容器 运行(其中 X >=2)并且每个容器都有一个共同的底层图像层(即 debian),docker 会只保留一个吗该机器上的基本映像副本,还是每个容器都有多个副本?
这是否存在问题,或者 docker 文件中的每一层都是如此?
这是如何工作的?
Kubernetes 是否对此有任何影响?
Dockers Understand images, containers, and storage drivers 详细说明了其中的大部分内容。
从 Docker 1.10 开始,构成图像的所有层在构建时都有与之关联的 SHA256 安全内容哈希。只要层的内容相同,此哈希在主机和构建之间是一致的。
如果任意数量的图像共享一个层,则只有该层的 1 个副本将被存储并供 Docker 引擎实例上的所有图像使用。
随着新版本的发布,像 debian
这样的标签可以随着时间的推移引用多个 SHA256 图像哈希。使用 FROM debian
构建的两个图像不一定共享层,仅当 SHA256 哈希匹配时。
任何在下面运行 Docker 引擎的东西都将使用这个存储设置。
此共享也适用于 Docker 注册表(>2.2 以获得最佳效果)。如果您要推送具有该注册表中已存在的层的图像,则会跳过现有层。与将层拉到本地引擎相同。
我的理解是 Docker 在 docker 文件的每个阶段创建一个图像层。
如果我在同一台机器上有 X 个容器 运行(其中 X >=2)并且每个容器都有一个共同的底层图像层(即 debian),docker 会只保留一个吗该机器上的基本映像副本,还是每个容器都有多个副本?
这是否存在问题,或者 docker 文件中的每一层都是如此?
这是如何工作的?
Kubernetes 是否对此有任何影响?
Dockers Understand images, containers, and storage drivers 详细说明了其中的大部分内容。
从 Docker 1.10 开始,构成图像的所有层在构建时都有与之关联的 SHA256 安全内容哈希。只要层的内容相同,此哈希在主机和构建之间是一致的。
如果任意数量的图像共享一个层,则只有该层的 1 个副本将被存储并供 Docker 引擎实例上的所有图像使用。
随着新版本的发布,像 debian
这样的标签可以随着时间的推移引用多个 SHA256 图像哈希。使用 FROM debian
构建的两个图像不一定共享层,仅当 SHA256 哈希匹配时。
任何在下面运行 Docker 引擎的东西都将使用这个存储设置。
此共享也适用于 Docker 注册表(>2.2 以获得最佳效果)。如果您要推送具有该注册表中已存在的层的图像,则会跳过现有层。与将层拉到本地引擎相同。