为什么在我运行docker commit后docker镜像的大小是如此之大

我在Docker上做了一个关于图像大小的testing。

# docker images REPOSITORY TAG IMAGE ID CREATED SIZE img_anaconda_installed latest 5bbdedd62fd3 21 seconds ago 2.79GB img_anaconda latest 5d9dbd3c4a63 14 minutes ago 794MB centos latest 196e0ce0c9fb 3 weeks ago 197MB 

centos是我运行的图片“docker pull centos”,它的大小是197M。

然后,我运行一个容器centos,并在容器中,我做了yum安装wget,yum install bzip2,下载anaconda.sh文件,并停止容器。

然后我做了“docker提交my_container img_anaconda”来创build一个新的图像。 图像尺寸是794M。 这是比我想象的大一点。

最后,我再次进入my_container来安装anaconda。 在完成anaconda之后,我停止了容器,docker提交了名为img_anaconda_installed的新映像。 它的大小是2.79GB。

所以我的问题是,大尺寸的原因只是水蟒是大的,或docker提交做一些其他的事情造成呢?

PS:anaconda.sh文件的大小是103M。

图片越多,结果大小越大。
如果你更新了yum版本库(我猜你是因为添加了软件包而做的),然后提交该图层,这将进一步增加图像的大小。 如果清理caching可能会降低一点。

我会build议编写一个Dockerfile而不是通过运行容器来更新图像,这样就可以更好地控制图层数量,并且可以testing和调整更多的内容,并立即查看结果。

如果你运行docker history <image name>你也可以看到不同层次的大小,这会给你提示问题的位置。