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.
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.
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.
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
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/
.