Docker 2024 04/Resource Restriction: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Drlue (Diskussion | Beiträge) |
Drlue (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
Im folgenden soll die Limitierung der Ressourcen für Container erläutert werden, diese Informationen Beziehen sich auf das Host System GNU/Linux. | Im folgenden soll die Limitierung der Ressourcen für Container erläutert werden, diese Informationen Beziehen sich auf das Host System GNU/Linux. | ||
Eine Liste der Option zur Ressourcen Limitierung von CPU, Memory, GPU und Disk IO findet sich [https://docs.docker.com/engine/reference/run/ hier] und [https://docs.docker.com/config/containers/resource_constraints/ hier]. | Eine Liste der Option zur Ressourcen Limitierung von CPU, Memory, GPU und Disk IO findet sich [https://docs.docker.com/engine/reference/run/ hier]<ref>https://docs.docker.com/engine/reference/run/</ref> und [https://docs.docker.com/config/containers/resource_constraints/ hier]<ref>https://docs.docker.com/config/containers/resource_constraints</ref>. | ||
Während aller Tests {{BSL|docker stats}} in eigenem Terminal öffnen. | Während aller Tests {{BSL|docker stats}} in eigenem Terminal öffnen. | ||
Version vom 17. April 2024, 18:56 Uhr
Im folgenden soll die Limitierung der Ressourcen für Container erläutert werden, diese Informationen Beziehen sich auf das Host System GNU/Linux.
Eine Liste der Option zur Ressourcen Limitierung von CPU, Memory, GPU und Disk IO findet sich hier[1] und hier[2].
Während aller Tests docker stats in eigenem Terminal öffnen.
Testimage
Dockerfile
Inhalt in Datei Dockerfile
FROM ubuntu:22.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y memtester pv
Building Image
docker build . -t dockerschulung/resource_limiting_base:1.0
Memory
512mb RAM, keine Möglichkeit zum swappen
docker run --memory 512m --memory-swap 512m --rm -it dockerschulung/resource_limiting_base:1.0 bash
# tail will be filled with up to 3000mb at a rate of 100mb/s
head -c 3000m /dev/zero | pv -L 100m | tail
512mb RAM, 1gb swap Speicher
docker run --memory 512m --memory-swap 1536m --rm -it dockerschulung/resource_limiting_base:1.0 bash
# tail will be filled with up to 3000mb at a rate of 100mb/s
head -c 3000m /dev/zero | pv -L 100m | tail
CPU
1 Kern
docker run --cpus 1 --rm -it dockerschulung/resource_limiting_base:1.0 bash
# stress-ng cpu test (16 cores) for 10 seconds
stress-ng --cpu 16 --timeout 10s
2 Kerne
docker run --cpus 2 --rm -it dockerschulung/resource_limiting_base:1.0 bash
# stress-ng cpu test (16 cores) for 10 seconds
stress-ng --cpu 16 --timeout 10s
0.5 Kerne
docker run --cpus 0.5 --rm -it dockerschulung/resource_limiting_base:1.0 bash
# stress-ng cpu test (16 cores) for 10 seconds
stress-ng --cpu 16 --timeout 10s
Disk IO
50mb/s lesen, 10mb/s schreiben
/dev/sda ist hierbei nur ein Beispiel. Je nachdem wohin geschrieben wird, muss das entsprechende Device gefunden werden.
docker run --device-write-bps /dev/sda:10mb --device-read-bps /dev/sda:30mb --rm -it dockerschulung/re
source_limiting_base:1.0 bash
# Write 100mb to /tmp/data (no cache)
dd if=/dev/zero bs=1M count=100 of=/tmp/data oflag=direct
# Read 100mb to /tmp/data (no cache)
dd if=/tmp/data bs=1M of=/dev/null iflag=direct
Network limiting
An dieser Stelle werden wir nicht weiter darauf eingehen, es gestaltet sich nicht so einfach wie die zuvor genannten Limitierungen. Weitere Informationen finden sich hier[3].