Docker 2024 04/Resource Restriction
Im folgenden soll die Limitierung der Ressourcen für Container erläutert werden, diese Informationen Beziehen sich auf das Host System GNU/Linux.
Eine vollständige Liste der Option zur Ressourcen Limitierung von CPU, Memory und GPU findet sich hier.
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:50mb --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 | pv | dd of=/tmp/data oflag=direct
# Read 100mb to /tmp/data
dd if=/tmp/data | pv