Comment utiliser la commande docker container attach pour interagir avec des conteneurs en cours d'exécution

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce lab, vous apprendrez à utiliser la commande docker container attach pour interagir avec des conteneurs en cours d'exécution. Vous démarrerez des conteneurs en mode détaché (detached), vous y connecterez pour observer leur sortie, et vous vous détacherez en utilisant la séquence de touches par défaut.

Vous explorerez également la connexion à des conteneurs avec TTY activé et apprendrez comment remplacer la séquence de touches par défaut pour plus de flexibilité lors de l'interaction avec vos conteneurs Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/attach("Attach to Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555103{{"Comment utiliser la commande docker container attach pour interagir avec des conteneurs en cours d'exécution"}} docker/ps -.-> lab-555103{{"Comment utiliser la commande docker container attach pour interagir avec des conteneurs en cours d'exécution"}} docker/attach -.-> lab-555103{{"Comment utiliser la commande docker container attach pour interagir avec des conteneurs en cours d'exécution"}} docker/pull -.-> lab-555103{{"Comment utiliser la commande docker container attach pour interagir avec des conteneurs en cours d'exécution"}} end

Démarrer un conteneur en mode détaché exécutant une commande simple

Dans cette étape, vous apprendrez comment démarrer un conteneur Docker en mode détaché (detached). Lorsqu'un conteneur s'exécute en mode détaché, il fonctionne en arrière-plan et l'interface CLI de Docker ne se connecte pas aux flux d'entrée standard, de sortie ou d'erreur du conteneur. Ceci est utile pour exécuter des services ou applications de longue durée.

Nous utiliserons l'image ubuntu pour exécuter une commande simple qui affiche un message puis se termine. Tout d'abord, téléchargeons l'image ubuntu pour nous assurer qu'elle est disponible localement.

docker pull ubuntu

Maintenant, démarrons un conteneur en mode détaché en utilisant la commande docker run avec l'option -d. Nous exécuterons une simple commande echo qui affiche "Hello from detached container!" puis se termine.

docker run -d ubuntu echo "Hello from detached container!"

Après l'exécution de la commande, Docker affichera l'ID du conteneur. Cela indique que le conteneur a été démarré en mode détaché. Vous pouvez vérifier que le conteneur est en cours d'exécution (ou a terminé sa tâche) en utilisant la commande docker ps -a, qui affiche tous les conteneurs, y compris ceux qui se sont terminés.

docker ps -a

Vous devriez voir une entrée pour le conteneur que vous venez de démarrer. La colonne STATUS indiquera si le conteneur est toujours en cours d'exécution ou s'est terminé. Comme notre commande est très courte, le conteneur sera probablement déjà terminé lorsque vous exécuterez docker ps -a.

Se connecter à un conteneur en cours d'exécution et observer sa sortie

Dans l'étape précédente, nous avons démarré un conteneur en mode détaché. Bien que le conteneur ait exécuté une commande simple et se soit probablement terminé rapidement, nous pouvons toujours nous y connecter pour voir sa sortie. La commande docker attach permet de se connecter aux flux d'entrée standard, de sortie et d'erreur d'un conteneur en cours d'exécution ou terminé.

Commencez par récupérer l'ID du conteneur démarré précédemment. Utilisez la commande docker ps -a et recherchez le conteneur exécutant la commande echo. Copiez l'ID du conteneur.

docker ps -a

Maintenant, utilisez la commande docker attach suivie de l'ID du conteneur pour vous y connecter.

docker attach <container_id>

Remplacez <container_id> par l'ID réel de votre conteneur. Comme le conteneur a exécuté une simple commande echo et s'est terminé, vous ne verrez peut-être aucune sortie immédiatement, ou vous pourriez voir le message "Hello from detached container!" si la sortie est encore en mémoire tampon. La commande attach vous connectera aux flux du conteneur. Comme le conteneur a déjà terminé sa tâche, la commande attach se terminera probablement juste après la connexion.

Pour démontrer la connexion à un conteneur qui reste actif, démarrons un nouveau conteneur en mode détaché exécutant une commande qui le maintient en vie pendant quelques secondes. Nous utiliserons à nouveau l'image ubuntu avec la commande sleep 10.

docker run -d ubuntu sleep 10

Récupérez l'ID de ce nouveau conteneur avec docker ps. Cette fois, le conteneur devrait être dans l'état Up.

docker ps

Maintenant, connectez-vous à ce conteneur en cours d'exécution en utilisant son ID.

docker attach <new_container_id>

Remplacez <new_container_id> par l'ID du conteneur exécutant sleep 10. Vous serez connecté aux flux standards du conteneur. Comme la commande sleep ne produit aucune sortie, vous ne verrez rien. Le terminal semblera en attente. Le conteneur s'exécutera pendant 10 secondes avant de se terminer. Lorsque le conteneur se terminera, la commande attach se terminera également, vous ramenant à l'invite de commande.

Se détacher d'un conteneur en utilisant la séquence de touches par défaut

Dans l'étape précédente, vous vous êtes connecté à un conteneur en cours d'exécution. Lorsque vous êtes attaché à un conteneur, vous êtes connecté à ses flux d'entrée standard, de sortie et d'erreur. Pour vous détacher du conteneur sans l'arrêter, vous pouvez utiliser une séquence de touches spéciale. Par défaut, cette séquence est CTRL+p suivi de CTRL+q.

Démarrons un nouveau conteneur en mode détaché qui s'exécutera plus longtemps pour vous permettre de pratiquer la détache. Nous utiliserons l'image ubuntu avec la commande sleep 60.

docker run -d ubuntu sleep 60

Récupérez l'ID de ce nouveau conteneur avec docker ps.

docker ps

Maintenant, connectez-vous à ce conteneur en cours d'exécution en utilisant son ID.

docker attach <container_id>

Remplacez <container_id> par l'ID du conteneur exécutant sleep 60. Vous êtes maintenant attaché au conteneur. Pour vous détacher et revenir à l'invite de commande sans arrêter le conteneur, appuyez sur la séquence de touches suivante :

  1. Maintenez la touche CTRL enfoncée, puis appuyez sur la touche p. Relâchez les deux touches.
  2. Maintenez la touche CTRL enfoncée, puis appuyez sur la touche q. Relâchez les deux touches.

Après avoir appuyé sur CTRL+p suivi de CTRL+q, vous devriez revenir à votre invite de commande. Le conteneur continuera à s'exécuter en arrière-plan. Vous pouvez vérifier que le conteneur est toujours actif avec docker ps.

docker ps

Vous devriez voir le conteneur exécutant sleep 60 listé avec un statut Up.

Démarrer un autre conteneur détaché avec TTY activé

Dans cette étape, nous allons démarrer un autre conteneur en mode détaché, mais cette fois en activant un pseudo-TTY (Terminal) pour le conteneur. L'activation d'un TTY est souvent nécessaire lorsque vous souhaitez interagir avec le shell d'un conteneur ou exécuter des commandes nécessitant un terminal.

Nous utiliserons la commande docker run avec le flag -d pour le mode détaché et le flag -t pour allouer un pseudo-TTY. Nous exécuterons une commande simple qui maintient le conteneur actif, comme sleep 60.

docker run -d -t ubuntu sleep 60

Le flag -t alloue un pseudo-TTY, qui est un terminal virtuel permettant d'interagir avec le conteneur comme si vous étiez connecté à un terminal physique. Bien que le conteneur s'exécute en mode détaché (-d), l'activation d'un TTY est importante pour les processus interactifs ou lorsque vous prévoyez de vous connecter ultérieurement au conteneur et avez besoin d'un environnement terminal.

Après l'exécution de la commande, Docker affichera à nouveau l'ID du conteneur, indiquant que le conteneur a été démarré en mode détaché avec un TTY. Vous pouvez vérifier que le conteneur est en cours d'exécution avec docker ps.

docker ps

Vous devriez voir le nouveau conteneur listé avec un statut Up. Notez l'ID du conteneur, car vous en aurez besoin à l'étape suivante pour vous y connecter.

Se connecter à un conteneur avec TTY activé et se détacher en utilisant la séquence de touches par défaut

Dans l'étape précédente, nous avons démarré un conteneur détaché avec TTY activé. Maintenant, nous allons nous y connecter et pratiquer la détache en utilisant la séquence de touches par défaut (CTRL+p suivi de CTRL+q). Se connecter à un conteneur avec TTY permet d'avoir des sessions interactives, même si la commande initiale n'en nécessite pas.

D'abord, récupérez l'ID du conteneur démarré précédemment qui exécute sleep 60 avec TTY activé.

docker ps

Trouvez l'ID du conteneur ubuntu exécutant sleep 60.

Maintenant, connectez-vous à ce conteneur en utilisant la commande docker attach suivie de l'ID du conteneur.

docker attach <container_id>

Remplacez <container_id> par l'ID réel de votre conteneur. Vous êtes maintenant connecté aux flux standards du conteneur, et comme un TTY est activé, vous avez une interface similaire à un terminal. Bien que la commande sleep ne nécessite pas d'interaction, vous êtes connecté au terminal virtuel du conteneur.

Pour vous détacher du conteneur sans l'arrêter, utilisez la séquence de détache par défaut :

  1. Maintenez la touche CTRL enfoncée, puis appuyez sur la touche p. Relâchez les deux touches.
  2. Maintenez la touche CTRL enfoncée, puis appuyez sur la touche q. Relâchez les deux touches.

Vous devriez revenir à votre invite de commande. Le conteneur continuera à s'exécuter en arrière-plan jusqu'à ce que la commande sleep 60 se termine. Vous pouvez vérifier que le conteneur est toujours actif avec docker ps.

docker ps

Vous devriez voir le conteneur exécutant sleep 60 listé avec un statut Up.

Se connecter à un conteneur et modifier la séquence de détachement

Dans cette dernière étape, vous apprendrez comment modifier la séquence de touches par défaut pour se détacher d'un conteneur. Cela peut être utile si la séquence par défaut entre en conflit avec d'autres applications ou si vous préférez une autre combinaison de touches.

Nous utiliserons la commande docker attach avec l'option --detach-keys pour spécifier une séquence différente. Le format de l'option --detach-keys est séquence, où séquence est une chaîne de caractères séparée par des virgules représentant les combinaisons de touches. Par exemple, ctrl-a,ctrl-d définirait la séquence de détachement comme CTRL+a suivi de CTRL+d.

D'abord, démarrons un nouveau conteneur détaché avec TTY activé qui s'exécutera pendant un certain temps.

docker run -d -t ubuntu sleep 60

Obtenez l'ID de ce nouveau conteneur avec docker ps.

docker ps

Maintenant, connectez-vous à ce conteneur, mais cette fois-ci en spécifiant une séquence de détachement différente à l'aide de l'option --detach-keys. Utilisons ctrl-a,d comme nouvelle séquence. Cela signifie que vous devrez appuyer sur CTRL+a puis sur d pour vous détacher.

docker attach --detach-keys="ctrl-a,d" <container_id>

Remplacez <container_id> par l'ID réel de votre conteneur. Vous êtes maintenant connecté au conteneur. Pour vous détacher en utilisant la nouvelle séquence :

  1. Maintenez la touche CTRL enfoncée, puis appuyez sur a. Relâchez les deux touches.
  2. Appuyez sur la touche d.

Vous devriez revenir à votre invite de commande. Le conteneur continuera à s'exécuter en arrière-plan. Vous pouvez vérifier que le conteneur est toujours actif avec docker ps.

docker ps

Vous devriez voir le conteneur exécutant sleep 60 listé avec un statut Up.

Résumé

Dans ce lab, vous avez appris à démarrer un conteneur Docker en mode détaché en utilisant la commande docker run -d, ce qui permet aux conteneurs de s'exécuter en arrière-plan sans être connectés au terminal. Vous avez ensuite pratiqué l'utilisation de la commande docker attach pour vous connecter aux flux standards d'un conteneur en cours d'exécution ou terminé afin d'observer sa sortie.

De plus, vous avez exploré comment vous détacher d'un conteneur attaché en utilisant la séquence de touches par défaut (CTRL+p CTRL+q) et comment le comportement de docker attach change lorsque le conteneur est démarré avec TTY activé (-t). Enfin, vous avez appris à remplacer la séquence de détachement par défaut lors de la connexion à un conteneur, offrant ainsi une plus grande flexibilité dans la gestion de vos interactions avec les conteneurs.