自定义码头图像具有巨大的增长

时间:2017-04-18 18:18:50

标签: 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

构建新图像后......

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开始,至少是850 MB的结果。

这是输出的开始,所以apt-get update应该只添加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...

1 个答案:

答案 0 :(得分:1)

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

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

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

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

在完成所有这些建议后,请检查并检查尺寸。祝你好运。