5.1 Bases de la commande docker exec
La commande docker exec
— un outil pour interagir avec les conteneurs en cours d'exécution. Elle permet d'exécuter des commandes et d'ouvrir des sessions interactives à l'intérieur d'un conteneur. C'est utile pour les tâches administratives, le débogage et la surveillance. Dans cette conférence, on examine en détail comment utiliser la commande docker exec
, quels paramètres sont disponibles et on donne des exemples de son application pratique.
La commande docker exec
est utilisée pour exécuter des commandes dans un conteneur en cours d'exécution. Grâce à elle, on peut entrer dans un conteneur et interagir avec lui, comme si on travaillait directement avec un serveur.
Syntaxe
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Où :
-
CONTAINER
: le nom ou l'identifiant du conteneur auquel vous voulez accéder. -
COMMAND
: la commande que vous voulez exécuter dans le conteneur. ARG...
: les arguments pour la commande.
Exemple d'utilisation de base
Cet exemple exécutera la commande ls /app
à l'intérieur du conteneur my_container
, ce qui permettra de voir le contenu du répertoire /app
dans le conteneur.
docker exec my_container ls /app
5.2 Paramètres pour la commande docker exec
La commande docker exec prend en charge plusieurs options qui permettent de configurer le comportement des commandes exécutées à l'intérieur du conteneur.
1. Ouverture d'une session interactive
Pour démarrer une session interactive, utilise la combinaison des options -i
(interactive) et -t
(pseudo-TTY)
.
docker exec -it my_container /bin/bash
Dans cet exemple, un terminal interactif Bash
sera ouvert à l'intérieur du conteneur my_container
. Tu pourras exécuter des commandes en temps réel.
2. Exécution de commandes en mode détaché
Si tu dois exécuter une commande à l'intérieur d'un conteneur et ne pas attendre qu'elle se termine, tu peux utiliser l'option -d
(mode détaché).
docker exec -d my_container touch /app/newfile.txt
Dans cet exemple, la commande crée un fichier vide newfile.txt
dans le répertoire /app
du conteneur my_container
. Le contrôle du terminal revient immédiatement après l'exécution de la commande, sans attendre sa fin.
3. Transmission d'un environnement personnalisé
Tu peux passer des variables d'environnement au conteneur à l'aide de l'option -e
.
docker exec -e MY_VAR=value my_container env
Cet exemple transmet la variable d'environnement MY_VAR
au conteneur et lance la commande env
pour afficher toutes les variables d'environnement à l'intérieur du conteneur.
5.3 Exemples d'utilisation
Exemple 1 : Affichage des processus en cours dans le conteneur
Cet exemple va exécuter la commande ps aux
dans le conteneur my_container
et affichera la liste de tous les processus en cours d'exécution.
docker exec my_container ps aux
Exemple 2 : Vérification de l'état d'un service dans le conteneur
Cet exemple va exécuter la commande service nginx status
dans le conteneur my_container
et affichera l'état du service nginx
.
docker exec my_container service nginx status
Exemple 3 : Installation d'un paquet dans le conteneur
Cet exemple mettra à jour la liste des paquets et installera l'éditeur vim
dans le conteneur my_container
.
docker exec my_container apt-get update && apt-get install -y vim
5.4 Scénarios pratiques
1. Administration des containers
La commande docker exec permet aux admins de faire des tâches de maintenance directement dans les containers : modifier des fichiers de config, checker les logs ou changer les permissions des fichiers.
docker exec -it my_container vim /etc/nginx/nginx.conf
2. Débogage des applications
Pendant le dev et les tests des applis, la commande docker exec aide les devs à checker l'état de l'appli, debugger et analyser les erreurs.
docker exec -it my_container python /app/scripts/debug.py
3. Monitoring et diagnostic
Avec docker exec, on peut exécuter des commandes de diagnostic et suivre l'état du container : checker l'utilisation des ressources, les connexions réseau et d'autres métriques.
docker exec my_container top
Cette commande va lancer l'outil top dans le container my_container et afficher l'utilisation actuelle des ressources.
5.5 Recommandations supplémentaires
1. Sécuriser l'accès
Lorsque tu utilises la commande docker exec, c'est super important de penser à la sécurité. Assure-toi que l'accès aux conteneurs est limité et que seuls les utilisateurs autorisés peuvent exécuter des commandes dans les conteneurs.
2. Automatisation des tâches
Tu peux automatiser des tâches répétitives en utilisant des scripts qui exploitent la commande docker exec. Ça te permet de créer des workflows complexes et de simplifier l'administration des conteneurs.
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
Ce script exécutera la commande uptime
sur tous les conteneurs en cours d'exécution et affichera leur durée de fonctionnement.
3. Logs et débogage
Des fois, une commande peut échouer. Dans ces cas, c'est utile de regarder les logs du conteneur pour trouver la cause du problème.
docker logs my_container
GO TO FULL VERSION