Ich habe einige Docker-Container auf einem Linux-Rechner laufen, die Festplattengröße des Ordners /docker/overlay2 wächst sehr schnell. Aus diesem Grund können wir keine neuen Images hochladen
Wenn ich Overlay2 nachschaue, stelle ich fest, dass es sehr alte Ebenen enthält (August 2019).
Ich habe versucht, den Docker-Datenträger mit folgendem Befehl zu bereinigen: ls -qf dangling=true | xargs -r docker volume rm docker rm -v $(sudo docker ps -a -q -f status=exited) docker system prune
Aber zurückgefordert 0B
Ebenfalls geprüfthttps://stackoverflow.com/questions/46672001/is-it-safe-to-clean-docker-overlay2
https://docs.docker.com/config/pruning/
https://success.docker.com/article/error-message-no-space-left-on-device-in-default-machine
Wie kann man das am besten reinigen?
Docker-Protokolle
Starting Oracle Net Listener.
Instanz von Oracle Database 11g Express Edition wird gestartet.
Warten auf den Start der Datenbank
SQL*Plus: Release 11.2.0.2.0 Produktion am Dienstag, 14. Juli 2020, 05:04:23
Copyright (c) 1982, 2011, Oracle. Alle Rechte vorbehalten.
Verbunden mit: Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64-Bit-Produktion
SQL> Verbindung zu Oracle Database 11g Express Edition Release 11.2.0.2.0 getrennt – 64-Bit-Produktionsdatenbank gestartet /opt/ion/platform/daemon/DM_DOCKER / Daemon gestartet von /opt/ion/platform/daemon/DM_DOCKER/mkvd118p1.lx Warte auf Port 13000 bash: connect: Netzwerk ist nicht erreichbar bash: /dev/tcp/localhost/13000: Netzwerk ist nicht erreichbar Daemon auf Port 13000 gestartet / Wird ausgeführt: /startup/ansible_container_startup.sh Wird ausgeführt: /startup/cups_startup.sh Wird ausgeführt: /startup/samba_startup.sh Wird ausgeführt: /startup/start_check_mk_agent.sh
Docker-Diff Fehlerantwort vom Daemon: mkdir /docker/overlay2/f033daa6d065ff85484b54fcd9a7786f839917d180129ea8fed0f627ad776095-init/merged: kein Platz mehr auf dem Gerät
Antwort1
Die typische Antwort der meisten Leute, wenn overlay2 zu groß ist, ist, eine Bereinigung auszuführen, bei der gestoppte Container und Bilder gelöscht werden, deren Tag entfernt wurde (durch ein neueres Tag ersetzt). Das ist erledigt docker prune
und es gibt andere Optionen für diesen Befehl, um weitere Daten zu löschen. Weitere Einzelheiten zum Bereinigen dieses Ordners im Allgemeinen finden Sie unter "Ist es sicher, Docker/Overlay2/ zu bereinigen?".
Wenn das Problem darin besteht, dass der /var/lib/docker/containers
Ordner wächst, würde ich vermuten, dass Protokolle in stdout/stderr geschrieben werden, und es gibtverschiedene Möglichkeiten, das zu bereinigen und übermäßige Protokolle in der Zukunft zu verhindern.
Wenn jedoch bei diesem Problem die Größe des Ordners overlay2 schnell zunimmt, wenn Sie einen Container starten, schreibt dieser Container höchstwahrscheinlich in das mit diesem Container verknüpfte Lese-/Schreibdateisystem. Jede Änderung an einer Datei löst ein Copy-on-Write in die containerspezifische Ebene aus. Sie können anhand docker container diff
der spezifischen Container-ID diagnostizieren, welche Dateien erstellt oder geändert werden. In Ihrer Situation scheint dies schnell genug zu geschehen, um Ihr Laufwerk zu füllen, sodass Ihr Computer möglicherweise nicht über die Kapazität verfügt, diesen Container zu debuggen oder auszuführen. Sie sind also möglicherweise gezwungen, dies auf einem Computer mit mehr Kapazität zu debuggen.
Antwort2
Sie können verwenden docker image prune -a
, um unbrauchbare Bilder zu entfernen.