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

时间:2017-10-10 06:22:03

标签: docker

我在码头上测试了图像尺寸。

# 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 install wget,yum install bzip2,下载anaconda.sh文件,然后停止容器。

然后我做了'docker commit my_container img_anaconda'来创建一个新图像。图像尺寸为794M。它比我想象的要大一点。

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

所以我的问题是,大尺寸的原因只是anaconda很大,或者docker commit会导致其他一些事情吗?

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

1 个答案:

答案 0 :(得分:1)

图像越多,结果大小越大。
如果你更新yum存储库(我想你做的是因为你添加了包!)然后提交那个图层,它将进一步增加图像大小。如果你清理缓存,它可能会减少一点。

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

如果您运行docker history <image name>,您也可以看到不同图层的大小,这样可以提示问题所在的位置。