Dans un contexte d'ordonnanceur externe à docker, comme kubernetes, la vie d'un container n'est pas éternelle, et même pire, elle peut être très courte (selon le cycle de développement du service proposé).

Il n'est donc pas rare de voir sur les nodes des container qui sont en état "Exited since ...". Ces container peuvent correspondre à des suppression de pods et services, puis à la récréation de ceux-ci, ce qui peut nous donner de jolis semis doublons lors d'un :

docker ps -a

Kubernetes ne fait pas le ménage sur les nodes, ni meme sur le controlleur, exemple :

root@Krilin:~$ docker ps -a | grep weave
776a6b33278f        1f394ae9e226           "/home/weave/launch.…"   4 minutes ago            Exited (1) 4 minutes ago                                k8s_weave_weave-net-vzv6m_kube-system_6d5bf007-31d6-11e9-8af5-e094673af96c_3348
a7714ac685e7        789b7f496034           "/usr/bin/weave-npc"     13 hours ago             Up 13 hours                                             k8s_weave-npc_weave-net-vzv6m_kube-system_6d5bf007-31d6-11e9-8af5-e094673af96c_3
b823cbb9669c        k8s.gcr.io/pause:3.1   "/pause"                 13 hours ago             Up 13 hours                                             k8s_POD_weave-net-vzv6m_kube-system_6d5bf007-31d6-11e9-8af5-e094673af96c_3
467b8f9b7802        789b7f496034           "/usr/bin/weave-npc"     14 hours ago             Exited (1) 13 hours ago                                 k8s_weave-npc_weave-net-vzv6m_kube-system_6d5bf007-31d6-11e9-8af5-e094673af96c_2
c8309215ce8b        k8s.gcr.io/pause:3.1   "/pause"                 14 hours ago             Exited (0) 13 hours ago                                 k8s_POD_weave-net-vzv6m_kube-system_6d5bf007-31d6-11e9-8af5-e094673af96c_2

Pour nettoyer tout cela, nous pouvons faire un script shell qui cherchera le mot Exited pour ensuite faire un docker rm sur l'id du container associé, mais il restera encore a faire des "prune" sur les volumes pour que le nettoyage soit complet.

Il existe une commande plus directe dans docker :

docker system prune

rootKrilin:~$ docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache
Are you sure you want to continue? [y/N] 

Si vous repondez "y" vous voyez alors les suppressions faites :

Deleted Containers:
118d43446820ee48fbc2448f458fd310da1a2fa8e9c4288eebc687f6ead02b40
7bd02c21bd056f2206deafb8d2c1f962e460726ea5baac382326315c0200fae6
2d13ae91cd9b2c2c0a0ef6deae378da973eb09a353778c386b946143cd5da611
5c01da141458bad077f8398d235cc29aa571816d9fc377a54663fe60a7b551fa
748087e020c6a012e25a8b78321c45c86471de22f0fbc5e4e14936fa88090382
8ad02c451417f9b4c6c016b330775082b64330284ba9e4eaa20e064fb9f6cf3f
1a8bc77db31831bd0ef177d7a70b0ddafd2f1d9a69a2d7f1f504da69a15f838e
624f19e5050ced840a31e17b857071f25c30afdb46719cb28429ecb7853c2090
c2430cafa2a988cecebffb16ce7a5c90f78dc18053003dd8d6f0cdea438b8473
1796f28b9dbc1c2c31724e91d031a12eae19b1b513c168dec236005e42036969
20fcbb1c937042ef86dccd03f60f59c168947cfc0440fbc20bd99052fdb5a789

Total reclaimed space: 0B

Le 0B correspond à l'espace récupéré sur les volumes. Mais le ménage a bien été fait question reliquats de containers et d'images inutiles.

On y voit un peu plus clair, non ?