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?
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"
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