Bei der Verwendung von Docker müssen wir manchmal Docker-Images und Container zwischen verschiedenen Maschinen teilen. Eine einfache Möglichkeit besteht darin, diese Bilder und Container in TAR-Dateien zu packen, sie dann über das Netzwerk auf den Zielcomputer zu übertragen und sie dann zu dekomprimieren und in Docker zu laden. Selbst wenn wir diese Bilder und Container erfolgreich auf den Zielcomputer übertragen, stoßen wir jedoch häufig auf ein solches Problem: Das Laden des Bildes oder das Starten des Containers ist nicht möglich, und es wird angezeigt, dass auf dem Gerät kein Speicherplatz mehr vorhanden ist, d unzureichend, insbesondere wenn dieses Problem eher bei Verwendung des Speichertreiber-Overlays2 auftritt.
Was um alles in der Welt ist los? Ich bin einmal auf ein ähnliches Problem gestoßen und habe die Gründe und Lösungen gefunden:
Wie in der Abbildung gezeigt, ist das Der blaue Teil ist das Dateisystem des Basisbildes, der grüne Teil ist das Dateisystem der Containerschicht und der rote Teil ist das Dateisystem der schreibgeschützten Schicht. Die schreibgeschützte Ebene enthält das allen Bildern gemeinsame Dateisystem. Sie erstellt eine schreibgeschützte Ebene für jeden Container und fügt darüber eine beschreibbare Ebene hinzu, damit jeder Container sie sehen kann Es ist ein unabhängiges Dateisystem und stört sich nicht gegenseitig.
Der Grund für unzureichenden Partitionsspeicher
In diesem Bild beträgt die Festplattengröße der Partition /dev/vda1 50 GB und die Festplattengröße der Partition /var/lib/docker 21 GB. Da jedoch zu viele von Docker erstellte Container vorhanden sind, ist in /var nicht genügend Speicherplatz vorhanden Es sind nur noch 30,72 MB im Verzeichnis /lib/docker übrig, wenn wir den Container von einem solchen Computer mit begrenztem Speicherplatz starten möchten.
Was sind die entsprechenden Lösungen?
Als Antwort auf die oben genannten Probleme habe ich einige Lösungen bereitgestellt:# 制作文件系统格式 mkfs.ext4 /dev/vdb # 挂载 mount /dev/vdb /data # 备份原/var/lib/docker目录下所有数据 cp -au /var/lib/docker/* /data/ # 卸载/var/lib/docker目录 umount /var/lib/docker # 将/var/lib/docker目录迁移到新的数据盘中 echo '/dev/vdb /var/lib/docker ext4 defaults 0 0' >> /etc/fstab mount -a
# 清理所有停止的容器 docker container prune # 清理所有未被标记的镜像 docker image prune -a # 删除所有没有容器使用的镜像 docker image prune -a --filter "dangling=true"
Bei der Verwendung von Docker müssen wir immer bezahlen Achten Sie darauf, ob der vom Speichertreiber verwendete Speicherplatz ausreicht, da es sonst zu Startfehlern kommen kann. Dazu können Sie eine der oben genannten drei Lösungen wählen. Ich persönlich empfehle die zweite Methode, die das Problem schnell lösen kann, ohne das ursprüngliche Dateisystem zu zerstören. Ich hoffe, dass mein Beitrag für Sie hilfreich sein kann. Vielen Dank fürs Lesen.
Das obige ist der detaillierte Inhalt vonWas passiert, wenn Docker die Festplatte nicht freigeben kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!