是否有可能从docker镜像中删除不需要的软件包?

我试图减less使用Centos 7.2的Docker镜像的大小问题是,它的数据量是257MB,这太高了…我遵循最佳实践来编写Dockerfile以减小大小…是否有一种方法来修改后的图像生成和重build图像看到的大小减less?

首先,如果你想减less操作系统的大小,不要从像CentOS那样大的一个开始,你可以从小的阿尔卑斯开始

现在如果你仍然热衷于使用CentOS做下面

 docker run -d --name centos_minimal centos:7.2.1511 tail -f /dev/null 

这将在后台启动一个命令。 然后你可以进入容器使用

 docker exec -it centos_minimal bash 

现在开始使用yum removeyum purge yum remove不需要的软件包。 一旦你完成你可以提交图像

 docker commit centos_minimal centos_minimal:7.2.1511_trial1 

实验壁球图像

另一个select是使用build命令的一个实验function。 在这里你可以有一个像下面的dockerfile

 FROM centos:7 RUN yum -y purge package1 package2 package2 

然后使用build立这个文件

 docker build --squash -t centos_minimal:squash . 

为此,您需要添加"experimental": true对您的/etc/docker/daemon.json添加"experimental": true ,然后重新启动/etc/docker/daemon.json服务器

这是可能的,但并不高雅。 就像您可以将软件添加到基本映像一样,您也可以删除:

 FROM centos:7 RUN yum -y update && yum clean all RUN yum -y install new_software RUN yum -y remove obsolete_software 

问问自己:您的操作系统是否必须是CentOS? 那么我会build议你使用默认的安装,并确保你有足够的磁盘空间和内存。

如果它不需要成为CentOS,那么你应该从一个更简约的图像开始。 请参阅此处的讨论: 应该使用哪个Docker基础映像将应用程序安装在容器中,而无需额外的操作系统?