CodeGym /Cours /Docker SELF /Choisir une image de base

Choisir une image de base

Docker SELF
Niveau 14 , Leçon 1
Disponible

7.1 Image de base

Les images de base jouent un rôle important dans la création des images Docker, car elles fournissent un point de départ pour l'assemblage et définissent l'environnement dans lequel votre application sera exécutée. Le choix et la configuration corrects des images de base peuvent avoir un impact significatif sur les performances, la taille et la sécurité de l'image finale. Dans cette conférence, on va voir comment choisir et configurer les images de base pour Docker.

Une image de base (ou image de fondation) — c'est une image Docker qui est utilisée comme couche initiale pour créer une nouvelle image Docker. Elle peut inclure un système d'exploitation minimal, les outils et bibliothèques nécessaires ou même être vide (image scratch). Le choix de l'image de base détermine quelles ressources et quels paquets seront disponibles par défaut dans votre conteneur.

Choisir une image de base

Lors du choix d'une image de base, il faut prendre en compte plusieurs facteurs :

  1. Taille de l'image: Les images plus petites se téléchargent plus rapidement, occupent moins d'espace disque et peuvent accélérer le déploiement des applications.
  2. Support et mises à jour: L'utilisation d'images officielles avec des mises à jour régulières offre un niveau de sécurité supérieur, des correctifs de vulnérabilités et une stabilité de fonctionnement.
  3. Compatibilité: L'image de base doit inclure les bibliothèques et dépendances nécessaires à votre application pour fonctionner correctement.

Images de base populaires

1. Alpine Linux

Une image très légère qui occupe environ 5 MB. Elle est idéale pour les applications qui nécessitent un système d'exploitation minimal. Cependant, les développeurs doivent garder à l'esprit qu'Alpine manque de nombreuses bibliothèques standards, donc certaines applications peuvent nécessiter une configuration supplémentaire.

dockerfile

FROM alpine:3.12

2. Debian/Ubuntu

Des images plus complètes, qui incluent une large gamme d'outils et de bibliothèques. Elles conviennent aux applications complexes qui nécessitent un environnement plus complet ou une bibliothèque standard Linux bien connue.

dockerfile

FROM ubuntu:20.04 

3. Official Language Images

Les images officielles pour les langages de programmation, comme Node.js, Python, Ruby et d'autres. Ces images contiennent déjà l'environnement nécessaire pour développer et exécuter des applications dans le langage correspondant, ce qui simplifie la configuration.

dockerfile

FROM node:14 

7.2 Configuration de l'image de base

Après avoir choisi l'image de base, il faut la configurer en fonction des besoins de ton application. La config inclut l'installation des packages nécessaires, la copie des fichiers de l'appli et la configuration de l'environnement.

Exemple : Configuration d'une image de base basée sur Alpine Linux

dockerfile


# Utiliser l'image de base Alpine Linux
FROM alpine:3.12
        
# Installer les packages nécessaires
RUN apk add --no-cache python3 py3-pip
        
# Configurer le répertoire de travail
WORKDIR /app
        
# Copier les fichiers de l'application
COPY . .
        
# Installer les dépendances
RUN pip3 install -r requirements.txt
        
# Spécifier la commande pour démarrer l'application
CMD ["python3", "app.py"]

Dans cet exemple, on utilise l'image de base alpine:3.12, on installe les packages nécessaires, on copie les fichiers de l'application et on installe les dépendances. La commande finale alpine:3.12 spécifie comment démarrer l'application.

Exemple : Configuration d'une image de base basée sur Ubuntu

dockerfile


# Utiliser l'image de base Ubuntu
FROM ubuntu:20.04
        
# Mettre à jour et installer les packages nécessaires
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
        
# Configurer le répertoire de travail
WORKDIR /app
        
# Copier les fichiers de l'application
COPY . .
        
# Installer les dépendances
RUN pip3 install -r requirements.txt
        
# Spécifier la commande pour démarrer l'application
CMD ["python3", "app.py"] 

Ce Dockerfile utilise l'image ubuntu:20.04 et installe Python et pip. Ensuite, il copie les fichiers de l'application et installe les dépendances, de manière similaire à l'exemple précédent.

7.3 Meilleures pratiques

Comment choisir et configurer correctement les images de base :

1. Choisissez des images minimales: commencez avec les images les plus petites qui répondent aux exigences de votre application. Cela réduira la taille de l'image finale et améliorera la sécurité.

2. N'installez pas de paquets inutiles: installez uniquement les dépendances réellement nécessaires à votre application. Cela réduira la taille de l'image et minimisera les vulnérabilités potentielles.

3. Nettoyez le cache des gestionnaires de paquets: après l'installation des paquets, supprimez les fichiers temporaires et le cache pour alléger l'image.

dockerfile


RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

4. Utilisez une construction multi-étapes: cela permet de séparer les étapes de build et d'exécution, ce qui aide à créer des images plus légères et plus sécurisées.

Terminal

        
# Étape de construction
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
        
# Étape finale
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

5. Mettez à jour régulièrement les images: utilisez des versions récentes des images de base pour inclure les derniers correctifs de sécurité et mises à jour.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION