Dois-je m’inquiéter des conteneurs Docker excédentaires, non fonctionnels?

Chaque commande d’ docker run ou chaque commande RUN un fichier Docker crée un conteneur. Si le conteneur ne fonctionne plus, il peut toujours être vu avec docker ps -a .

Dois-je m’inquiéter d’avoir une liste énorme de conteneurs non-exécutables? Dois-je émettre docker rm sur des conteneurs qui ne fonctionnent pas?

Je ne suis pas certain de la performance ou de la mémoire / des pénalités de stockage que ces conteneurs inutilisés encourent.

Les conteneurs qui ne sont pas en cours d’exécution ne prennent aucune ressource système en dehors de l’espace disque.

Il est généralement bon de faire le ménage après vous-même, mais si vous en avez beaucoup, cela ne devrait pas ralentir les performances du tout.

Si vous constatez un ralentissement lors de l’exécution de commandes docker avec beaucoup de conteneurs arrêtés, cela peut être un bogue dans docker, et vous devez soumettre un bogue.

La documentation d’ docker run décrit comment nettoyer automatiquement le conteneur et supprimer le système de fichiers lorsque le conteneur se ferme:

  --rm=false: Automatically remove the container when it exits (incompatible with -d) 

Ce qui précède montre que les conteneurs par défaut ne sont pas supprimés, mais que l’ajout de --rm=true ou simplement de la main courte --rm fonctionnera comme ceci:

 sudo docker run -i -t --rm ubuntu /bin/bash 

Lorsque vous quittez le conteneur, il sera automatiquement supprimé.

Vous pouvez tester cela en répertoriant vos conteneurs Docker dans une fenêtre de terminal:

 watch -n1 'sudo ls -c /var/lib/docker/containers' 

Et puis, dans une autre fenêtre, exécutez cette commande pour exécuter plusieurs conteneurs Docker qui se fermeront tous automatiquement après avoir dormi pendant 10 secondes.

 for i in {1..10}; do sudo docker run --rm ubuntu /bin/sleep $i & done 

Si vous exécutez un conteneur avec un volume et n’utilisez pas docker rm -v pour le supprimer, le volume n’est pas supprimé après avoir supprimé un conteneur. Il existe également un problème avec un pilote de stockage vfs. Si vous oubliez de nettoyer, les volumes dévoreront votre espace disque.

Je ne suis pas certain de la performance ou de la mémoire / des pénalités de stockage que ces conteneurs inutilisés encourent.

Pour évaluer le volume de stockage utilisé par les conteneurs Docker, vous pouvez exécuter:

 docker ps --size --filter "status=exited" 
  • --size : affiche la taille totale des fichiers (FYI: explique la colonne SIZE dans “docker ps -s” et le mot clé “virtuel” signifie # 1520 ).
  • --filter "status=exited" : liste uniquement les conteneurs arrêtés .

De manière équivalente , vous pouvez exécuter: docker container ls --filter "status=exited"

Vous pouvez également utiliser la commande docker system df (introduite dans Docker 1.13.0) pour voir l’utilisation du disque docker, par exemple:

 username@server:~$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 44 28 114.7GB 84.84GB (73%) Containers 86 7 62.43GB 41.67GB (66%) Local Volumes 2 1 0B 0B Build Cache 0B 0B