Entrez dans le shell d'un conteneur Docker

Isaac Tony 30 janvier 2023
  1. Utilisez docker exec pour entrer dans le shell d’un conteneur Docker
  2. Utilisez docker container attach pour entrer dans le shell d’un conteneur Docker
  3. Utiliser Secure Shell (SSH) pour accéder au shell d’un conteneur Docker
Entrez dans le shell d'un conteneur Docker

Ce didacticiel vous montrera comment accéder au shell du conteneur de Docker de plusieurs manières.

Utilisez docker exec pour entrer dans le shell d’un conteneur Docker

Nous avons besoin d’un conteneur opérationnel pour utiliser cette commande. Nous pouvons vérifier l’état des conteneurs dans notre système à l’aide de la commande ci-dessous.

docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS                    PORTS     NAMES
38086474cb6c   debian    "bash"                   2 days ago   Exited (0) 2 days ago               epic_jackson
1c955bac1a84   ubuntu    "bash"                   2 days ago   Exited (0) 2 days ago               musing_morse
1296f9b9d330   nginx     "/docker-entrypoint.…"   2 days ago   Exited (255) 2 days ago   80/tcp    distracted_napier

Si nous n’avons pas de conteneur en cours d’exécution, nous pouvons facilement en créer un. Nous allons utiliser l’image de base rabbitmq pour mettre en place un conteneur.

Nous allons commencer par extraire l’image de base du registre à l’aide de la commande docker pull avant de créer un conteneur, comme indiqué ci-dessous.

$ docker run -d rabbitmq

Production:

Dcad9f270643802092ab525796897c357026767863dade831e8c7d7d82c45712

Maintenant, nous devrions avoir un conteneur en cours d’exécution. Encore une fois, nous pouvons le vérifier en utilisant la commande docker ps.

$ docker ps -a

Production:

CONTAINER ID   IMAGE      COMMAND                  CREATED              STATUS          PORTS                                                 NAMES
dcad9f270643   rabbitmq   "docker-entrypoint.s…"   About a minute ago   Up 57 seconds   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   inspiring_moore

Nous utiliserons la commande docker exec à côté de la balise -it pour entrer dans le conteneur, interagir avec les fichiers ou effectuer un débogage.

La commande exec nous permettra d’exécuter une commande dans le conteneur en cours d’exécution, tandis que la balise -it nous permettra d’ouvrir le conteneur de manière interactive.

Enfin, la commande sh ouvrira une invite de base du shell pour exécuter nos commandes dans le conteneur.

isaactonyloi@DESKTOP-HV44HT6:~$ docker exec -it dcad9f270643 sh
#

Maintenant que nous sommes entrés dans le conteneur Docker, nous pouvons exécuter diverses commandes à partir du conteneur. Tapez la commande exit et appuyez sur Entrée depuis ce mode pour revenir au terminal principal.

Utilisez docker container attach pour entrer dans le shell d’un conteneur Docker

Nous pouvons également nous connecter à un conteneur en cours d’exécution à l’aide de la commande docker container attach. Cela nous permet d’attacher les flux de sortie, d’entrée et d’erreur du terminal à 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é. Comme mentionné ci-dessus, nous avons besoin d’un conteneur en cours d’exécution pour attacher nos flux de sortie, d’entrée et d’erreur.

Pour cela, nous utiliserons docker ps comme indiqué ci-dessous. Nous utilisons toujours le conteneur rabbitmq de la section précédente.

$ docker ps -a

Production:

CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
dcad9f270643   rabbitmq   "docker-entrypoint.s…"   39 minutes ago   Up 38 minutes   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   inspiring_moore

Dans le cas où le conteneur docker s’est arrêté, alors, dans ce cas, nous devons d’abord le démarrer en utilisant la commande docker start comme nous l’avons fait ici.

$ docker start dcad9f270643
dcad9f270643

Maintenant, si le conteneur docker ne fonctionne pas comme prévu, nous pouvons exécuter le docker container attach pour voir ce qui se passe dans le conteneur.

$ docker container attach dcad9f270643

Production:

2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> Server startup complete; 3 plugins started.
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_prometheus
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_web_dispatch
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_management_agent

Utiliser Secure Shell (SSH) pour accéder au shell d’un conteneur Docker

Enfin, nous pouvons également utiliser le shell sécurisé, communément abrégé en SSH, pour exécuter des commandes dans un conteneur. Cependant, c’est la méthode la moins recommandée en raison de l’inflation qu’elle provoque sur l’image de base et des problèmes de configuration que nous pouvons rencontrer.

De plus, cette méthode pose un problème de sécurité puisque nous devrons gérer nous-mêmes les clés. Nous devons également tenir compte du fait que certaines images peuvent ne pas prendre en charge intrinsèquement cette méthode et peuvent donc nécessiter une configuration supplémentaire.

Cependant, si nous devons utiliser cette méthode, nous devons suivre ces étapes.

  • Nous devons d’abord installer et activer le service SSH.
  • Ensuite, il faut récupérer l’adresse IP du conteneur.
  • Enfin, nous nous connectons en SSH au conteneur en utilisant l’adresse IP récupérée.
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