自定义docker图像具有巨大的规模增长

一个Ubuntu的:16.04的图像有117 MB:

$ docker images ubuntu 16.04 6a2f32de169d 5 days ago 117 MB 

有了这个Dockerfile,我想添加一些包(python,build-essentials和curl)和meteor:

 FROM ubuntu:16.04 RUN apt-get update -y && apt-get upgrade -y RUN apt-get install python -y RUN apt-get install build-essential -y RUN apt-get install curl -y RUN cd ~ && curl https://install.meteor.com/ | sh 

build立新的图像后…

 docker build -t custom-ubuntu . 

…我看到它有更多的1 GB。 我不明白这个数目巨大

第二次尝试

使用这个Dockerfile …

 FROM ubuntu:16.04 RUN apt-get update -y RUN apt-get install nodejs-legacy -yqq RUN apt-get install curl -yqq RUN apt-get clean && apt-get autoclean && apt-get autoremove RUN curl https://install.meteor.com/ | sh 

…从1.2 GB开始,至less850 MB的结果。

这是输出的开始,所以apt-get更新应该只增加24MB …

 Sending build context to Docker daemon 1.202 GB Step 1/6 : FROM ubuntu:16.04 ---> 6a2f32de169d Step 2/6 : RUN apt-get update -y ---> Running in 4c4cec841f5d Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB] Get:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB] Get:5 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [187 kB] Get:11 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [30.0 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [652 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.2 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [577 kB] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [9809 B] Get:16 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [4929 B] Get:17 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [2567 B] Get:18 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [308 kB] Get:19 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.8 kB] Get:20 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [133 kB] Get:21 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [2936 B] Fetched 23.9 MB in 7s (3184 kB/s) Reading package lists... 

你正在执行RUN apt-get update -y && apt-get upgrade -y 。 这是将整个系统升级到所有已安装软件包的最新版本。 我想你只需要做apt-get update ,然后安装所需的软件包。 为什么要升级整个系统? 在一个容器中,如果你想要的是正在工作的,或者如果你知道在这个版本上使用的任何软件包上存在某种漏洞,那么这个容器就足够了。 无论如何,python有很多你知道的依赖关系,如果你安装它,大小会增加。

减less容器大小的另一个好做法是将其添加到Dockerfile(在所有其他apt-get语句之后):

 RUN apt-get clean && apt-get autoclean && apt-get autoremove 

使用这些apt-get命令,您正在清除并删除所有下载的.deb包文件。

做到这一点,并检查所有这些build议的大小。 祝你好运。