Ich habe Docker eingerichtet und ein völlig anderes Blockgerät zum Speichern der Systemdaten von Docker verwendet:
[root@blink1 /]# cat /etc/sysconfig/docker
# /etc/sysconfig/docker
other_args="-H tcp://0.0.0.0:9367 -H unix:///var/run/docker.sock -g /disk1/docker"
Beachten Sie, dass /disk/1
eine völlig andere Festplatte verwendet wird/dev/xvdi
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 5.1G 2.6G 67% /
devtmpfs 1.9G 108K 1.9G 1% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/xvdi 20G 5.3G 15G 27% /disk1
/dev/dm-1 9.8G 1.7G 7.6G 18% /disk1/docker/devicemapper/mnt/bb6c540bae25aaf01aedf56ff61ffed8c6ae41aa9bd06122d440c6053e3486bf
/dev/dm-2 9.8G 1.7G 7.7G 18% /disk1/docker/devicemapper/mnt/c85f756c59a5e1d260c3cdb473f3f4d9e55ac568967abe190eeaf9c4087afeac
Das Problem ist, dass, wenn ich weiterhin Docker-Images herunterlade und Docker-Container ausführe, anscheinend auch die andere Festplatte belegt /dev/xvda1
ist.
Ich kann dieses Problem überprüfen, indem ich einige Docker-Images entferne. Nachdem ich einige Docker-Bilder entfernt habe, /dev/xvda1
ist jetzt etwas mehr Platz vorhanden.
Vermisse ich etwas
Meine Docker-Version:
[root@blink1 /]# docker info
Containers: 2
Images: 42
Storage Driver: devicemapper
Pool Name: docker-202:1-275421-pool
Pool Blocksize: 64 Kb
Data file: /disk1/docker/devicemapper/devicemapper/data
Metadata file: /disk1/docker/devicemapper/devicemapper/metadata
Data Space Used: 3054.4 Mb
Data Space Total: 102400.0 Mb
Metadata Space Used: 4.7 Mb
Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 3.14.20-20.44.amzn1.x86_64
Operating System: Amazon Linux AMI 2014.09
docker
diskspace
device-mapper
ming.kernel
quelle
quelle
fdisk -l
Antworten:
Es handelt sich um ein Kernelproblem mit Devicemapper, das die RedHat-Betriebssystemfamilie (RedHat, Fedora, CentOS und Amazon Linux) betrifft. Gelöschte Container geben keinen zugeordneten Speicherplatz frei. Dies bedeutet, dass auf den betroffenen Betriebssystemen beim Starten und Neustarten von Containern langsam der Speicherplatz ausgeht.
Das Docker-Projekt ist sich dessen bewusst, und der Kernel soll im Upstream repariert sein ( https://github.com/docker/docker/issues/3182 ).
Eine Art Umgehung besteht darin, Docker ein eigenes Volume zum Schreiben zu geben ( "Wenn Docker Speicherplatz verbraucht" ). Dies hindert es nicht daran, Platz zu essen, sondern daran, andere Teile Ihres Systems herunterzufahren, nachdem dies geschehen ist.
Meine Lösung bestand darin, Docker zu deinstallieren, dann alle seine Dateien zu löschen und dann neu zu installieren:
Dies hat meinen Platz zurückbekommen, aber es ist nicht viel anders als nur eine Ersatzinstanz zu starten. Ich habe keine schönere Lösung gefunden.
quelle
/var/lib/docker
, wodurch alle Ihre Bilder und Container gelöscht werden. Sie setzen Docker hart zurück, erwarten Sie also nicht, dass Sie alle Ihre Daten speichern können.Das Löschen meines gesamten / var / lib / docker ist für mich nicht in Ordnung. Dies sind sicherere Wege:
Lösung 1:
Die folgenden Befehle aus dem Problem machen den Speicherplatz für mich frei und es ist viel sicherer als das Löschen von / var / lib / docker oder für Windows, um den Speicherort Ihres Disk-Images hier zu überprüfen .
Vor:
Beispielausgabe:
Befehl in neueren Versionen von Docker, zB 17.x +
Es wird eine Warnung angezeigt, dass alle gestoppten Container, Netzwerke, Images und Build-Caches entfernt werden. Im Allgemeinen ist es sicher, dies zu entfernen. (Wenn Sie das nächste Mal einen Container ausführen, wird dieser möglicherweise aus der Docker-Registrierung abgerufen.)
Beispielausgabe:
Sie können dann die Docker-Informationen erneut ausführen, um zu sehen, was bereinigt wurde
Lösung 2:
Stellen Sie außerdem sicher, dass Ihre Programme im Docker-Container nicht viele / große Dateien in das Dateisystem schreiben.
Überprüfen Sie die Speicherplatznutzungsgröße Ihres laufenden Docker-Prozesses
oder für alle Container, auch verlassen
Sie können dann die fehlerhaften Container löschen
Finden Sie den möglichen Schuldigen, der möglicherweise Gigs of Space verwendet
In meinem Fall schrieb das Programm Auftritte von temporären Dateien.
( Nathaniel Waisbrot hat in der akzeptierten Antwort auf dieses Problem erwähnt und ich habe einige Informationen aus dem Problem erhalten.)
ODER
Befehle in älteren Versionen von Docker, z. B. 1.13.x (als root und nicht als sudo ausgeführt):
Nach :
quelle
docker system prune --force
ist definitiv die sicherste Option, die ich von den Antworten gesehen habe. Ich hatte keinen Platz mehr auf meiner Maschine. Habe beschnitten und ich habe jetzt 50 GB frei ... wünschte, ich hätte das früherprune
DockerVerschieben Sie das
/var/lib/docker
Verzeichnis.Angenommen, das
/data
Verzeichnis hat genügend Speicherplatz. Wenn nicht, ersetzen Sie eines, das dies tut.Auf diese Weise müssen Sie Docker nicht neu konfigurieren.
quelle
Ich hatte ein ähnliches Problem und ich denke, dies passiert, wenn Sie nicht genügend Speicherplatz auf der Festplatte für alle Ihre Docker-Images haben. Ich hatte 6 GB für Docker-Bilder reserviert, was sich in meinem Fall als nicht ausreichend herausstellte. Wie auch immer, ich hatte jedes Bild und jeden Container entfernt und die Festplatte sah immer noch voll aus. Der größte Teil des Speicherplatzes wurde von / var / lib / docker / devicemapper und / var / lib / docker / tmp verwendet.
Dieser Befehl hat bei mir nicht funktioniert:
Zuerst habe ich den Docker-Dienst gestoppt:
Dann habe ich / var / lib / docker gelöscht:
Dann habe ich getan, was jemand hier in https://github.com/docker/docker/issues/18867#issuecomment-232301073 vorgeschlagen hat
Entfernen Sie die vorhandene Instanz der Docker-Metadaten rm -rf / var / lib / docker
sudo rm -rf / var / lib / docker
Übergeben Sie die folgenden Optionen an den Docker-Daemon: -s Devicemapper --storage-opt dm.fs = xfs --storage-opt dm.mountopt = verwerfen
Starten Sie den Docker-Daemon.
Für die letzten beiden Schritte laufe ich:
quelle
Hatte das gleiche Problem. In meinem Szenario ging meiner vbox der Speicherplatz aus. Nach einer Untersuchung stellte sich heraus, dass meine lokalen Docker-Volumes 30 GB aufzehrten. Ubuntu 16.04 Host.
Um deine herauszufinden.
Dadurch wird Speicherplatz für nicht verwendete lokale Volumes freigegeben. In meinem Szenario wurden 20 GB Speicherplatz freigegeben. Stellen Sie sicher, dass die Container, die Sie behalten möchten, ausgeführt werden , bevor Sie dies tun, wenn Sie sie behalten möchten, da dadurch alle gestoppten Container entfernt werden.
quelle
Docker Prune entfernt standardmäßig keine Volumes.
Sie können so etwas versuchen
quelle
docker system prune --all --volumes
Wie in Ausgabe # 18867 erwähnt - Daten in einem Container löschen Devicemapper kann nicht genutzten Speicherplatz freigeben von Github.com freigeben
Versuchen Sie, den folgenden Befehl auszuführen:
Es verwendet das
fstrim
Tool, um die dünn bereitgestellte Devicemapper-Festplatte zu trimmen.quelle
Vielleicht können Sie versuchen
docker system prune
, alle Bilder zu entfernen, die nicht wichtig sindquelle
Ja, Docker verwendet den Ordner / var / lib / docker, um die Ebenen zu speichern. Es gibt Möglichkeiten, den Speicherplatz zurückzugewinnen und den Speicher in ein anderes Verzeichnis zu verschieben.
Sie können einen größeren Speicherplatz bereitstellen und den Inhalt von / var / lib / docker an den neuen Speicherort verschieben und einen Sym-Link erstellen.
Es gibt detaillierte Erklärungen zur obigen Aufgabe.
http://www.scmtechblog.net/2016/06/clean-up-docker-images-from-local-to.html
Sie können auch die Zwischenschichten entfernen.
https://github.com/vishalvsh1/docker-image-cleanup
quelle