Docker 图片越来越大了

Docker image is getting bigger and bigger

现在我正在试验 Docker。

我已经“安装”了一个 Docker Debian 镜像。 在这个Debian环境中,我安装了一个应用程序。

现在,我每天晚上都这样做:

如您所见,我尝试创建一个“备份解决方案”。

效果很好。但问题是,备份文件每天都在变得越来越大。 即使几天不碰容器。

以前不到10GB,现在已经20GB了。

这是为什么?我做错了什么?

非常感谢

Docker 图像会保存您每次​​提交的“差异”,以及图像的所有先前版本。这意味着您的过程可以保证稳定地增加最终图像的大小。为避免这种情况,您应该使用 docker export 而不是 docker save(它接收容器作为参数,而不是图像)。

Docker save

Docker export

使用 docker commit 通常不是最佳做法。在 Docker 的 Build and run your image 教程等地方描述的 Docker 文件系统将让您编写一个文件,列出所有需要 运行 构建图像的命令.您可以将该文件签入源代码管理,并且 运行 docker build 每当您需要重新创建图像时。

如果 Dockerfile 与应用程序的源代码一起签入,您可以签出应用程序源的旧版本并从那里重新 docker build 图像。没有特别需要保存图像的二进制副本。

在技术层面上,docker commit 创建的图像总是包含原始图像,加上一个额外的 ,即容器中发生的任何变化。如果您重复 docker commit,即使您删除或覆盖文件,每张图片都将始终比之前的图片大。 (典型的 Docker 图像小于 1 GB,并且根据应用程序 运行 时间和基础图像,通常在 100-200 MB 范围内。)

我遇到了同样的问题,直到我发现这是因为在 docker save 之后图像 tar 文件是在同一文件夹中生成的。

下次再次构建时,tar 文件也会包含在下一个图像中。

在我的 .dockerignore 中添加 *.tar 后,现在可以正常工作了。