Docker 图片大小不合理

Docker image size doesn’t make sense

我已经在我的电脑上创建了一个 ubuntu:bionic 基础图像。本来超大的,但是我用运行容器删除了80%的内容,然后提交。如果我进入根目录并执行“du -sh”,它显示磁盘使用量为 4.5GB。很好奇,当我执行“docker 图像”时 docker 图像的大小显示 11 GB。推送到 docker 集线器后,我看到它是 3.34 GB。所以我想也许它被清理了在压缩之前上传一些东西?我 运行 新图像,删除了更多内容,提交,然后再次推送。这次,“du-sh”说 3.0 GB,“docker 图像”仍然说 11GB 和docker hub 也是 3.34 GB。很明显它压缩的是 11GB 的文件,而不是我期望的 3.0GB 的内容。有没有简单的方法来“清理”图像?

Docker 图像是从图层构建的。当你添加一个新层时,它不会删除以前的层,它只会添加一个新层,就像一个新的 Git 提交——历史仍然存在。

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

您可以使用 docker history yourimagename 查看图层及其大小。

您的选择:

  1. 确保您不需要的文件不要放在首位,例如.dockerignore.
  2. 使用多阶段构建从仅包含您需要的文件的旧映像创建新映像。 https://docs.docker.com/develop/develop-images/multistage-build/