본문 바로가기

IT 엔지니어/CLOUD

Docker -1

docker0 = 도커의 Gateway

docker network create (-d bridge) br1
docker network create -d host 
--subnet 192.168.10.0/24 
--gateway 192.168.10.1 br1

docker network create br0 
/ bridge=default

[Attach / Detach]

docker attach [컨테이너명] - 진

CTRL + P / Q / C

docker exec 명령 실행까지 진행 

docker run -it  --name myweb ubuntu bash

docker exec [컨테이너명] touch /tmp/test.txt

docker exec [이름] ls /tmp
docker exec [이름] ps aux

** 꿀팁 **
docker top [이름] - top 명령 가능

docker stats [이름]
docker port [name]
docker rename web1 web2

호스트 -> 컨테이너
docker cp /index.html web2:/usr/share/nginx/html 

Successfully copied 2.05kB to web2:/usr/share/nginx/html

---------------------------------

컨테이너 -> 호스트
docker cp web2:/usr/share/nginx/html/index.html /tmp

docker logs [name] - 로그 확인

docker logs -f [name] - 실시간 로그

[리소스 제한]

최소 메모리 용량 6M (LIMIT)
최대 메모리 용량 512M
SWAP 메모리 용량 512M 설정
--------------------------------
초과시 KILL

docker run -d -m 512m --memory-swap 512m nginx

docker run -d -m 512m --memory-swap 512m --00m -kill-disable nginx

---------------------------------
[CPU 제한]

docker run -d -m 128m --cpus="0.5" nginx

[2배 / 0.5배 할당]

docker run -d --cpu-shares 2048/ 512 ubuntu 

[CPU 중 0-1번 CPU 할당]
docker run -d --cpuset-cpus 0-1 ubuntu

docker inspect test1 | grep Cpuset
"CpusetCpus": "0-1",

Block I/O 리소스 제한
1. 0.2배 설정(기본 500MB)
docker run -it --blkio-weight 100 ubuntu /bin/bash

docker inspect --format='{{.HostConfig.BlkioWeight}}' test

2. Write I/O 초당 1M 속도 제한
docker run -it --device-write-bps /dev/sda:1mb ubuntu

3.  초당 데이터 전송량 제한
docker run -it --device-write-iops /dev/sda:10 ubuntu

stat -fc %T /sys/fs/cgroup
cgroup2fs 

⚠️ cgroup v2는 --device-write-iops 비호환!
cgroup v2에서는 blkio가 아닌 io 컨트롤러를 쓰고, 도커에서 공식적으로 아직 완전 지원하지 않아.
→ 우회하려면 cgroup v1으로 부팅하거나 systemd 세팅 수정해야 하는데, 보통 복잡함.
1. HOST 모니터링
dnf -y install htop/glances
htop /glances

lscpu -a
lsmem
free

2. Dockerfile 이용한 STRESS 이미지 빌드

mkdir build
cat << EOF > Dockerfile
FROM debian
RUN apt-get update; apt-get -y install stress
CMD ["/bin/sh","-c"."stress -c 2"]
EOF

docker build -t mystress .

 

 

메모리 100M 제한 / stress 이용하여
80M 프로세스 1개 5초동안 수행

 time docker run --rm -m 100m --memory-swap 100m stress stress --vm 1 --v-bytes 90m -t 5s
 
 
 stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [1] successful run completed in 5s

real	0m5.218s
user	0m0.007s
sys	0m0.010s

 

 

 

🔧 주요 기능 (옵션)

옵션 설명

--cpu N N개의 CPU 부하 작업 실행
--vm N N개의 메모리 부하 작업 실행
--vm-bytes X 메모리 X만큼 사용 (ex. 100M)
--io N N개의 IO 작업 실행
--hdd N N개의 디스크 쓰기 작업 실행
-t SECONDS 몇 초 동안 부하를 줄지 지정
docker run -d --cpuset-cpus 1 --name cpu1 stress stress --cpu 1

 

 

 

[CPU 개수 제한]
time docker run --rm -m 100m --memory-swap 100m stress stress --cpu 1 --vm 1 --vm-bytes 95m -t 60s

[swap 제한]

time docker run --rm -m 100m --memory-swap 300m --pid=host stress stress --vm 1 --vm-bytes 250m --vm-hang 0 -t 30s

docker run --rm -m 100m --memory-swap 200m --cpus 0.5  stress stress --vm 1 --vm-bytes 90m -t 30s

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

Docker image  (0) 2025.05.14
Docker Resource Limit  (0) 2025.05.13
Docker Network 심화  (0) 2025.05.12
Docker file  (0) 2025.05.11
Docker Network  (0) 2025.05.11