Mise à jour Container Docker
Mise à jour des containers Docker Compose
[modifier]Cette procédure décrit les étapes pour mettre à jour les images et containers gérés via Docker Compose.
Prérequis
[modifier]- Accès SSH ou terminal sur la machine hôte
- Droits suffisants pour exécuter les commandes
dockeretdocker compose - Connaissance du répertoire contenant le fichier
docker-compose.yml
Étape 1 — Se placer dans le bon répertoire
[modifier]<syntaxhighlight lang="bash"> cd /chemin/vers/votre/projet </syntaxhighlight>
Étape 2 — Sauvegarder les données persistantes (recommandé)
[modifier]Avant toute mise à jour, assurez-vous que vos volumes sont sauvegardés si des données critiques y sont stockées.
<syntaxhighlight lang="bash">
- Lister les volumes utilisés
docker compose config --volumes
- Exemple de sauvegarde d'un volume nommé "db_data"
docker run --rm \
-v db_data:/data \ -v $(pwd)/backup:/backup \ alpine tar czf /backup/db_data_$(date +%Y%m%d).tar.gz -C /data .
</syntaxhighlight>
Étape 3 — Récupérer les nouvelles images
[modifier]Téléchargez les dernières versions des images depuis les registres (Docker Hub, GHCR, etc.) :
<syntaxhighlight lang="bash"> docker compose pull </syntaxhighlight>
Cette commande met à jour toutes les images déclarées dans le fichier Compose.
Pour ne mettre à jour qu'un seul service :
<syntaxhighlight lang="bash"> docker compose pull <nom_du_service> </syntaxhighlight>
Étape 4 — Recréer et redémarrer les containers
[modifier]Méthode recommandée (avec arrêt propre)
[modifier]<syntaxhighlight lang="bash"> docker compose up -d --remove-orphans </syntaxhighlight>
-d- Lance les containers en arrière-plan (mode detached)
--remove-orphans- Supprime les containers d'anciens services qui ne sont plus dans le fichier Compose
Docker Compose détecte automatiquement quelles images ont changé et ne recrée que les containers concernés.
Si vous souhaitez forcer la recréation de tous les containers
[modifier]<syntaxhighlight lang="bash"> docker compose up -d --force-recreate </syntaxhighlight>
Étape 5 — Vérifier l'état des containers
[modifier]<syntaxhighlight lang="bash"> docker compose ps </syntaxhighlight>
Consultez les logs en cas de problème :
<syntaxhighlight lang="bash">
- Logs de tous les services
docker compose logs -f
- Logs d'un service spécifique
docker compose logs -f <nom_du_service> </syntaxhighlight>
Étape 6 — Nettoyer les anciennes images
[modifier]Une fois la mise à jour vérifiée, supprimez les images obsolètes pour libérer de l'espace disque :
<syntaxhighlight lang="bash"> docker image prune -f </syntaxhighlight>
Résumé des commandes
[modifier]| Étape | Commande | Description |
|---|---|---|
| 1 | cd /chemin/projet |
Se positionner dans le répertoire |
| 2 | docker compose pull |
Télécharger les nouvelles images |
| 3 | docker compose up -d --remove-orphans |
Recréer les containers mis à jour |
| 4 | docker compose ps |
Vérifier l'état |
| 5 | docker compose logs -f |
Consulter les logs |
| 6 | docker image prune -f |
Nettoyer les images obsolètes |
Cas particuliers
[modifier]Mise à jour avec rebuild d'une image locale
[modifier]Si votre Compose utilise un build: (image construite localement depuis un Dockerfile) :
<syntaxhighlight lang="bash"> docker compose build --no-cache docker compose up -d </syntaxhighlight>
Rollback en cas de problème
[modifier]Si la mise à jour provoque une régression, vous pouvez revenir à l'image précédente en spécifiant un tag dans votre docker-compose.yml :
<syntaxhighlight lang="yaml"> services:
mon_service: image: mon_image:1.2.3 # Remplacer latest par un tag versionné
</syntaxhighlight>
Puis relancer :
<syntaxhighlight lang="bash"> docker compose up -d </syntaxhighlight>