Lancer le terminal Bash dans le nouveau conteneur Docker

Isaac Tony 23 aout 2022
  1. Utiliser le shell interactif Bash
  2. Utilisez la commande docker exec
  3. Utilisez la commande docker attach
Lancer le terminal Bash dans le nouveau conteneur Docker

Les conteneurs Docker sont l’unité standard pour empaqueter toutes les dépendances de nos applications, ce qui nous permet de les exécuter facilement dans n’importe quel environnement. Les conteneurs sont devenus très populaires récemment, et la plupart des développeurs s’appuient désormais fortement sur les conteneurs pour gérer leurs applications et leurs dépendances.

Docker nous offre plusieurs façons d’accéder à une instance de shell en lançant un terminal bash dans un conteneur Docker. Ceci est particulièrement utile lors de l’exécution de certaines commandes à l’intérieur du conteneur docker.

En outre, cela peut également être pour des raisons de débogage, ou peut-être souhaitez-vous vérifier si tout est correctement configuré. Cet article explore différentes méthodes que nous pouvons utiliser pour faire cela pour exécuter des conteneurs et des conteneurs qui ne sont pas en cours d’exécution.

Utiliser le shell interactif Bash

Bash est un processeur de commandes commun aux systèmes Linux qui permet aux utilisateurs de taper des commandes qui provoquent des actions. Si vous avez eu une interaction avec des systèmes basés sur Unix ou le WSL, vous pouvez interagir avec diverses commandes via bash.

De même, nous pouvons également accéder directement au terminal Linux dans un conteneur docker et exécuter des commandes comme nous le ferions avec le bash Linux normal. L’un des avantages de cette méthode est que nous pouvons le faire avec un conteneur qui ne s’exécute pas, contrairement à d’autres commandes telles que la commande docker exec.

Comme indiqué ci-dessous, nous utiliserons l’image officielle rabbitmq du registre Docker pour créer un conteneur Docker et accéder directement au bash dans le conteneur. Vous pouvez le faire avec n’importe quelle autre commande ; vous voulez vous assurer d’avoir l’image au préalable.

docker pull rabbitmq
docker images

Maintenant que nous avons les images, nous pouvons créer le conteneur Docker de manière interactive. Cela signifie que nous pouvons exécuter des commandes à l’intérieur du conteneur Docker tout en continuant à fonctionner, comme indiqué ci-dessous.

$ docker run -it rabbitmq bash

Production:

root@f418a3286aae:/#

Comme vous pouvez le voir, nous sommes maintenant dans le conteneur Docker et nous avons réussi à exécuter le bash dans le nouveau conteneur. Maintenant, nous pouvons exécuter nos commandes comme si nous travaillions avec le vrai terminal.

Par exemple, nous pouvons répertorier les fichiers et répertoires à l’intérieur de ce conteneur, comme indiqué ci-dessous.

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  usr  var
root@f418a3286aae:/#

Utilisez la commande docker exec

Alternativement, nous pouvons également utiliser la commande docker exec pour exécuter le bash dans un nouveau conteneur Docker. Cependant, contrairement à la méthode précédente, cette commande nécessite que le conteneur soit déjà en cours d’exécution ; sinon, la commande ne fonctionnera pas.

Utilisez la commande docker ps -a pour confirmer que notre conteneur est en cours d’exécution. Si le conteneur que vous souhaitez utiliser n’est pas en cours d’exécution, vous pouvez le démarrer à l’aide de la commande docker start suivie de l’identifiant ou du nom du conteneur.

docker ps

Nous utiliserons la commande docker exec à côté de la balise -it. La commande exec nous permet d’exécuter une commande dans le conteneur en cours d’exécution, tandis que la balise -it nous permet d’ouvrir le conteneur de manière interactive.

Nous pouvons exécuter cela comme indiqué ci-dessous.

$ docker exec -it f418a3286aae bash

Production:

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys tmp  tonyloi  usr  var

Maintenant que nous avons lancé bash avec succès dans ce conteneur Docker, nous pouvons exécuter diverses commandes à partir du conteneur. Nous pouvons également utiliser sh pour les conteneurs qui n’ont pas de bash.

Il s’agit également d’une commande qui ouvrira une invite de base du shell où nous pourrons exécuter nos commandes dans le conteneur.

$ docker exec -it f418a3286aae sh

Production:

# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var

Utilisez la commande docker attach

Nous pouvons également lancer bash dans un conteneur docker en cours d’exécution à l’aide de la commande docker attach. Cela nous permet d’attacher les flux d’entrée, de sortie et d’erreur standard locaux à un conteneur en cours d’exécution à l’aide de l’ID du conteneur.

Nous pouvons ensuite exécuter diverses commandes, accepter les entrées et déboguer le conteneur spécifié. Nous avons besoin d’un conteneur en cours d’exécution pour attacher nos flux de sortie, d’entrée et d’erreur.

Nous pouvons implémenter cela en utilisant le nom ou l’identifiant du conteneur, comme indiqué ci-dessous.

Code:

$ docker container attach f418a3286aae

Production:

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var
root@f418a3286aae:/#
Auteur: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn