是否可以从docker镜像中删除不需要的包?

时间:2017-09-27 12:45:45

标签: docker dockerfile

我正在尝试减小使用Centos 7.2的docker镜像的大小 问题是它是257MB太高了...... 我已经按照最佳实践编写Dockerfile以减小大小... 有没有办法在构建后修改图像并重建该图像以查看缩小的大小?

2 个答案:

答案 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

实验壁球图片

另一个选择是使用build命令的实验性功能。在这里你可以有一个像下面这样的dockerfile

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

然后使用

构建此文件
docker build --squash -t centos_minimal:squash .

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

答案 1 :(得分:-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?