HOWTO · Docker

Comment lancer le terminal Bash dans un nouveau conteneur Docker

Ce tutoriel montre comment lancer le terminal bash dans de nouveaux conteneurs Docker.

Sur cette page

Pour ouvrir Bash dans un conteneur Docker, choisissez la commande en fonction de l’état du conteneur. Utilisez docker run -it IMAGE bash pour démarrer un nouveau conteneur avec une session Bash interactive. Utilisez docker exec -it CONTAINER bash pour démarrer une session Bash séparée dans un conteneur déjà en cours d’exécution. Utilisez docker attach CONTAINER uniquement lorsque vous souhaitez connecter votre terminal au processus principal du conteneur ; cela ne démarre pas un autre shell.

Remplacez IMAGE par une image disponible pour Docker et contenant Bash. Remplacez CONTAINER par le nom ou l’ID d’un conteneur en cours d’exécution. Les commandes ci-dessous sont des modèles de syntaxe : leurs espaces réservés doivent être remplacés, et elles ne sont pas présentées comme une sortie exécutée.

Utiliser le shell interactif Bash

Utilisez docker run -it IMAGE bash lorsque vous voulez un nouveau conteneur et une invite Bash interactive à l’intérieur. L’option -i maintient l’entrée standard ouverte et -t alloue un terminal, ce qui fait que la session se comporte comme une ligne de commande interactive. bash est la commande que Docker démarre dans le nouveau conteneur.

Par exemple, remplacez IMAGE par un nom d’image dans docker run -it IMAGE bash. L’image doit inclure Bash ; une image minimale peut ne fournir que sh ou un autre shell. Cette commande crée et démarre un conteneur, elle diffère donc de l’ouverture d’un shell dans un conteneur qui existe déjà. Si vous souhaitez réutiliser un conteneur arrêté, démarrez-le d’abord, puis utilisez docker exec une fois qu’il est en cours d’exécution.

Utiliser la commande docker exec

Utilisez docker exec -it CONTAINER bash pour démarrer Bash en tant que nouveau processus dans un conteneur déjà en cours d’exécution. docker exec ne démarre pas un conteneur arrêté. Pour trouver les noms et les ID des conteneurs en cours d’exécution, utilisez docker ps ; utilisez docker ps -a lorsque vous avez aussi besoin de voir les conteneurs arrêtés. Démarrez le conteneur arrêté souhaité avec docker start CONTAINER, puis exécutez la commande docker exec.

Si Bash n’est pas installé dans l’image, essayez docker exec -it CONTAINER sh lorsque l’image fournit sh. La commande de shell doit exister dans le conteneur. Les deux formes de docker exec créent un processus interactif séparé, elles sont donc utiles pour l’inspection ou le dépannage pendant que le processus principal du conteneur continue de s’exécuter.

Utiliser la commande docker attach

Utilisez docker attach CONTAINER pour connecter les flux d’entrée et de sortie de votre terminal au processus principal d’un conteneur en cours d’exécution. C’est utile lorsque ce processus fournit déjà la session interactive dont vous avez besoin. Par exemple, si le conteneur a été démarré avec un shell comme processus principal, attach vous reconnecte à ce processus.

Attach ne lance ni Bash ni aucune autre nouvelle commande. Si le processus principal du conteneur est une application, attach se connecte aux flux de cette application ; cela ne vous donne pas d’invite de shell séparée. Choisissez docker exec -it CONTAINER bash (ou sh si disponible) lorsque vous devez lancer un shell à côté du processus principal. En résumé : docker run démarre un nouveau conteneur, docker exec démarre une commande dans un conteneur en cours d’exécution, et docker attach se connecte au processus principal existant.