docker 如何处理几乎相等的图像?
How does docker handle almost equal images?
我有两个节点应用程序。每个应用程序都有自己的 docker 图像。
图片 1:
- 来自 debian
- 安装包(python,主管,git)
- 安装节点
- 安装socat
- 安装redis_cli
- Git 克隆应用 1
图 2:
- 来自 debian
- 安装包(python,主管,git)
- 安装节点
- 安装redis_cli
- Git 克隆应用 2
所以你可以看到两个图像共享相同的基础图像、包、节点和 redis_cli。
如果我在同一台机器上创建这些图像的容器,docker 会重用图层还是仅在图像范围内而不是跨图像重用图层?
答案是"it depends"。如果在构建 Image 1
时保留中间图像,docker 将在构建 Image 2
时重用它们。
您可以通过创建 2 个图像然后 运行 命令 docker history [image name]
来测试这一点,您会发现中间层的哈希是相同的。
此 blog 对此进行了更详细的解释。
我有两个节点应用程序。每个应用程序都有自己的 docker 图像。
图片 1:
- 来自 debian
- 安装包(python,主管,git)
- 安装节点
- 安装socat
- 安装redis_cli
- Git 克隆应用 1
图 2:
- 来自 debian
- 安装包(python,主管,git)
- 安装节点
- 安装redis_cli
- Git 克隆应用 2
所以你可以看到两个图像共享相同的基础图像、包、节点和 redis_cli。
如果我在同一台机器上创建这些图像的容器,docker 会重用图层还是仅在图像范围内而不是跨图像重用图层?
答案是"it depends"。如果在构建 Image 1
时保留中间图像,docker 将在构建 Image 2
时重用它们。
您可以通过创建 2 个图像然后 运行 命令 docker history [image name]
来测试这一点,您会发现中间层的哈希是相同的。
此 blog 对此进行了更详细的解释。