wake-up-neo.com

Ist es sicher, docker / overlay2 / zu reinigen?

Ich habe einige Docker-Container auf AWS EC2 gestartet. Der Ordner/var/lib/docker/overlay2 wächst sehr schnell in der Festplattengröße.

Ich frage mich, ob es sicher ist, seinen Inhalt zu löschen? oder wenn Docker eine Art Befehl hat, um die Festplattennutzung freizugeben.

Vielen Dank!


AKTUALISIEREN:

Ich habe es tatsächlich versucht docker system Prune -a schon, die 0Kb zurückgefordert.

Auch meine/docker/overlay2-Festplatte ist viel größer als die Ausgabe von docker system df

Nachdem ich die Docker-Dokumentation und die Antwort von BMitch gelesen habe, halte ich es für eine blöde Idee, diesen Ordner zu berühren, und ich werde andere Möglichkeiten ausprobieren, um meinen Speicherplatz wiederzugewinnen.

36
qichao_he

Docker verwendet/var/lib/docker, um Ihre Images, Container und lokal benannten Volumes zu speichern. Das Löschen kann zu Datenverlust führen und möglicherweise den Motor zum Stillstand bringen. Das Unterverzeichnis overlay2 enthält speziell die verschiedenen Dateisystemebenen für Bilder und Container.

Informationen zum Bereinigen nicht verwendeter Container und Bilder finden Sie unter docker system Prune. Es gibt auch Optionen zum Entfernen von Volumes und sogar getaggten Bildern, diese sind jedoch aufgrund möglicher Datenverluste standardmäßig nicht aktiviert.

21
BMitch

hatte auch Probleme mit schnell wachsenden overlay2

/var/lib/docker/overlay2 - ist ein Ordner, in dem Docker beschreibbare Ebenen für Ihren Container speichert. docker system Prune -a - funktioniert möglicherweise nur, wenn der Container angehalten und entfernt wurde.

in meinem konnte ich herausfinden, was Platz verbraucht, indem ich in overlay2 ging und nachforschte.

dieser Ordner enthält andere Hash-Ordner. Jeder dieser Ordner verfügt über mehrere Ordner, einschließlich des Ordners diff.

diff Ordner - Enthält die tatsächliche Differenz, die von einem Container mit der genauen Ordnerstruktur als Ihr Container geschrieben wurde (zumindest in meinem Fall - Ubuntu 18 ...)

also habe ich mit du -hsc /var/lib/docker/overlay2/LONGHASHHHHHHH/diff/tmp herausgefunden, dass /tmp in meinem Container der Ordner ist, der verschmutzt wird.

um dies zu umgehen, habe ich den -v /tmp/container-data/tmp:/tmp - Parameter für den docker run - Befehl verwendet, um den inneren /tmp - Ordner dem Host zuzuordnen und einen Cron auf dem Host einzurichten, um diesen Ordner zu bereinigen.

cron Aufgabe war einfach:

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

HINWEIS: overlay2 Ist ein System-Docker-Ordner, dessen Struktur jederzeit geändert werden kann. Alles oben basiert auf dem, was ich dort gesehen habe. Ich musste nur in die Docker-Ordnerstruktur wechseln, weil das System nicht mehr über genügend Speicherplatz verfügte und es mir nicht einmal erlaubte, in den Docker-Container zu sshen.

4
user2932688

Ich hatte dieses Problem ... Es war das Protokoll, das riesig war. Protokolle sind hier:

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

Sie können dies in der Ausführungsbefehlszeile oder in der Erstellungsdatei verwalten. Siehe dort: Logging-Treiber konfigurieren

Ich persönlich habe diese 3 Zeilen zu meiner docker-compose.yml-Datei hinzugefügt:

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

Ich fand das am besten für mich:

docker image Prune --all

Standardmäßig entfernt Docker keine benannten Bilder, auch wenn sie nicht verwendet werden. Dieser Befehl entfernt nicht verwendete Bilder.

Beachten Sie, dass jede Ebene in einem Bild ein Ordner im Ordner /usr/lib/docker/overlay2/ Ist.

2
Sarke