Wie man den docker container update Befehl zur Änderung von Container-Ressourcen verwendet

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie die Ressourcenlimits und die Neustartrichtlinie eines laufenden Docker-Containers mit dem Befehl docker container update dynamisch anpassen können. Sie beginnen mit der Erstellung eines Containers mit initialen CPU- und Speicherlimits.

Nach der Containererstellung untersuchen Sie, wie Sie die CPU-Anteile (CPU shares) und das Speicherlimit des Containers aktualisieren können, um dessen Ressourcenzuweisung anzupassen. Abschließend lernen Sie, wie Sie die Neustartrichtlinie (restart policy) des Containers ändern können, um zu steuern, wie Docker Container-Neustarts in verschiedenen Szenarien handhabt. Diese praktische Übung demonstriert die Flexibilität und Leistungsfähigkeit der Ressourcenverwaltung in Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555127{{"Wie man den docker container update Befehl zur Änderung von Container-Ressourcen verwendet"}} docker/rm -.-> lab-555127{{"Wie man den docker container update Befehl zur Änderung von Container-Ressourcen verwendet"}} docker/exec -.-> lab-555127{{"Wie man den docker container update Befehl zur Änderung von Container-Ressourcen verwendet"}} docker/inspect -.-> lab-555127{{"Wie man den docker container update Befehl zur Änderung von Container-Ressourcen verwendet"}} docker/pull -.-> lab-555127{{"Wie man den docker container update Befehl zur Änderung von Container-Ressourcen verwendet"}} end

Container mit initialen Ressourcenlimits erstellen

In diesem Schritt lernen Sie, wie Sie einen Docker-Container erstellen und initiale Ressourcenlimits für CPU und Arbeitsspeicher festlegen. Ressourcenlimits sind wichtig, um zu verhindern, dass ein einzelner Container alle verfügbaren Ressourcen des Host-Systems verbraucht, was die Performance anderer Container und des Hosts selbst beeinträchtigen könnte.

Zuerst laden wir das ubuntu-Image von Docker Hub. Dieses Image wird als Basis für unseren Container dienen.

docker pull ubuntu:latest

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen und extrahiert wird.

Nun erstellen wir einen Container namens my-limited-container mit spezifischen Ressourcenlimits. Wir verwenden dazu den docker run-Befehl mit den Flags --cpus und --memory.

Das --cpus-Flag begrenzt die CPU-Ressourcen, die der Container nutzen kann. Der Wert ist eine Gleitkommazahl, die die Anzahl der CPU-Kerne angibt. Beispielsweise bedeutet --cpus 0.5, dass der Container maximal die Hälfte eines CPU-Kerns nutzen darf.

Das --memory-Flag begrenzt den Arbeitsspeicher, den der Container verwenden kann. Der Wert kann in Bytes, Kilobytes (k), Megabytes (m) oder Gigabytes (g) angegeben werden. Zum Beispiel limitiert --memory 512m den Container auf 512 Megabyte Arbeitsspeicher.

In diesem Beispiel erstellen wir einen Container, der den Befehl sleep infinity ausführt, wodurch der Container unbegrenzt läuft. Wir beschränken seine CPU-Nutzung auf 0,5 Kerne und den Arbeitsspeicher auf 256 Megabyte.

docker run -d --name my-limited-container --cpus 0.5 --memory 256m ubuntu:latest sleep infinity

Lassen Sie uns den Befehl aufschlüsseln:

  • docker run: Dieser Befehl erstellt und startet einen neuen Container.
  • -d: Dieses Flag führt den Container im Detached-Modus aus, d.h. er läuft im Hintergrund.
  • --name my-limited-container: Weist dem Container den Namen my-limited-container zu.
  • --cpus 0.5: Begrenzt die CPU-Nutzung auf 0,5 Kerne.
  • --memory 256m: Begrenzt den Arbeitsspeicher auf 256 Megabyte.
  • ubuntu:latest: Spezifiziert das zu verwendende Docker-Image (die neueste Ubuntu-Version).
  • sleep infinity: Dies ist der Befehl, der im Container ausgeführt wird. Er hält den Container aktiv.

Nach Ausführung des Befehls gibt Docker die Container-ID aus.

Um zu überprüfen, ob der Container läuft und die Ressourcenlimits angewendet wurden, können Sie den docker inspect-Befehl verwenden. Dieser Befehl liefert detaillierte Informationen über einen Container.

docker inspect my-limited-container

Die Ausgabe von docker inspect ist ein umfangreiches JSON-Objekt. Sie können im Abschnitt HostConfig nach den Feldern CpuShares und Memory suchen, um die gesetzten Limits zu sehen. Beachten Sie, dass --cpus 0.5 in einen CpuShares-Wert von 512 übersetzt wird (standardmäßig entspricht 1 CPU 1024 Shares). Der Memory-Wert wird in Bytes angegeben.

CPU-Anteile (CPU Shares) eines Containers aktualisieren

In diesem Schritt lernen Sie, wie Sie die CPU-Anteile eines laufenden Containers mit dem Befehl docker update anpassen können. CPU-Anteile (CPU shares) bestimmen die Priorisierung des Container-Zugriffs auf CPU-Ressourcen bei Systemauslastung. Ein höherer Wert bedeutet, dass der Container im Vergleich zu Containern mit niedrigeren Anteilen einen größeren Anteil der CPU-Zeit erhält.

Im vorherigen Schritt haben wir einen Container namens my-limited-container mit einem CPU-Limit von 0,5 Kernen erstellt, was 512 CPU-Anteilen entspricht. Nun aktualisieren wir seine CPU-Anteile auf 768. Dadurch erhält er eine höhere Priorität für CPU-Ressourcen im Vergleich zu Containern mit Standardanteilen (1024) oder niedrigeren Anteilen.

Um die CPU-Anteile zu aktualisieren, verwenden wir den docker update-Befehl mit dem --cpu-shares-Flag, gefolgt vom Containernamen und dem neuen Anteilswert.

docker update --cpu-shares 768 my-limited-container

Sie sollten den Containernamen als Ausgabe sehen, was den erfolgreichen Update bestätigt.

Um zu überprüfen, ob die CPU-Anteile aktualisiert wurden, können Sie erneut den docker inspect-Befehl verwenden und das Feld CpuShares im Abschnitt HostConfig prüfen.

docker inspect my-limited-container

Suchen Sie in der Ausgabe nach dem Feld CpuShares. Der Wert sollte nun 768 betragen.

Wichtig zu beachten: Die Aktualisierung der CPU-Anteile erfordert keinen Neustart des Containers. Die Änderungen werden dynamisch auf den laufenden Container angewendet.

Speicherlimit eines Containers aktualisieren

In diesem Schritt lernen Sie, wie Sie das Speicherlimit eines laufenden Containers mit dem Befehl docker update anpassen können. Die Begrenzung des Speicherverbrauchs ist entscheidend, um zu verhindern, dass Container übermäßig viel RAM verbrauchen, was zu Leistungsproblemen oder sogar Systeminstabilität auf dem Host führen kann.

Im ersten Schritt haben wir den Container my-limited-container mit einem Speicherlimit von 256 Megabyte erstellt. Nun erhöhen wir sein Speicherlimit auf 512 Megabyte.

Um das Speicherlimit zu aktualisieren, verwenden wir den docker update-Befehl mit dem --memory-Flag, gefolgt vom Containernamen und dem neuen Speicherlimit-Wert.

docker update --memory 512m my-limited-container

Sie sollten den Containernamen als Ausgabe sehen, was den erfolgreichen Update bestätigt.

Um zu überprüfen, ob das Speicherlimit aktualisiert wurde, können Sie den docker inspect-Befehl verwenden und das Feld Memory im Abschnitt HostConfig prüfen.

docker inspect my-limited-container

Suchen Sie in der Ausgabe nach dem Feld Memory. Der Wert sollte nun 536870912 betragen (was 512 Megabyte in Bytes entspricht).

Ähnlich wie bei der Aktualisierung der CPU-Anteile erfordert die Änderung des Speicherlimits keinen Neustart des Containers. Die Änderungen werden dynamisch angewendet.

Neustartrichtlinie (Restart Policy) eines Containers aktualisieren

In diesem Schritt lernen Sie, wie Sie die Neustartrichtlinie eines Containers mit dem Befehl docker update anpassen können. Die Neustartrichtlinie bestimmt, wie sich ein Container verhalten soll, wenn er beendet wird oder wenn der Docker-Daemon neu startet. Dies ist wichtig für die Verfügbarkeit Ihrer in Containern laufenden Anwendungen.

Standardmäßig haben Container die Neustartrichtlinie no, was bedeutet, dass sie nach dem Beenden nicht automatisch neu gestartet werden. Lassen Sie uns die Richtlinie für my-limited-container auf on-failure aktualisieren. Diese Richtlinie startet den Container nur neu, wenn er mit einem Exit-Code ungleich Null beendet wird (was auf einen Fehler hinweist).

Um die Neustartrichtlinie zu aktualisieren, verwenden wir den docker update-Befehl mit dem --restart-Flag, gefolgt vom Containernamen und der gewünschten Richtlinie.

docker update --restart on-failure my-limited-container

Sie sollten den Containernamen als Ausgabe sehen, was den erfolgreichen Update bestätigt.

Um zu überprüfen, ob die Neustartrichtlinie aktualisiert wurde, können Sie den docker inspect-Befehl verwenden und das Feld RestartPolicy im Abschnitt HostConfig prüfen.

docker inspect my-limited-container

Suchen Sie in der Ausgabe nach dem Feld RestartPolicy. Das Name-Feld innerhalb von RestartPolicy sollte nun on-failure anzeigen.

Weitere gängige Neustartrichtlinien sind:

  • no: Startet den Container nicht automatisch neu
  • on-failure[:max-retries]: Startet den Container nur bei Fehlern neu (optional mit maximalen Wiederholungsversuchen)
  • always: Startet den Container immer neu, wenn er beendet wird
  • unless-stopped: Startet den Container immer neu, außer er wurde explizit gestoppt

Die Aktualisierung der Neustartrichtlinie erfordert ebenfalls keinen Neustart des Containers. Die Änderung wird dynamisch übernommen.

Abschließend bereinigen wir den erstellten Container:

docker stop my-limited-container
docker rm my-limited-container

Dies stoppt und entfernt den Container.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Docker-Container-Ressourcen mit dem Befehl docker update verwalten können. Sie begannen mit der Erstellung eines Containers mit initialen CPU- und Speicherlimits unter Verwendung von docker run mit den Flags --cpus und --memory. Dies demonstrierte, wie Sie Ressourcenbeschränkungen während der Container-Erstellung festlegen können, um Ressourcenengpässe auf dem Host zu vermeiden.

Anschließend haben Sie untersucht, wie Sie diese Ressourcenlimits dynamisch für einen laufenden Container anpassen können. Sie lernten, die CPU-Anteile des Containers mit docker update --cpu-shares zu aktualisieren und das Speicherlimit mit docker update --memory anzupassen. Abschließend haben Sie geübt, die Neustartrichtlinie des Containers mit docker update --restart zu ändern, was zeigt, wie Sie das Verhalten des Containers bei Fehlern steuern können.

Diese Schritte vermittelten praktische Erfahrungen in der Verwendung des docker update-Befehls, um die Ressourcenzuweisung und das Verhalten von Containern nach deren Erstellung feinabzustimmen.