Un conteneur possède un processus principal et devient inactif lorsque celui-ci est arrêté.
Démarrez un conteneur ubuntu
en foreground: reste t-il ouvert ?
Repérer quelle était la commande du conteneur.
Modifier la commande d'un conteneur
La commande d'une image Ubuntu est /bin/bash
, ce qui termine de s'exécuter presque instantanément après le démarrage du conteneur. Pour changer la commande par défaut, il faut l'ajouter à la suite du nom de l'image:
docker run --rm ubuntu echo 42
[output]42
Le conteneur exécute la commande, 42
s'affiche dans le terminal, puis il est arrêté.
Mode interactif
Pour démarrer un conteneur et pouvoir y utiliser un terminal à l'intérieur, il faudra ajouter les options suivantes:
-
-i
(ou--interactive
): permet de garder STDIN ouvert -
-t
(ou--tty
): crée un terminal émulé
docker run --rm -it ubuntu
root@a306eb730e40:/#
Note: en ne précisant pas de commande, c'est celle par défaut qui sera exécutée (
/bin/bash
).
Exécutez quelques commandes de base (whoami
, pwd
, ls
, ...) puis quitter le conteneur avec exit
.
Cette méthode permet d'essayer rapidement des outils CLI d'images particulières.
Commandes dans un conteneur actif
Démarrez un conteneur:
docker run -d --rm --name ubuntu ubuntu:latest sleep 300
Pour exécuter des commandes dans un conteneur déjà démarré, utilisez la commande exec
suivi du conteneur et de la commande:
docker exec ubuntu ls -l
[output]total 64
[output]drwxr-xr-x 2 root root 4096 Dec 2 12:43 bin
[output]drwxr-xr-x 2 root root 4096 Apr 24 2018 boot
[output]...
Il est également possible d'exécuter des commandes en mode interactif. Pour utiliser Bash:
docker exec -it ubuntu /bin/bash
root@5490d4a2996c:/#
Disposer d'un accès via terminal pour un conteneur actif peut s'avérer pratique pour le debug.