docker工人 – 减less拉的大小

我使用docker为我们的docker应用程序。

它有以下几层:

  1. 全球依赖性
  2. 应用依赖性
  3. 应用
  4. 应用程序configuration – 5种不同的configuration。

每个图层在Dockerfile的“FROM”行中都有上一层。 通常只有appapp-config被改变。 如果我改变*-dependencies图像中的某些东西,我在构build脚本中取消注释它们,以便它们得到更新。

在构build脚本的末尾,我会这样做:

 sudo docker tag app-config-1 my_registry:5000/app-config-1:$version sudo docker push my_registry:5000/app-config-1 

然后在目标主机上,我执行:

 docker pull my_registry:5000/app-config-1:$version 

这个设置就像一个魅力 – 只要2分钟就可以创build5张图片,当*-dependencies图片没有改变的时候。

问题是拉图像。 即使只有app层发生了变化,大概是100M,但似乎是从所有父图像中pull下载数据,尽pipe它们没有被重build。 我不得不花费大量的数据来做一些小小的改动。

我的工作stream程中是否有一些错误? 我能以某种方式优化过程吗?

谢谢!

只针对有类似问题的人:

您可以通过执行来调查对图像所做的更改

 docker history my_registry:5000/app-config-1 

它会显示每个命令后的所有图层和大小差异。

在我的情况下,我有一个巨大的文件夹添加在第一步(这是很less执行)。 问题是在后面的步骤之一,我有一个命令更改此文件夹的权限。 这使得docker工人创build了一个包含所有文件的新图层(大约400M)。

现在我在添加文件夹后的第一步中更改权限,因此图像的大小明显减less。

此外,现在您可以使用ImageLayers.io直观地检查图像及其图层,以便了解额外尺寸的原因。