Processus principal (PID 1)

Un conteneur vit exactement aussi longtemps que son processus principal, celui lancé par CMD ou ENTRYPOINT. Quand ce processus se termine, le conteneur s'arrête, quoi qu'il tourne d'autre à l'intérieur.

Comment ça marche

Le processus principal tourne en PID 1 dans le conteneur. Il reçoit le signal d'arrêt de docker stop et doit le gérer. Un serveur doit rester au premier plan : un service qui se met lui-même en arrière-plan rend la main aussitôt, et le conteneur s'arrête.

Ce qui casse

Avec la forme shell CMD node server.js, Docker lance /bin/sh -c, et le shell ne transmet pas SIGTERM à node : docker stop attend 10 secondes puis tue tout, coupant les requêtes en cours. La forme exec CMD ["node", "server.js"] fait de node lui-même le PID 1.

Dans un terminal

docker run -d --name web nginx:1.27
docker top web
docker inspect -f '{{.Config.Cmd}}' web

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.