如何减小RHEL / Centos / Fedora Docker镜像的大小

时间:2017-09-07 06:23:27

标签: docker centos redhat fedora

Red Hat的基本图像非常小,RHEL 7.4的大小为196M。然而,它往往会遗漏我想要为其构建新图像的产品所需的大量零碎。

当我在其上面做“yum install Xxx”时,图像尺寸会超过+ 500M-800M。

有没有办法缩小图像尺寸?

2 个答案:

答案 0 :(得分:8)

是的,通过“yum clean all”

可以大大减少Docker图像大小

初始RHEL图像尺寸= 196M

Dockerfile - RHEL Image(+ bc)= 505M

# Build command
# docker build -t rhel7base:latest --build-arg REG_USER='<redhat_developer_user>' --build-arg REG_PSWD='<password>' --squash .

FROM registry.access.redhat.com/rhel7/rhel:latest

LABEL maintainer="tim"

ARG REG_USER=none
ARG REG_PSWD=none

RUN subscription-manager register --username $REG_USER --password $REG_PSWD --auto-attach && \
    subscription-manager repos --enable rhel-server-rhscl-7-rpms && \
    yum install -y bc

Dockerfile - RHEL Image(+ bc),“yum clean all”= 207M,节省298M

# Build command
# docker build -t rhel7base:latest --build-arg REG_USER='<redhat_developer_user>' --build-arg REG_PSWD='<password>' --squash .

FROM registry.access.redhat.com/rhel7/rhel:latest

LABEL maintainer="tim"

ARG REG_USER=none
ARG REG_PSWD=none

RUN subscription-manager register --username $REG_USER --password $REG_PSWD --auto-attach && \
    subscription-manager repos --enable rhel-server-rhscl-7-rpms && \
    yum install -y bc && \
    yum clean all && \
    rm -rf /var/cache/yum

注意:--squash选项在最新版本的Docker中作为实验标志出现。它将分层文件系统压缩为单个新层https://blog.docker.com/2017/01/whats-new-in-docker-1-13/

我在https://medium.com/@vaceletm/docker-layers-cost-b28cb13cb627

找到了使用“yum clean all”的解决方案

添加“rm -rf / var / cache / yum”来自“yum clean all”输出中的建议

答案 1 :(得分:2)

除了TJA的回答之外,您还可以使用较小的CentOS基本图像,例如,存在Debian灯,它被称为Bitnami

https://hub.docker.com/r/bitnami/minideb-extras/

对于CentOS,您可以使用

https://hub.docker.com/r/blalor/centos/

您还可以尝试使用2个工具缩小图像尺寸

https://github.com/mvanholsteijn/strip-docker-image

https://github.com/docker-slim/docker-slim