Docker exec dans le conteneur comme racine

Docker exec dans le conteneur comme racine
Docker est un puissant outil de contenerisation qui permet aux utilisateurs de créer des applications isolées et autonomes. Les conteneurs Docker transportent le système d'exploitation de base, les applications et tous les packages requis. Par conséquent, dans certains cas, nous devons avoir accès au shell de systèmes, exécuter des commandes et effectuer des configurations personnalisées. Heureusement, Docker nous fournit la fonctionnalité pour exécuter les commandes dans les conteneurs en cours d'exécution.

Ce tutoriel vise à vous montrer comment travailler avec la commande docker exec pour exécuter des commandes dans des conteneurs en cours d'exécution.

Utilisation de base

Travailler avec Docker Exec est très simple. Nous commençons par appeler la commande docker exec suivie du nom ou de l'ID du conteneur et de la commande à exécuter.

Par exemple, pour exécuter la commande echo dans le conteneur Debian, nous utilisons la commande comme:

$ docker exec debian echo bonjour

La commande engendre un shell du conteneur Debian et exécute la commande echo. Un exemple de sortie apparaît ci-dessous:

Pour obtenir le nom ou un ID des conteneurs en cours d'exécution, utilisez la commande:

$ docker ps

Options de docker

La commande docker exec prend en charge diverses options pour modifier la fonctionnalité des commandes. Il prend en charge les fonctions suivantes.

  • -I - Cette option garde le stdin.
  • -t - engendre un pseudo tty
  • -u - Spécifie le nom d'utilisateur ou l'UID.
  • -W - Répertoire de travail
  • -P - alloue les privilèges prolongés à la commande.
  • -D - fonctionne en mode détaché.
  • -E - Définit les variables d'environnement.

Docker exec sh

Dans la plupart des cas, nous avons besoin d'une instance de shell dans le conteneur pour exécuter les commandes brutes. Pour ce faire, nous utilisons la commande docker exec.

$ docker exec debian -i -t / bin / bash

La commande ci-dessus lance un shell interactif. Il est bon de s'assurer que Bash exécutable existe avant la commande en cours d'exécution.

Si Bash ou un shell que vous souhaitez utiliser n'est pas disponible, utilisez SH dans la commande ci-dessous:

$ docker exec -it / bin / sh

Comme vous pouvez le voir, vous avez une session de shell interactive où vous pouvez exécuter des commandes.

Exec comme racine

Pour exécuter la commande en tant que racine, utilisez l'option -u. L'option nécessite un nom d'utilisateur ou un UID de l'utilisateur. Par exemple:

$ docker exec -u 0 debian whoami
$ root

Dans la commande ci-dessus, nous utilisons l'UID de l'utilisateur racine pour exécuter la commande whoami comme racine.

Pour utiliser le nom d'utilisateur au lieu de l'utilisateur UID, utilisez la commande:

$ docker exec -u root debian whoami
$ root

La commande ci-dessus peut vous aider lorsque vous souhaitez dépanner ou effectuer des tâches qui nécessitent des privilèges élevés.

Conclusion

C'est tout pour la commande docker exec.

Nous avons discuté de l'utilisation de Docker Exec pour exécuter les commandes dans vos conteneurs en cours d'exécution et de frayer une session Shell. Enfin, nous avons couvert comment exécuter les commandes comme racine en utilisant le nom d'utilisateur et l'UID.