Docker - 减小拉尺寸

时间:2014-03-31 20:07:31

标签: docker

我使用docker作为我们的码头应用程序。

它有以下几层:

  1. global-dependencies
  2. app-dependencies
  3. app
  4. app-config - 5种不同的配置。
  5. 每个图层的前一层都包含在' FROM'在Dockerfile中的行。 通常只会更改appapp-config。 如果我在*-dependencies图像中更改某些内容,则会在构建脚本中取消注释,以便更新它们。

    在构建脚本结束时,我做了:

    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
    

    此设置就像一个魅力 - 当*-dependencies图像没有变化时,创建5个图像只需2分钟。

    问题在于拉动图像。即使只更改app图层(大约100M),似乎pull也会从所有父图像中下载数据,即使它们没有重建。我需要为一小笔改变提取大约一千兆字节的数据。

    我的工作流程中有错误吗?我可以以某种方式优化流程吗?

    谢谢!

2 个答案:

答案 0 :(得分:2)

仅针对有类似问题的人:

您可以通过执行

调查对图像所做的更改
docker history my_registry:5000/app-config-1  

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

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

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

答案 1 :(得分:0)

此外,现在您可以检查您的图像&它的图层可视化使用ImageLayers.io来帮助查看额外大小的原因。