2017-09-27 36 views
0

我试图减少我使用Centos 7.2的码头图像的大小问题是它的数据量是257MB,这太高了... 我遵循最佳实践来编写Dockerfile以减小大小。 .. 有没有一种方法来修改后的图像生成和重建该图像看到的大小减少?是否可以从Docker镜像中删除不需要的软件包?

+1

不要在dockerfile使用'CentOS'来代替使用'alpine'。从已经很小的东西开始,而不是试图让一些小东西 –

+0

谢谢你的回答,但我需要安装的包需要百胜安装,所以高山不是我的解决方案... –

+0

然后看看我发布的答案 –

回答

1

首先,如果你想减少操作系统的大小,不要用大一个像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包装容器。一旦你完成你可以提交图像

docker commit centos_minimal centos_minimal:7.2.1511_trial1 

实验壁球图片

另一种选择是使用构建命令的一个实验性的功能。在此你可以像下面

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

然后建立使用此文件

docker build --squash -t centos_minimal:squash . 

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

+0

第二个解决方案的作品,但不是第一个,谢谢 –

-1

这是可能的,但并不高雅。就像你可以添加软件到基础图像,你也可以删除:

FROM centos:7 

RUN yum -y update && yum clean all 

RUN yum -y install new_software 

RUN yum -y remove obsolete_software 

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

如果它不需要是CentOS,则应该从更简约的图像开始。看到这里的讨论: Which Docker base image should be used to install Apps in a container without any additional OS?

+0

答案是正确的,但不在上下文中。问题是关于“重建图像以减小尺寸?”你正在做的只是添加另一层去除软件包,但较低层仍然有这些软件包,因此大小不会有任何区别,相反它也会增加一点,因为它会修改软件包数据库也 –

相关问题