docker工人 – 减less拉的大小
我使用docker为我们的docker应用程序。
它有以下几层:
- 全球依赖性
- 应用依赖性
- 应用
- 应用程序configuration – 5种不同的configuration。
每个图层在Dockerfile的“FROM”行中都有上一层。 通常只有app
和app-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直观地检查图像及其图层,以便了解额外尺寸的原因。