Docker图像大小没有意义

问题描述 投票:0回答:1

我已经在计算机上创建了ubuntu:bionic基础图像。最初是超大尺寸,但我通过运行容器然后提交来删除了80%的内容。如果我进入根目录并执行“ du -sh”,则表示磁盘使用量为4.5GB。奇怪的是,当我执行“ docker images”时,docker image的大小显示为11 GB。推到docker hub后,我看到它是3.34 GB。所以我想也许它在压缩之前就清理了一些内容?我运行了新映像,删除了一些更多的内容,提交并再次推送。这次,“ du–sh”表示3.0 GB,“ docker映像”仍然表示11GB,而docker hub也为3.34 GB。显然,它正在压缩11GB文件,而不是我压缩的3.0GB内容。期待。是否有一种简单的方法可以“清理”图像?

docker docker-image
1个回答
0
投票

Docker映像是从层构建的。当您添加一个新层时,它不会删除先前的层,而只是添加一个新层,就像一个新的Git提交一样-历史仍然存在。

这意味着当您删除内容时,它使它不可见,但仍在较早的层中。

您可以通过docker history yourimagename查看图层及其大小。

您的选择:

  1. 请确保不要将不需要的文件放在首位,例如用.dockerignore
  2. 使用多阶段构建,仅使用您需要的文件从旧图像创建新图像。 https://docs.docker.com/develop/develop-images/multistage-build/
© www.soinside.com 2019 - 2024. All rights reserved.