Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was passiert, wenn Docker die Festplatte nicht freigeben kann?

Was passiert, wenn Docker die Festplatte nicht freigeben kann?

PHPz
PHPzOriginal
2023-04-19 17:18:56710Durchsuche

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:

  1. Wie der Overlay2-Speichertreiber funktioniert? Zu den Speichertreibern von Docker gehören AUFS, DeviceMapper und OverlayFS. Unter ihnen ist Overlay2 der beliebteste eins. Es basiert auf dem OverlayFS-Dateisystem, das mehrere gespiegelte Dateisysteme überlagert, um einen gemeinsamen Einhängepunkt zu bilden, sodass es wie ein vollständiges Dateisystem aussieht, wie in der folgenden Abbildung dargestellt:

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. Was passiert, wenn Docker die Festplatte nicht freigeben kann?

Der Grund für unzureichenden Partitionsspeicher

  1. Wenn wir einen Docker-Container erstellen, erstellt der Overlay2-Speichertreiber ein unabhängiges Unterverzeichnis für jeden Container im Verzeichnis /var/lib/docker/Was passiert, wenn Docker die Festplatte nicht freigeben kann?, um das Dateisystem des Containers zu speichern. Die Dateidaten in diesen Unterverzeichnissen werden alle im Basis-Image gespeichert, sodass ihre Größe keinen Einfluss auf die Leistung des Speichertreibers hat. Wenn wir jedoch das Docker-Image und den Container von einem Computer verpacken und an einen anderen Computer senden, dekomprimiert der Overlay2-Speichertreiber die Daten beim Entpacken in das Verzeichnis /var/lib/docker, was dazu führt, dass in diesem Verzeichnis Dateispeicherplatz belegt ist ist zu groß und der Speicherplatz der Partition, auf der sich /var/lib/docker befindet, ist entsprechend kleiner geworden. Die folgende Abbildung zeigt dieses Problem am Beispiel des Verzeichnisses /var/lib/docker:

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 passiert, wenn Docker die Festplatte nicht freigeben kann?_space

Was sind die entsprechenden Lösungen?

Als Antwort auf die oben genannten Probleme habe ich einige Lösungen bereitgestellt:

  1. 3.1 Erweitern Sie den Speicherplatz der Partition.
Dies ist die gebräuchlichste Methode. Für virtuelle Maschinen können wir die Festplattenpartitionsgröße im Verwaltungstool für virtuelle Maschinen erweitern Starten Sie die virtuelle Maschine neu. Für Cloud-Server bieten die meisten Cloud-Plattformen die Funktion der Online-Festplattenerweiterung, der Vorgang ist jedoch relativ kompliziert und erfordert Vorsicht, um Datenverluste zu vermeiden.

3.2 Mounten Sie das Verzeichnis /var/lib/docker auf einer größeren Datenfestplatte.

Bereiten Sie im Voraus eine Festplatte mit mehr als 21 GB (z. B. 20T) vor, formatieren Sie sie im ext4-Format, mounten Sie sie im Verzeichnis /data und dann / Das Verzeichnis var/lib/docker wird zur Speicherung auf die Datenfestplatte migriert. Die spezifischen Betriebsanweisungen lauten wie folgt:

# 制作文件系统格式
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
3.3 Docker-Images und Container löschen, die nicht mehr verwendet werden

Wir können den folgenden Befehl verwenden, um Speicherplatz zu bereinigen:

# 清理所有停止的容器
docker container prune

# 清理所有未被标记的镜像
docker image prune -a

# 删除所有没有容器使用的镜像
docker image prune -a --filter "dangling=true"
Zusammenfassung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn