Optimiser les images Docker

Docker intermédiaire

Mike Metzger

Data Engineering Consultant

Explication des images Docker

  • Les images Docker sont la base d'un conteneur donné
  • Contiennent tout le contenu initial d'une instance de conteneur
Docker intermédiaire

Enjeux liés aux images Docker

  • Tentant d'ajouter tous les composants possibles 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 intermédiaire

Recommandations pour les images Docker

  • Scinder les conteneurs au plus petit niveau nécessaire
  • Plus facile de combiner plusieurs conteneurs que de bâtir une seule grosse image
  • Comme
    • bâtir avec des composants réutilisables
    • plutôt que repartir de zéro chaque fois
  • Les mises à jour visent seulement les conteneurs basés sur l'image concernée, pas tous
  • Optimiser la taille facilite l'utilisation et la distribution
Docker intermédiaire

Exemple de décomposition d'image Docker

  • Imaginez un projet d'ingénierie des données avec :

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

  • Que se passe-t-il si nous devons 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 intermédiaire

Exemple avec conteneurs minimisés

  • De meilleures options avec Docker
  • Séparer chacun dans son propre conteneur
    • Conteneur de base de données Postgresql
    • Composants ETL en Python
    • Serveur Web
  • Construire une configuration optimisée et ajouter / retirer des composants au besoin
bash> docker run -d postgresql:latest

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

Déterminer la taille d'une image

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

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 intermédiaire

Passons à la pratique !

Docker intermédiaire

Preparing Video For Download...