web-dev-qa-db-ja.com

RHEL / Centos / Fedora Dockerイメージのサイズを縮小する方法

Red Hatのベースイメージは非常に小さく、RHEL 7.4の場合は196M程度です。ただし、新しいイメージを作成したい製品に必要な多くの要素が欠けている傾向があります。

その上で「yum install Xxx」を実行した瞬間、画像サイズが+ 500M〜800M吹き飛ばされます。

画像のサイズを小さくする方法はありますか?

10
TJA

はいDockerイメージのサイズは、「yum clean all」を実行することで劇的に削減できます

初期RHELイメージサイズ= 196M

Dockerfile-RHELイメージ(+ 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-"yum clean all" = 207MのRHELイメージ(+ bc)で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/

「yum clean all」を使用する解決策は https://medium.com/@vaceletm/docker-layers-cost-b28cb13cb627 で見つかりました

「rm -rf/var/cache/yum」の追加は、「yum clean all」の出力での提案に由来します

13
TJA

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

1
user2915097