Zusammenfassung einiger Situationen, in denen die Docker-Containerfestplatte voll ist

Zusammenfassung einiger Situationen, in denen die Docker-Containerfestplatte voll ist

Vorwort

Dieser Artikel beschreibt zwei Situationen, die mir kürzlich begegnet sind. Ich werde später weitere hinzufügen, wenn es neue Erkenntnisse gibt.

Referenzdokumentation: https://docs.docker.com/engine/reference/commandline/dockerd/

Zu viele Anwendungsprotokolle

Standardmäßig verfügt jeder Docker-Container über 10 GB Speicherplatz. Wenn diese Größe überschritten wird, treten im Container Probleme auf.

Informationen zum Ändern der Standardcontainergröße finden Sie in der offiziellen Dokumentation zum Parameter dm.basesize:

Gibt die beim Erstellen des Basisgeräts zu verwendende Größe an, wodurch die Größe von Bildern und Containern begrenzt wird. Der Standardwert ist 10G. Beachten Sie, dass dünne Geräte von Natur aus „spärlich“ sind, sodass ein fast leeres 10G-Gerät nicht 10 GB Speicherplatz im Pool nutzt. Allerdings benötigt das Dateisystem umso mehr Speicherplatz für leere Boxen, je größer das Gerät ist.

Die Basisgerätegröße kann beim Neustart des Daemons erhöht werden, wodurch alle zukünftigen Images und Container (basierend auf diesen neuen Images) die neue Basisgerätegröße haben können.

Beispiel

$ sudo dockerd --storage-opt dm.basesize=50G

Dadurch wird die Basisgerätegröße auf 50 G erhöht. Wenn die vorhandene Basisgerätegröße 50 GB überschreitet, gibt der Docker-Daemon einen Fehler aus. Mit dieser Option kann der Benutzer die Größe des Basisgeräts erweitern, jedoch nicht verkleinern.

Dieser Wert wirkt sich auf das systemweite leere „Basis“-Dateisystem aus, das möglicherweise von abgerufenen Bildern initialisiert und übernommen wurde. Normalerweise sind zum Ändern dieses Werts zusätzliche Schritte erforderlich:

$ sudo Dienst Docker Stopp

$ sudo rm -rf /var/lib/docker

$ sudo Dienst Docker starten

Das Problem, auf das ich hier gestoßen bin, war, dass ein bestimmtes Modul innerhalb von 10 Minuten 1 GB an Protokollen ausgab. Dieses Problem konnte durch Ändern der Protokollrichtlinie gelöst werden.

Zu viele Dockerd-Protokolle

Es gibt einen Docker-Dienst von GitLab. Nach einigen Monaten Betrieb ist Push- und Pull-Operationen nicht mehr möglich. Der Grund dafür ist, dass der Speicherplatz /var/lib/docker voll ist. Der Grund für den vollen Speicherplatz liegt darin, dass das Dockerd-Protokoll mehr als zehn GB Speicherplatz beansprucht.

Der Pfad der Protokolldatei lautet wie folgt: /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log

Referenz: https://stackoverflow.com/questions/31829587/docker-container-logs-taking-all-my-disk-space

Sie können auf die folgenden Lösungen zurückgreifen:

1. Containerparameter starten

Referenz: https://docs.docker.com/engine/reference/commandline/run/

Verwenden Sie die Treiberoptionen --log-opt Log, um die Protokollierungsrichtlinie zu konfigurieren.

Beispiel: --log-opt max-size=50m.

2. Globale Standardkonfiguration

Der in daemon.json konfigurierte Standardspeicherort in Linux ist /etc/docker.

Konfigurationsbeispiel:

{
 "log-driver": "JSON-Datei",
 "log-opts": {
  "max-size": "10m",
  "max-Datei": "3",
  "Labels": "Produktionsstatus",
  "env": "Betriebssystem, Kunde"
 }
}

Referenz zur Protokollkonfiguration: https://docs.docker.com/config/containers/logging/configure/

Ein vollständiges daemon.json-Beispiel finden Sie unter: https://docs.docker.com/engine/reference/commandline/dockerd/

{
 "Autorisierungs-Plugins": [],
 "Datenstamm": "",
 "dns": [],
 "dns-opts": [],
 "DNS-Suche": [],
 "exec-opts": [],
 "exec-root": "",
 "experimentell": falsch,
 "Merkmale": {},
 "Speichertreiber": "",
 "Speicheroptionen": [],
 "Beschriftungen": [],
 "Live-Wiederherstellung": wahr,
 "log-driver": "JSON-Datei",
 "log-opts": {
 "max-size": "10m",
 "max-Datei": "5",
 "Labels": "irgendeinLabel",
 "env": "Betriebssystem, Kunde"
 },
 "mtu": 0,
 "PID-Datei": "",
 "Cluster-Speicher": "",
 "Cluster-Store-Optionen": {},
 "cluster-advertise": "",
 "maximale Anzahl gleichzeitiger Downloads": 3,
 "maximale Anzahl gleichzeitiger Uploads": 5,
 "Standard-Shm-Größe": "64M",
 "Shutdown-Timeout": 15,
 "debug": wahr,
 "Gastgeber": [],
 "Protokollebene": "",
 "tls": wahr,
 "tlsverify": wahr,
 "tlscacert": "",
 "tlscert": "",
 "tlskey": "",
 "swarm-default-advertise-addr": "",
 "api-cors-header": "",
 "selinux-enabled": falsch,
 "userns-remap": "",
 "Gruppe": "",
 "cgroup-übergeordnet": "",
 "Standard-ulimits": {
 "keine Datei": {
  "Name": "keine Datei",
  "Schwer": 64000,
  "Weich": 64000
 }
 },
 "init": falsch,
 "Init-Pfad": "/usr/libexec/docker-init",
 "ipv6": falsch,
 "iptables": falsch,
 "ip-forward": falsch,
 "ip-masq": falsch,
 "userland-proxy": falsch,
 "userland-proxy-path": "/usr/libexec/docker-proxy",
 "ip": "0.0.0.0",
 "Brücke": "",
 "piep": "",
 "fixed-cidr": "",
 "fixed-cidr-v6": "",
 "Standard-Gateway": "",
 "default-gateway-v6": "",
 "icc": falsch,
 "raw-logs": falsch,
 "Nicht verteilbare Artefakte zulassen": [],
 "Registrierungsspiegel": [],
 "seccomp-Profil": "",
 "unsichere Registrierungen": [],
 "keine neuen Berechtigungen": falsch,
 "Standardlaufzeit": "runc",
 "oom-score-adjust": -500,
 "node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],
 "Laufzeiten": {
 "cc-Laufzeit": {
  "Pfad": "/usr/bin/cc-runtime"
 },
 "Brauch": {
  "Pfad": "/usr/local/bin/my-runc-replacement",
  "LaufzeitArgs": [
  "--debuggen"
  ]
 }
 },
 "Standardadresspools": [{"Basis": "172.80.0.0/16", "Größe": 24},
 {"base":"172.90.0.0/16","size":24}]
}

Nachdem Sie die Parameter konfiguriert haben, müssen Sie den Docker-Dienst neu starten.

Docker-Compose-Konfiguration

Referenz: https://docs.docker.com/compose/compose-file/compose-file-v2/

Konfigurationsbeispiel:

Protokollierung:
 Optionen:
  maximale Größe: „12 m“
  Max-Datei: "5"
 Treiber:JSON-Datei

Auffüllen

Ich habe das in Eile geschrieben. Die Links, die ich gepostet habe, enthalten sehr umfassende Informationen, die diese Art von Problem lösen sollten.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Lösung für das Problem, dass Docker den gesamten Speicherplatz einnimmt
  • Lösen Sie das Problem, dass Docker-Datendateien zu groß sind und die Root-Festplatte voll ist
  • So analysieren und bereinigen Sie die Festplattenspeichernutzung von Docker
  • So gehen Sie mit zu vielen Docker-Protokollen um, die dazu führen, dass die Festplatte voll wird

<<:  Detailliertes Tutorial zur Installation der komprimierten Version von MySQL 8.0.11 unter Win10

>>:  Implementierung der One-Click-Verpackung und -Veröffentlichung von Vue-Projekten mit Jenkins

Artikel empfehlen

Eine dauerhafte Lösung für MySQLs Unfähigkeit, Chinesisch zu erkennen

In den meisten Fällen unterstützt MySQL Chinesisc...

So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten in Nginx

Nginx-Optimierung --- Versionsnummer und Cache-Ze...

So deinstallieren Sie das native OpenJDK von Linux und installieren Sun JDK

Siehe: https://www.jb51.net/article/112612.htm Üb...

JavaScript, um einen ausgefallenen Karusselleffekt zu erzielen

In diesem Artikel werden zwei Methoden zur Implem...

Implementierungsschritte für die Paketierung und Optimierung von Vue-Projekten

Inhaltsverzeichnis Verpacken, Starten und Optimie...

So erstellen Sie Gitlab auf CentOS6

Vorwort Das ursprüngliche Projekt wurde im öffent...

Element-ui klickt direkt auf die Zelle in der Tabelle, um sie zu bearbeiten

Inhaltsverzeichnis Ergebnisse erzielen Implementi...

So komprimieren Sie Bilder effektiv mit JS

Inhaltsverzeichnis Vorwort Konvertierungsbeziehun...

So installieren Sie ROS Noetic in Ubuntu 20.04

Haftungsausschluss: Da das Projekt die Verwendung...

Lösen Sie das Problem des MySQL Threads_running-Surge und der langsamen Abfrage

Inhaltsverzeichnis Hintergrund Problembeschreibun...

Tutorial zur Installation der mysql5.7.36-Datenbank in einer Linux-Umgebung

Download-Adresse: https://dev.mysql.com/downloads...

Zeitzonenprobleme mit im Docker-Container bereitgestelltem Django

Inhaltsverzeichnis Zeitzonenkonfiguration in Djan...