web-dev-qa-db-fra.com

Est-il sécuritaire de nettoyer docker / overlay2 /

Certains conteneurs de docker s'exécutant sur AWS EC2, le dossier/var/lib/docker/overlay2 augmente très rapidement en taille de disque.

Je me demande s'il est prudent de supprimer son contenu? ou si docker a une sorte de commande pour libérer de l’utilisation du disque.

Merci!


MISE À JOUR:

En fait, j'ai déjà essayé docker system Prune -a, qui a récupéré 0 Ko.

De plus, la taille de mon disque/docker/overlay2 est beaucoup plus grande que la sortie de docker system df

Après avoir lu la documentation de docker et la réponse de BMitch, j’ai pensé que c’était une idée stupide de toucher ce dossier et j’essaierai d’autres moyens pour récupérer mon espace disque.

36
qichao_he

Docker utilise/var/lib/docker pour stocker vos images, conteneurs et volumes nommés locaux. La suppression de cette information peut entraîner une perte de données et éventuellement arrêter le moteur. Le sous-répertoire overlay2 contient spécifiquement les divers couches du système de fichiers pour les images et les conteneurs.

Pour nettoyer les conteneurs et les images inutilisés, voir docker system Prune. Il existe également des options pour supprimer des volumes et même des images marquées, mais elles ne sont pas activées par défaut en raison du risque de perte de données.

21
BMitch

aussi eu des problèmes avec la croissance rapide overlay2

/var/lib/docker/overlay2 - est un dossier dans lequel docker stocke les calques en écriture pour votre conteneur. docker system Prune -a - peut fonctionner que si le conteneur est arrêté et supprimé.

dans mon j'ai pu comprendre ce qui consomme de l'espace en allant dans overlay2 et en enquêtant.

ce dossier contient d'autres dossiers de hachage nommés. chacun de ceux-ci a plusieurs dossiers, y compris le dossier diff.

Dossier diff - contient la différence réelle écrite par un conteneur avec une structure de dossier identique à celle de votre conteneur (du moins c'était dans mon cas - Ubuntu 18 ...)

Donc, j'ai utilisé du -hsc /var/lib/docker/overlay2/LONGHASHHHHHHH/diff/tmp pour comprendre que /tmp à l'intérieur de mon conteneur est le dossier qui est pollué.

donc, comme solution de contournement, j'ai utilisé le paramètre -v /tmp/container-data/tmp:/tmp pour la commande docker run pour mapper le dossier interne /tmp à l'hôte et configurer un cron sur l'hôte pour nettoyer ce dossier.

la tâche cron était simple:

  • Sudo nano /etc/crontab
  • */30 * * * * root rm -rf /tmp/container-data/tmp/*
  • save and exit

REMARQUE: overlay2 est un dossier du menu fixe et ils peuvent en modifier la structure à tout moment. Tout ce qui précède est basé sur ce que j'ai vu là-bas. Doit aller dans la structure de dossiers de docker uniquement parce que le système était complètement saturé et ne me permettait même pas de ssh dans le conteneur de docker.

4
user2932688

J'ai eu ce problème ... C'était le journal qui était énorme. Les journaux sont ici:

/var/lib/docker/containers/<container id>/<container id>-json.log

Vous pouvez gérer cela dans la ligne de commande d'exécution ou dans le fichier de composition. Voir ici: Configurer les pilotes de journalisation

J'ai personnellement ajouté ces 3 lignes à mon fichier docker-compose.yml:

my_container:
  logging:
    options:
      max-size: 10m
4
Tristan

J'ai trouvé que cela fonctionnait le mieux pour moi:

docker image Prune --all

Par défaut, Docker ne supprimera pas les images nommées, même si elles ne sont pas utilisées. Cette commande supprimera les images inutilisées.

Notez que chaque couche d'une image est un dossier situé à l'intérieur du dossier /usr/lib/docker/overlay2/.

2
Sarke