13. Administrer ses conteneurs - Docker
Maintenant que nous avons déployé plusieurs conteneurs simultanément avec Docker Compose, regardons comment administrer des conteneurs. En effet, pour maîtriser Docker, il faut pouvoir être à l'aise avec son environnement, pouvoir relancer un conteneur en appliquant les modifications effectuées, supprimer les ressources crées par Docker sur la machine hôte etc... C'est ce que nous allons voir dans ce cours.
La relance
Lancer un conteneur, l'arrêter, le supprimer, le créer à nouveau. Cela fait parti des tâches les plus couramment exécutées et c'est pour cela qu'il faut bien les maîtriser.
Prenons le cas d'une modification dans le fichier docker-compose.yml
, pour sa bonne prise en compte, il arrive parfois que la commande docker-compose restart <nom du conteneur>
ne suffise pas.
Pour nettoyer l'environnement de Docker Compose en supprimant tous les conteneurs, réseaux et volumes associés à l'application et tout recréer, il existe la commande suivante qui est bien efficace :
docker-compose down && docker-compose up -d
Vous aurez un environnement clean après cette commande.
Le stockage
Avec Docker, on ne se rends parfois pas compte de l'espace disque que l'on utilise. Par exemple, utiliser le tag latest
permet d'avoir l'image la plus récente à disposition mais cela accumule une nouvelle image à chaque mise à jour, ce qui peut parfois saturer l'espace disque.
Pour avoir une idée plus précise de l'espace disque occupé par Docker, il faut exécuter la commande suivante :
docker system df
Exemple de retour :
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 41 11 19.83GB 18.15GB (91%)
Containers 12 2 383.9MB 383.7MB (99%)
Local Volumes 173 8 5.19GB 2.441GB (47%)
Build Cache 40 0 1.265kB 1.265kB
On peut voir sur cet exemple que ce sont les images Docker qui consomment le plus d'espace disque.
Pour supprimer les images Docker inutilisées, les layers en cache, les conteneurs arrêtés ainsi que les networks inutilisés, il suffit d'exécuter la commande suivante :
docker system prune
-a
qui va supprimer toutes les images qui ne sont pas actuellement utilisées.Il est aussi possible de supprimer les volumes Docker inutilisés avec la commande suivante :
docker volume prune
Les exports
Il est possible d'exporter le contenu du filesystem d'un conteneur. Vous aurez au final une archive tar
avec le contenu de votre conteneur sans les volumes. Cela peut vous servir notamment lorsque vous souhaitez sauvegarder votre conteneur autrement qu'avec des volumes, pour pouvoir le transférer d'un serveur à un autre, vers le Cloud etc...
Cela sert également à analyser son contenu à des fins de debug, vérifier les fichiers qui ont été crées par Docker etc...
Pour exporter un conteneur Docker, il faut exécuter la commande suivante :
docker export --output="archive.tar" CONTAINER_NAME
Comme il est possible d'exporter un conteneur, vous vous doutez bien qu'il est aussi possible d'exporter une image Docker.
Cela est utile dans un contexte où l'on souhaite transférer une image Docker d'un environnement à un autre, sans passer par une registry par exemple. Le format de l'image sauvegardée est aussi au format tar
.
Pour sauvegarder une image Docker, exécutez la commande suivante :
docker save monimage -o monimage.tar
Pour charger l'image Docker précédemment sauvegardée, exécutez la commande suivante :
docker load -i monimage.tar
Ainsi, vous n'aurez pas besoin d'effectuer une nouvelle fois l'étape de build de l'image si vous la transférez de cette manière.
Continuons sur l'administration de nos conteneurs avec le monitoring que nous aborderons dans le prochain cours.