GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment exécuter une commande sur un conteneur Docker en cours d'exécution

Habituellement, vous voulez que les applications Docker soient entièrement contenues, mais parfois, à des fins de développement ou d'automatisation, il est utile de pouvoir travailler avec des conteneurs Docker comme s'il y avait des machines virtuelles Linux. Docker fournit des outils pour exécuter des commandes et même des shells entiers à l'intérieur de conteneurs.

Exécuter des commandes dans des conteneurs

Pour exécuter une commande dans un conteneur, vous aurez besoin de son ID de conteneur, sauf si vous avez défini un nom spécifique pour ce conteneur. Il s'agit d'une longue chaîne hexadécimale que vous pouvez trouver dans la liste des processus Docker :

docker ps

Ensuite, vous pouvez utiliser le exec -it commande à exécuter à l'intérieur du conteneur. Par exemple, afficher la sortie d'un fichier journal :

docker exec -it containerID tail /var/log/nginx/access.log

Vous pouvez également exécuter des scripts dans des conteneurs :

docker exec -it containerID script.sh

Le -it les drapeaux sont respectivement pour le « mode interactif » et le TTY, et sont utilisés presque tout le temps. Il existe quelques autres indicateurs que vous pouvez utiliser :

  • --workdir ou -w change le répertoire courant avant la commande.
  • --detach , ou -d , exécute la commande en arrière-plan.
  • --env , ou -e , définit les variables d'environnement avant l'exécution.
  • --env-file fait la même chose, mais est plus sûr pour la gestion des secrets.
  • --privileged exécute la commande avec des autorisations étendues.
  • --user s'exécute en tant qu'utilisateur différent

Bien sûr, cela ne fonctionne que sur un conteneur en cours d'exécution. Si vous souhaitez suspendre un conteneur pour effectuer la maintenance, vous devrez soit déployer des mises à jour via une nouvelle version d'image, soit apporter des modifications aux données montées sur volume à partir du système d'exploitation hôte.

Se connecter en SSH à un conteneur

Vous n'êtes pas limité à de simples commandes, vous pouvez en fait ouvrir un shell en exécutant /bin/bash comme la commande. Vous serez peut-être limité dans les outils disponibles (la plupart des conteneurs proposent une installation Linux assez simple), mais cela facilite grandement l'exécution de nombreuses commandes.

docker exec -it containerID /bin/bash

Il s'agit simplement d'un shell accessible depuis l'hôte, qui fonctionne bien dans la plupart des cas. Mais, si vous le souhaitez, vous pouvez configurer vos conteneurs pour qu'ils soient entièrement disponibles via SSH, comme un VPS. Vous pouvez en savoir plus sur la configuration dans notre guide pour exécuter un service SSH dans un conteneur Docker.

CONNEXE : Comment se connecter en SSH à un conteneur Docker

Copier des fichiers vers et depuis des conteneurs

Exécuter des commandes avec exec -it fonctionne, mais il y a toujours une couche entre l'hôte et le conteneur qui empêche la création de scripts faciles. D'une part, s'il est facile d'envoyer des commandes à un conteneur, il est plus difficile d'obtenir la sortie du système de fichiers.

Bien que vous puissiez diriger le STDOUT de exec -it vers d'autres services sur le système d'exploitation hôte, vous pouvez également copier des fichiers vers et depuis le système de fichiers du conteneur. Par exemple, extraire un fichier journal et le coller sur l'hôte :

docker cp container:/var/log/nginx/example.log example.log

Ou en extrayant des répertoires entiers :

docker cp nginx:/etc/nginx/ nginxconfig/

Si vous le faites régulièrement, vous pouvez envisager d'utiliser une liaison ou un montage de volume pour rendre les données directement accessibles depuis l'hôte.

CONNEXE : Comment utiliser Docker Cp pour copier des fichiers entre l'hôte et les conteneurs


Docker
  1. Comment exécuter une commande dans un conteneur Systemd en cours d'exécution ?

  2. Comment exécuter un programme dans un conteneur Docker ?

  3. Comment exécuter MySQL dans un conteneur Docker

  4. Comment se connecter en SSH à un conteneur Docker

  5. Comment envoyer un signal au programme exécuté dans un conteneur Docker ?

Comment exécuter une application .NET dans Docker

Comment vérifier si le démon Docker ou un conteneur est en cours d'exécution

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Comment créer une image Docker à partir d'un conteneur en cours d'exécution

Comment exécuter des conteneurs Docker