Entrez dans le shell d'un conteneur Docker
-
Utilisez
docker exec
pour entrer dans le shell d’un conteneur Docker -
Utilisez
docker container attach
pour entrer dans le shell d’un conteneur Docker - Utiliser Secure Shell (SSH) pour accéder au 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.
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