Salut tout le monde,
Actuellement en train de réviser Docker, je me suis rendu compte d’un comportement que je ne comprends pas pour le moment.
C’est tout simple : la commande docker run ubuntu
est censée lancer un container sur l’image ubuntu
. Aucune erreur, ça semble marcher.
Exemple de ce que j’obtiens :
sudo docker run -dp 800:800 ubuntu
0eea8307d5abc58d316351841a192d8d07340b202b74535a940b09d530d9b177
Toutefois quand je tape : sudo docker ps
, la table des containers est vide.
Pour continuer mes tests, j’ai décidé de lancer sudo docker run -dp 900:900 docker/getting-started
et cette fois-ci, la table sudo docker ps
contient bien l’entrée correspondante, c’est-à-dire :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c12d9e252bc docker/getting-started "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 80/tcp, 0.0.0.0:900->900/tcp, :::900->900/tcp youthful_edison
Serait-ce donc simplement que l’image ubuntu
, pour une raison que j’ignore, induit l’absence d’affichage dans docker ps
de tout container Docker lancé sur elle ?
Allons plus loin dans mes tests… : je lance donc une commande c/c de la doc Docker sudo docker run -d ubuntu bash -c "shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null"
.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77be631c4179 ubuntu "bash -c 'shuf -i 1-…" 19 seconds ago Up 19 seconds blissful_hoover
On constate donc que l’entrée a bien été ajoutée : je suspecte donc l’instruction bash tail -f /dev/null
de maintenir en vie un process et d’être là pour ça (sinon, à quoi bon utiliser /dev/null
avec tail -f
?). Ce process étant le container Docker, qui ne peut donc s’arrêter tant que tail
s’exécute : il est donc maintenu en vie, et donc est affichable et affiché par docker ps
.
Toutefois à ma connaissance, les containers Docker une fois lancés, pour être arrêtés, doivent obligatoirement être arrêtés avec un docker rm
avec une option -f
si besoin. Il ne devrait donc pas y avoir besoin de tail -f /dev/null
premièrement. Et, deuxièmement, mon docker run ubuntu
ne devrait donc pas s’arrêter tout seul et devrait être affiché dans docker ps
.
Pourriez-vous s’il vous plaît éclairer ma lanterne ?
Je vous en remercie d’avance,
Bonne journée à toute la commu'