Optimiser les images Docker

Docker : niveau intermédiaire

Mike Metzger

Data Engineering Consultant

Explication d'une image Docker

  • Les images Docker sont la base d'un conteneur donné
  • Elles contiennent tout ce qui est initialement disponible pour une instance de conteneur
Docker : niveau intermédiaire

Points d'attention sur les images Docker

  • Tentant d'ajouter tous les composants potentiels dans une image
  • Taille trop grande / difficile à gérer
  • Sécurité / mises à jour compliquées à cause des dépendances
  • Plus difficile de combiner des conteneurs sans gaspiller espace / bande passante
Docker : niveau intermédiaire

Recommandations pour les images Docker

  • Scinder les conteneurs au niveau minimal nécessaire
  • Plus facile de combiner plusieurs conteneurs que de construire une seule grosse image
  • Comme
    • construire avec des composants réutilisables
    • vs. repartir de zéro à chaque fois
  • Les mises à jour ciblées n'affectent que les conteneurs utilisant cette image, pas tous
  • Optimiser la taille facilite l'usage et la distribution
Docker : niveau intermédiaire

Exemple de décomposition d'image Docker

  • Imaginez un projet de data engineering avec :

    • base de données Postgresql
    • logiciel ETL Python
    • serveur web
  • Une seule image est possible, mais il faudrait la mettre à jour à chaque changement de l'ETL ou du serveur web.

  • Et si vous deviez ajouter un autre serveur web ?
FROM ubuntu
RUN apt update
RUN apt install -y postgresql
RUN apt install -y nginx
RUN apt install -y python3.9
...
Docker : niveau intermédiaire

Exemple avec conteneurs minimisés

  • De meilleures options avec Docker
  • Séparer chacun dans son propre conteneur
    • conteneur base de données Postgresql
    • composants ETL Python
    • serveur web
  • Créer une config optimisée pour notre usage, et ajouter / retirer des composants au besoin
bash> docker run -d postgresql:latest

bash> docker run -d nginx:latest ...
Docker : niveau intermédiaire

Déterminer la taille des images

  • Utiliser docker images
  • Affiche les détails de chaque image, dont la taille
  • Options plus avancées à venir

bash> docker images

REPOSITORY      TAG              SIZE
postgres        latest           448MB
postgres        15               442MB
apache/airflow  2.7.1-python3.9  1.4GB
alpine          latest           7.73MB
Docker : niveau intermédiaire

Passons à la pratique !

Docker : niveau intermédiaire

Preparing Video For Download...