Docker - Conteneurs et coquilles

Par défaut, lorsque vous lancez un conteneur, vous utiliserez également un shell commandlors du lancement du conteneur comme indiqué ci-dessous. C'est ce que nous avons vu dans les chapitres précédents lorsque nous travaillions avec des conteneurs.

Dans la capture d'écran ci-dessus, vous pouvez observer que nous avons émis la commande suivante -

sudo docker run –it centos /bin/bash

Nous avons utilisé cette commande pour créer un nouveau conteneur, puis utilisé la commande Ctrl + P + Q pour sortir du conteneur. Cela garantit que le conteneur existe toujours même après notre sortie du conteneur.

Nous pouvons vérifier que le conteneur existe toujours avec le Docker pscommander. Si nous devions sortir directement du conteneur, le conteneur lui-même serait détruit.

Il existe désormais un moyen plus simple de se fixer aux conteneurs et de les sortir proprement sans avoir à les détruire. Une façon d'y parvenir est d'utiliser lensenter commander.

Avant de lancer le nsenter commande, vous devez d'abord installer le nsenterimage. Cela peut être fait en utilisant la commande suivante -

docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

Avant d'utiliser le nsenter commande, nous devons obtenir l'ID de processus du conteneur, car cela est requis par le nsentercommander. Nous pouvons obtenir l'ID de processus via le Dockerinspect command et filtrer via le Pid.

Comme le montre la capture d'écran ci-dessus, nous avons d'abord utilisé le docker pscommande pour voir les conteneurs en cours d'exécution. Nous pouvons voir qu'il existe un conteneur en cours d'exécution avec l'ID ef42a4c5e663.

Nous utilisons ensuite le Docker inspect pour inspecter la configuration de ce conteneur, puis utiliser la commande greppour filtrer simplement l'ID de processus. Et à partir de la sortie, nous pouvons voir que l'ID de processus est 2978.

Maintenant que nous avons l'ID de processus, nous pouvons continuer et utiliser le nsenter commande à attacher au conteneur Docker.

nsenter

Cette méthode permet de s'attacher à un conteneur sans sortir du conteneur.

Syntaxe

nsenter –m –u –n –p –i –t commande containerID

Options

  • -u est utilisé pour mentionner le Uts namespace

  • -m est utilisé pour mentionner le mount namespace

  • -n est utilisé pour mentionner le network namespace

  • -p est utilisé pour mentionner le process namespace

  • -i s pour faire fonctionner le conteneur en mode interactif.

  • -t est utilisé pour connecter les flux d'E / S du conteneur au système d'exploitation hôte.

  • containerID - Il s'agit de l'ID du conteneur.

  • Command - Il s'agit de la commande à exécuter dans le conteneur.

Valeur de retour

Aucun

Exemple

sudo nsenter –m –u –n –p –i –t 2978 /bin/bash

Production

À partir de la sortie, nous pouvons observer les points suivants -

  • L'invite se transforme en bash shell directement lorsque nous émettons le nsenter commander.

  • Nous émettons ensuite le exitcommander. Maintenant normalement si vous n'avez pas utilisé lensentercommande, le conteneur serait détruit. Mais vous remarquerez que lorsque nous exécutons lensenter commande, le conteneur est toujours opérationnel.