Docker-gc pour faire le ménage dans vos images et vos volumes Docker

Un docker qui fait le ménage tout seul, c'est toujours sympa !

Docker-gc pour faire le ménage dans vos images et vos volumes Docker

Bonjour,

Quand vous avez beaucoup de containers qui tournent ou surtout quand vous faites pas mal de tests comme moi, vous avez tendance à télécharger au final pas mal d’images et ne jamais les virer (euh oui en fait je n’y fait jamais attention). Les images docker sont assez light donc ce n’est pas gênant mais ça ne sert à rien de les garder si vous ne vous en servez jamais. C’est la qu’intervient le container docker-gc. Oui il a un nom à la con mais il fait son boulot c’est à dire qu’il va scanner votre docker et nettoyer tout ce qui n’est pas utilisé au niveau des images & des volumes.

A noter tout de même qu’il peut parfois être violent, c’est à dire que si vous avez des containers qui sont arrêtés depuis un moment, il va tout simplement les virer !

version: "3.5"
services:
  # Docker-GC - Automatic Docker Garbage Collection 
  # Create docker-gc-exclude file
  # https://github.com/clockworksoul/docker-gc-cron
  # https://hub.docker.com/r/clockworksoul/docker-gc-cron
  dockergc:
    image: clockworksoul/docker-gc-cron:latest
    container_name: dockergc
    hostname: dockergc
    restart: unless-stopped
    #network_mode: none
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./docker-gc-exclude:/etc/docker-gc-exclude
    environment:
      CRON: 0 0 * * *
      FORCE_IMAGE_REMOVAL: 1
      FORCE_CONTAINER_REMOVAL: 0
      GRACE_PERIOD_SECONDS: 86400
      DRY_RUN: 0
      CLEAN_UP_VOLUMES: 1
      TZ: Europe/Paris
    networks:
      - services
    labels:
      - "traefik.enable=true"          

networks:
  services:
    external: true  

Alors pour les explications:
– CRON : vous indiquez l’heure à laquelle il doit effectuer son ménage. Ici c’est Paris, euuh, non minuit.
– FORCE_IMAGE_REMOVAL: si vous avez une image qui est utilisé par plusieurs containers, dockergc ne va pas l’effacer sauf si vous activez cette option.
– FORCE_CONTAINER_REMOVAL: si lors du nettoyage il rencontre une erreur, par défaut il ne va pas effacer le container.
– GRACE_PERIOD_SECONDS: période pendant laquelle après un arrêt du container il va l’exclure du nettoyage. Si après cette période le container n’est toujours pas actif, la magie va s’opérer automatiquement.
– DRY_RUN: par défaut dockergc va procéder au nettoyage automatique.
– CLEAN_UP_VOLUMES: permet de nettoyer les volumes orphelins. Oui l’informatique est une jungle impitoyable.

Je tourne avec ce container sur deux VMs depuis maintenant plusieurs semaines et il fonctionne parfaitement. Mes dockers n’ont jamais été aussi propre !

@+