
Commandes utiles pour Docker
Les commandes qui suivent peuvent sûrement être mieux écrites et/ou améliorées. J’ai constitué cette liste au gré de mes expériences.
Cycle de vie des containers Docker
Il est parfois très utile d’avoir une visualisation des ressources utilisées par les containers. Ainsi cette commande me permet d’avoir les statistiques d’utilisation des mémoires vives et CPU des containers actifs sur la machine courante :
1 |
sudo docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" |
Lorsque j’ai besoin d’arrêter tous les containers d’un coup, je fais la commande qui suit :
1 |
sudo docker stop $(sudo docker ps -a -q) |
Et quand j’ai besoin de tous les supprimer :
1 |
sudo docker rm $(sudo docker ps -a -q) |
Docker prend pas mal de place et il faut parfois faire le ménage. C’est pourquoi je lance la commande qui suit pour supprimer tous les container arrêtés :
1 |
CTN=$(sudo docker ps -a | grep "Exited" | awk '{print $1}'); sudo docker stop $CTN; sudo docker rm $CTN |
Une autre commande que j’utilise pour faire le ménage me permet d’enlever les images taguées en « <none> » :
1 |
sudo docker rmi $(sudo docker images | grep "^<none>" | awk '{print $3}') |
Enfin, je termine toujours le ménage avec les commandes officielles de docker pour supprimer les images inutiles :
1 |
docker image prune -a |
Il existe aussi une commande docker qui a un impact plus large. En effet il supprime l’intégralité des images non utilisées, des containers non utilisés, mais aussi les réseaux non utilisés :
1 |
docker system prune |
A l’intérieur des containers de Docker
Quand les choses ne fonctionnent pas correctement, je vais toujours jeter un oeil sur les logs d’un container avec la commande suivante :
1 |
sudo docker logs --tail=all --follow {nom du container ou l'id} |
Il existe des moments ou il faut rentrer dans le container pour approfondir l’investigation d’un problème. Pour cela j’utilise l’une des deux commandes en fonction du container :
- Si le container est très léger et que le container exécute une commande bash, docker permet de s’attacher au process bash dans le container :
1sudo docker attach --sig-proxy=false {id du container} - Si le lancement d’un autre processus n’est pas gênant :
1sudo docker exec -i -t {containerID} /bin/bash
Il peut être utile de récupérer l’adresse IP locale d’un container. C’est possible grâce à la commande suivante :
1 |
sudo docker inspect -f "{{.NetworkSettings.IPAddress}}" {container id ou nom} |
Docker-compose
Si vous utilisez docker-compose, il faut parfois supprimer et reconstruire juste un container de la grappe. Ainsi, cette commande facilite cette tâche :
1 |
CTN='{nom du container dans le fichier docker-compose}'; sudo docker-compose rm $CTN && sudo docker-compose build --no-cache $CTN |