Warum meldet Docker bei einem neuen Ubuntu-Image eine Festplattenauslastung von 100%?


15

Ich bin nicht mehr in der Lage, Docker zu verwenden oder neue Images effektiv auszuführen - es wird berichtet, dass ich zu 100% die Festplatte nutze. Hier können Sie sehen, dass ich eine makellose Kopie von Ubuntu starte und mir dennoch mitteilt, dass ich keinen Speicherplatz mehr habe:

$ docker run -t -i ubuntu /bin/bash
root@3838b70bd76e:/# df -h 
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G   18G     0 100% /
none             19G   18G     0 100% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G   18G     0 100% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

Unabhängig davon versuche ich, eine MySQL-Instanz zu starten, und es werden mir Fehlermeldungen angezeigt, von denen ich glaube, dass sie mit der Tatsache zusammenhängen, dass ich keinen verfügbaren Datenträger habe. Wenn ich versuche, orchardup ​​/ mysql auszuführen, erhalte ich:

ERROR: 1030  Got error 28 from storage engine

Was bedeutet, dass der Speicherplatz aufgebraucht ist.

Wie sollte ich den obigen df -h-Bericht interpretieren und wie kann ich feststellen, was 100% meiner Festplatte verbraucht? Ich verwende docker 1.3 unter OSX 10.9.4 mit boot2docker.

Vielen Dank.


Bearbeiten: Als Workaround habe ich ausgeführt boot2docker deleteund dann boot2docker init, und es scheint, alle meine Bilder zerstört zu haben (zum Glück kann ich sie mit meinen Docker-Dateien neu erstellen ). Wenn ich jetzt ein neues Ubuntu-Bild starte:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  373M   17G   3% /
none             19G  373M   17G   3% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  373M   17G   3% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

So viel besser. Aber ich bin immer noch verwirrt, dass es eine Art gemeinsam genutzte globale Festplatte für alle von boot2docker gehosteten Images geben muss, die zuvor voll waren.


Bearbeiten 2: Ich habe gerade eine Reihe von Bildern heruntergeladen und sehe nun Folgendes, wenn ich das Ubuntu-Image starte und den freien Speicherplatz überprüfe:

root@f53d637e3d33:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           19G  2.7G   15G  16% /
none             19G  2.7G   15G  16% /
tmpfs          1005M     0 1005M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/sda1        19G  2.7G   15G  16% /etc/hosts
tmpfs          1005M     0 1005M   0% /proc/kcore

3% bis 16% verbraucht! Offensichtlich gibt es eine Art gemeinsam genutzte Festplatte zwischen all meinen Bildern, die ich nicht verstehe ...


Wie verwenden Sie die Docker-Container und wie sind Benutzer / Gruppen verteilt (mehr zu den MySQL-Fehlern)? Sind sie für Docker auch für den Host freigegeben oder sind sie rein eigenständig?
linuxdev2013

Antworten:


1

Auf Windows-Hosts erstellt boot2docker mithilfe der virtuellen Box eine virtuelle Maschine. Wenn Sie boot2docker init ausführen, erstellt es eine virtuelle Maschine und weist der Root-Festplatte standardmäßig 20 GB zu. Auf dieser virtuellen Maschine wird ein minimales Linux-Betriebssystem ausgeführt, auf dem wiederum der eigentliche Docker-Daemon ausgeführt wird (Docker-Daemon wird unter Windows noch nicht nativ ausgeführt).

Die an die virtuelle Maschine angeschlossene Festplatte bietet Speicherplatz für die Docker-Images. Sie können sich also zusätzliche Optionen für den Befehl boot2docker init ansehen, um die anfängliche Festplattengröße zu erhöhen. Dadurch wird die für die Verwendung in der virtuellen Maschine verfügbare Festplattengröße erhöht. Wie Queasy jedoch betont hat, müssen Sie dem Docker-Daemon zusätzliche Optionen hinzufügen, um den verfügbaren Speicher für die Images zu erhöhen.

Wenn Sie "df -h" im Container ausführen, entspricht die gemeldete Gesamtgröße der Größe des Festplattenspeichers, der dem Docker-Dämon mit der Option "dm.basesize" zugewiesen wurde.

hinweis: boot2docker wird jetzt zugunsten von Docker Toolbox nicht mehr empfohlen. Möglicherweise möchten Sie ein Upgrade auf diese Version durchführen. In diesem Fall würden Sie "docker-machine create" anstelle von "boot2docker init" verwenden. Ich habe auf Docker-Toolbox umgestellt und kann daher die für boot2docker init erforderlichen Befehlsoptionen nicht testen


0

Ändern Sie die Docker-Konfiguration in / etc / sysconfig / docker-storage und fügen Sie die folgende Zeile hinzu:

DOCKER_STORAGE_OPTIONS= --storage-opt dm.basesize=30G

Denken Sie daran, Ihr Docker zu sichern, bevor Sie mit dieser Aufgabe fortfahren, da Ihre Daten nach der Initialisierung gelöscht werden.


--storage-optwird unter OSX
Quanlong

0

Bedenken Sie, dass das Laufwerk möglicherweise defekt ist. Hitachi (Drive Fitness Test), Seagate (Seatools) und Western Digital (Western Digital Data Lifeguard) bieten kostenlose Diagnosesoftware, um dies zu ermitteln.

Als Beispiel dafür, wie ein fehlerhaftes Laufwerk den Festplattenspeicher belegen kann, habe ich 1-TB-Laufwerke gesichert, die Windows melden, dass noch PETABYTES an Daten zur Übertragung übrig sind.

Für den Fall, dass Ihr Laufwerk in Ordnung ist, verwenden Sie du (Disk Usage), um festzustellen, welcher Ordner der große ist. du -h /usr/bin, du -h /varoder du -h /home/[username]/Downloadsum es genauer zu bestimmen.

Bearbeiten: Ich habe gesehen, dass Sie OS X verwenden: Sie müssen die oben genannten HDD-Tools als bootfähige Optionen oder in etwas wie dem kostenlosen Windows PE verwenden, mit dem Sie dann booten und diese Tools ausführen können.


0

Der Devicemapper ist die Standardspeicher-Engine des Dockers. Es wird standardmäßig versucht, 100 GB in / var / lib / docker vorab zuzuweisen. Allerdings wird nicht der gesamte Speicherplatz genutzt, und Sie können ihn in den Optionen konfigurieren. Docker-Dokumente

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.