web-dev-qa-db-fra.com

Comment réduire la taille de l'image Docker RHEL / Centos / Fedora

L'image de base de Red Hat est assez petite, de l'ordre de 196M pour RHEL 7.4. Cependant, il manque généralement la plupart des éléments nécessaires aux produits pour lesquels je veux créer de nouvelles images.

Au moment où je fais un "yum install Xxx" dessus, la taille de l'image augmente de + 500M-800M.

Existe-t-il un moyen de réduire la taille de l'image?

10
TJA

Oui, la taille des images Docker peut être considérablement réduite en effectuant un "yum clean all"

Taille d'image RHEL initiale = 196M

Dockerfile - Image 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 - Image RHEL (+ bc) avec "yum clean all" = 207M d'économie 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

REMARQUE: l'option --squash est un indicateur expérimental dans la dernière version de Docker. Il compresse le système de fichiers en couches dans une seule nouvelle couche https://blog.docker.com/2017/01/whats-new-in-docker-1-13/

J'ai trouvé la solution d'utiliser "yum clean all" sur https://medium.com/@vaceletm/docker-layers-cost-b28cb13cb627

L'ajout de "rm -rf/var/cache/yum" provient de la suggestion dans la sortie du "yum clean all"

13
TJA

Outre la réponse de TJA, vous pouvez également utiliser une image de base CentOS plus petite, par exemple, une lumière Debian existe, elle s'appelle Bitnami

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

Pour CentOS, vous pouvez peut-être utiliser

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

Vous pouvez également essayer de réduire la taille de vos images à l'aide de 2 outils

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

et

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

1
user2915097