Container-Ressourcenverwaltung
Verständnis von Containerressourcen
Die Verwaltung von Containerressourcen ist entscheidend für die Optimierung der Leistung, die Sicherstellung einer fairen Ressourcenverteilung und die Vermeidung von Systemüberlastungen.
Dimensionen der Ressourcenverwaltung
mindmap
root((Container-Ressourcenverwaltung))
CPU
Limits
Shares
Speicher
Hard Limit
Soft Limit
Netzwerk
Bandbreite
Verbindungslimits
Speicherplatz
Festplatten-E/A
Volume-Quoten
CPU-Ressourcenkontrolle
CPU-Allokierungsstrategien
Strategie |
Beschreibung |
Docker-Flag |
CPU-Anteile |
Relative CPU-Zeitzuweisung |
--cpu-shares |
CPU-Kerne |
Begrenzung auf bestimmte CPU-Kerne |
--cpuset-cpus |
CPU-Periode |
Steuerung der CPU-Allokierungszeit |
--cpu-period |
CPU-Kote |
Begrenzung der CPU-Nutzung in Prozent |
--cpu-quota |
Beispiele für CPU-Ressourcen
## Container auf 50% eines CPU-Kerns begrenzen
docker run -d --cpus=0.5 nginx:latest
## Container auf bestimmte CPU-Kerne zuweisen
docker run -d --cpuset-cpus="0,1" web-app
## CPU-Anteile festlegen (Standardwert ist 1024)
docker run -d --cpu-shares=512 background-service
Speicherverwaltung
Speicherallokationstechniken
## Festes Speicherlimit festlegen
docker run -d --memory=500m nginx:latest
## Weiches Speicherlimit mit Reservierung festlegen
docker run -d --memory=1g --memory-reservation=750m web-app
## Verhindern, dass der Container übermäßigen Speicher verbraucht
docker run -d --oom-kill-disable=false --memory=500m app
Speicherplatz- und E/A-Verwaltung
flowchart LR
A[Speicherplatzverwaltung] --> B[Volumes]
A --> C[Bind Mounts]
A --> D[Tmpfs Mounts]
B --> E[Permanenter Speicher]
C --> F[Integration in das Hostsystem]
D --> G[Temporärer Speicher im Arbeitsspeicher]
Befehle zur Speicherplatzallokation
## Erstellen eines benannten Volumes
docker volume create app-data
## Volume an Container mounten
docker run -v app-data:/app/data nginx:latest
## Festplatten-E/A des Containers begrenzen
docker run --device-write-bps /dev/sda:10mb web-app
Netzwerkressourcenkontrolle
## Netzwerkbandbreite begrenzen
docker run --net-alias=limited-network \
--network-bandwidth=100kbps \
web-service
## Begrenzung der Netzwerkverbindungslimits
docker run --ulimit nproc=50 app-container
Überwachung der Ressourcenverwendung
Docker-Befehle zur Ressourcenüberwachung
## Echtzeit-Statistiken zu Containerressourcen
docker stats
## Konfiguration der Containerressourcen anzeigen
docker inspect --format '{{.HostConfig.Memory}}' container-name
Best Practices für die Ressourcenverwaltung
- Festlegung angemessener Ressourcenlimits
- Verwendung von Ressourcenreservierungen
- Überwachung der Containerleistung
- Implementierung von mehrstufigen Builds
- Verwendung von Docker Compose für komplexe Konfigurationen
Werkzeug |
Zweck |
cAdvisor |
Containerüberwachung |
Prometheus |
Metrikensammlung |
Grafana |
Visualisierung |
Lernen mit LabEx
LabEx bietet umfassende praktische Umgebungen, um erweiterte Docker-Ressourcenverwaltungstechniken zu üben und Entwicklern zu helfen, die Leistung und Effizienz von Containern zu optimieren.