Gestion du cycle de vie des conteneurs
Comprendre comment gérer le cycle de vie d'un conteneur est crucial pour une utilisation efficace de Docker. Dans cette étape, nous allons explorer diverses commandes pour contrôler les états des conteneurs et comprendre le cycle de vie des conteneurs.
États du cycle de vie des conteneurs
Un conteneur Docker peut exister dans plusieurs états :
- Created (Créé) : Le conteneur est créé mais non démarré
- Running (En cours d'exécution) : Le conteneur est actuellement en cours d'exécution
- Paused (En pause) : L'exécution du conteneur est en pause
- Stopped (Arrêté) : Le conteneur est arrêté mais existe toujours
- Removed (Supprimé) : Le conteneur est supprimé
Explorons comment passer d'un état à l'autre.
Création d'un conteneur sans le démarrer
Vous pouvez créer un conteneur sans le démarrer en utilisant la commande create :
docker create --name test-container nginx
Cela crée un conteneur mais ne le démarre pas. Vérifiez son état :
docker ps -a
Vous devriez voir le nouveau conteneur avec l'état "Created" (Créé) :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f4ab92d1234 nginx "/docker-entrypoint.…" 5 seconds ago Created test-container
a72369167c21 nginx "/docker-entrypoint.…" 40 minutes ago Up 30 minutes 0.0.0.0:8080->80/tcp my-nginx
bc123def456a redis "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 6379/tcp redis-server
Démarrage d'un conteneur créé
Pour démarrer le conteneur créé :
docker start test-container
Vérifiez qu'il est en cours d'exécution :
docker ps
Mise en pause et reprise des conteneurs
Docker vous permet de mettre un conteneur en pause, ce qui fige tous les processus à l'intérieur :
docker pause test-container
Vérifiez son état :
docker ps
Sortie :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f4ab92d1234 nginx "/docker-entrypoint.…" 2 minutes ago Up 1 minute (Paused) test-container
a72369167c21 nginx "/docker-entrypoint.…" 42 minutes ago Up 32 minutes 0.0.0.0:8080->80/tcp my-nginx
bc123def456a redis "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 6379/tcp redis-server
Pour reprendre le conteneur :
docker unpause test-container
Vérifiez qu'il est à nouveau en cours d'exécution :
docker ps
Arrêt et redémarrage des conteneurs
Pour arrêter un conteneur en douceur (en envoyant SIGTERM, puis SIGKILL après une période de grâce) :
docker stop test-container
Pour tuer de force un conteneur (en envoyant SIGKILL) :
docker start test-container ## Start it again first
docker kill test-container ## Then kill it
Pour redémarrer un conteneur (l'arrête et le redémarre) :
docker start test-container ## Start it again first
docker restart test-container
Suppression des conteneurs
Pour supprimer un conteneur arrêté :
docker stop test-container ## Make sure it's stopped first
docker rm test-container
Vérifiez qu'il a disparu :
docker ps -a | grep test-container
Vous ne devriez obtenir aucune sortie, ce qui indique que le conteneur a été supprimé.
Suppression d'un conteneur en cours d'exécution
Vous pouvez forcer la suppression d'un conteneur en cours d'exécution :
docker run --name temp-container -d nginx
docker rm -f temp-container
Politiques de redémarrage des conteneurs
Docker vous permet de définir des politiques de redémarrage pour les conteneurs :
docker run --name always-restart --restart always -d nginx
Ce conteneur redémarrera automatiquement s'il se ferme ou si Docker redémarre.
Vérifiez la politique de redémarrage :
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' always-restart
Sortie :
always
Arrêtons et supprimons ce conteneur :
docker rm -f always-restart
Comprendre ces commandes de cycle de vie vous donne un contrôle total sur vos conteneurs Docker, vous permettant de gérer efficacement leurs états en fonction des besoins de votre application.