본문 바로가기

IT 엔지니어/CLOUD

Docker Resource Limit

메모리 제한

docker run --rm -m 100m --memory-swap 100m mystress \\
  stress --vm 1 --vm-bytes 95m -t 30s

메모리 할당기 1개로 95mb 점유

  • m 100m: 메모리 제한
  • -memory-swap 100m: 스왑 사용 안 함
  • -vm-bytes: 메모리 점유

CPU 제한

docker run --rm --cpus="0.5" stress \\
  stress --cpu 1 -t 30s

  • -cpus="0.5": 최대 CPU 사용 비율 제한

CPU share 방식:

docker run -d --cpu-shares=512 ubuntu sleep 300

docker run --rm --cpus="0.3" stress
\\ stress --cpu 2 -t 30s
CPU 2개를 30% 까지 사용 제한
2개이므로 각각 15%까지 사용 제한

 

 

 

swap 제한

docker run --rm -m 100m --memory-swap 200m stress \\
  stress --vm 1 --vm-bytes 150m -t 30s

메모리 = 메모리 스왑 => 스왑 0
메모리 스왑 없이 메모리만 => 스왑 무제

블록 I/O 제한

1.컨테이너 쓰기 속도 10mb 구동 후 DISK I/O 발생

docker run -it --rm --device-write-bps=/dev/nvme0n1:10 ubuntu /bin/bash

docker run -it --rm --device-write-iops=/dev/nvme0n1:10 ubuntu bash
(input & output)

dd if=/dev/zero of=file1 bs=10M count=100 (oflag=direct)

dd if=/dev/zero of=output.img bs=1M count=1 (oflag=direct)

fallocate -l 파일 크기

 

 

 

 

[구버전]

docker run -d \\
--name=cadvisor \\
--volume=/:/rootfs:ro \\
--volume=/var/run:/var/run:ro \\
--volume=/sys:/sys:ro \\
--volume=/var/lib/docker/:/var/lib/docker:ro \\
--publish=8080:8080 \\
--restart=unless-stopped \\
google/cadvisor:latest

[신버전]

docker run \\
  --volume=/:/rootfs:ro \\
  --volume=/var/run:/var/run:ro \\
  --volume=/sys:/sys:ro \\
  --volume=/var/lib/docker/:/var/lib/docker:ro \\
  --volume=/dev/nvme0n:/dev/nvme0n:ro \\
  --publish=8080:8080 \\
  --detach=true \\
  --name=cadvisor \\
  --privileged \\
  gcr.io/cadvisor/cadvisor:v0.47.0
  cadvisor:$VERSION

🧩 구성 요소별 해석

명령어 파트 설명

docker run 새 컨테이너를 실행
--volume=/:/rootfs:ro 호스트의 루트 디렉토리(/)를 컨테이너의 /rootfs에 읽기 전용(ro) 으로 마운트
--volume=/var/run:/var/run:ro var/run 디렉토리도 읽기 전용으로 마운트 (소켓 등 포함)
--volume=/sys:/sys:ro 시스템 정보 제공하는 /sys 디렉토리 마운트 (CPU, 메모리 등 정보 접근용)
--volume=/var/lib/docker/:/var/lib/docker:ro 도커 내부 정보 접근용 (컨테이너, 이미지, 레이어 등 상태 확인 가능)
--publish=8080:8080 호스트의 8080 포트를 컨테이너의 8080 포트에 연결 (웹 브라우저로 접속 가능하게)
--detach=true 컨테이너를 백그라운드에서 실행 (터미널 점유 안 함)
--name=cadvisor 컨테이너 이름을 cadvisor로 지정
gcr.io/cadvisor/cadvisor:v0.47.0 사용할 이미지 (구글에서 배포한 cadvisor 최신 버전)
docker run -itd --rm --name myweb
-m 500m --cpuset-cpus 0-1 ubuntu

'IT 엔지니어 > CLOUD' 카테고리의 다른 글

Docker  (1) 2025.05.15
Docker image  (0) 2025.05.14
Docker -1  (0) 2025.05.13
Docker Network 심화  (0) 2025.05.12
Docker file  (0) 2025.05.11