如何减小CentOS 7的Docker镜像大小?

3

我最近开始使用docker,并尝试使用CentOS:7.5.1804镜像来构建自定义镜像。

我面临的问题是,原始的CentOS:7.5.1804镜像显示大小为200MB,但在我添加所需的软件包后,镜像的大小变成了1.2GB!我正在尝试找出是否有办法缩小镜像的大小?

我在dockerfile中尝试使用“yum clean all”和“rm -rf /var/cache/yum”,但仅减少了几MB,并没有帮助很多。

欢迎提供任何有关减小镜像大小的建议和最佳实践。如下所示是我的dockerfile,它导致一个1.2GB的镜像!

#Use CentOS as base
FROM centos:7.5.1804

# Docker recommends
RUN yum -y update && yum clean all

# Install custom tools
RUN yum -y install openssl && yum install -y nc && \
yum -y install python3 && pip3 install j2cli && \
yum -y install epel-release &&  yum -y update && yum install -y ccrypt && \
yum clean all && rm -rf /var/cache/yum
1个回答

2

您有一些不必要的指令,请尝试使用这个Dockerfile。

#Use CentOS as base
FROM centos:7.5.1804

# Install custom tools
RUN yum -y install openssl ccrypt nc epel-release python3 && \
    pip3 install j2cli && \
    yum clean all && rm -rf /var/cache/yum

谢谢!这个非常有效,直接将图像大小减小到276MB。请注意有一个变化,必须将ccrypt安装移出第一组并单独安装,因为ccrypt来自epel-release软件包。RUN yum -y install openssl nc epel-release python3 && yum -y install ccrypt \ pip3 install j2cli && \ yum clean all && rm -rf /var/cache/yum 仍在努力理解我们从dockerfile中删除的指令有什么问题? - Shrenik
2
请记住,Dockerfile 的每个指令都会创建一个唯一的层,因此如果您删除或清理某些文件(例如 yum clean all),则更改仅影响此层的大小,但是之前层的大小将保持不变。最后,在您的 Dockerfile 中,您正在创建一个不必要的层 RUN yum -y update && yum clean all - kevs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接