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

Detaillierte Erläuterung des MySQL-Indexprinzips und der Abfrageoptimierung

Inhaltsverzeichnis 1. Einleitung 1. Was ist ein I...

HTML-Auszeichnungssprache - Referenz

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Protokoll des Kompilierungs- und Installationsprozesses des Nginx-Quellcodes

Die Installation des RPM-Pakets ist relativ einfa...

Detaillierte Prozessanalyse der Docker-Bereitstellung des Snail-Cinema-Systems

Umwelterklärung Host-Betriebssystem: Cetnos7.9 Mi...

Nativer JS-Musikplayer

In diesem Artikelbeispiel wird der spezifische JS...

Ähnlich wie HTML-Tags: strong und em, q, cite, blockquote

Es gibt einige Tags in XHTML, die ähnliche Funkti...

So bedienen Sie Datei- und Ordnerberechtigungen unter Linux

Linux-Dateiberechtigungen Überprüfen wir zunächst...

Bedeutung und Verwendung einer Linux-CD

Was bedeutet Linux-CD? Unter Linux bedeutet cd „V...

CSS3 erzielt einen unendlichen Scroll-/Karusselleffekt der Liste

Effektvorschau Ideen Scrollen Sie durch die aktue...

W3C Tutorial (15): W3C SMIL Aktivitäten

SMIL fügt Unterstützung für Timing und Mediensync...

mysql 5.7.18 winx64 Passwort ändern

Nachdem MySQL 5.7.18 erfolgreich installiert wurd...

Einfaches Beispiel für die Definition und Verwendung von MySQL-Triggern

Dieser Artikel beschreibt die Definition und Verw...