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 delete
und 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 ...
quelle
Antworten:
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
quelle
Ändern Sie die Docker-Konfiguration in / etc / sysconfig / docker-storage und fügen Sie die folgende Zeile hinzu:
Denken Sie daran, Ihr Docker zu sichern, bevor Sie mit dieser Aufgabe fortfahren, da Ihre Daten nach der Initialisierung gelöscht werden.
quelle
--storage-opt
wird unter OSXBedenken 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 /var
oderdu -h /home/[username]/Downloads
um 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.
quelle
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
quelle