Docker 리소스 제한 및 모니터링

2026. 6. 12. 19:37Docker


●  Docker 리소스 제한

 

- Memory 제한

 

- CPU 제한

 

- BLOCK I/O (DIST I/O) 제한


Ⅰ. Memory 제한


Ⅰ - Ⅰ. 메모리 리소스 제한 옵션

Memory 제한 구분 설명 비고
개념 기본적으로 컨테이너는 호스트의 모든 메모리를 사용할 수 있지만,

필요 시 컨테이너 단위로 메모리 사용량을 제한할 수 있음
시스템 안정성 및

리소스 보호 목적
시스템 전체의 안정성과 리소스 관리를 위한 설정 가능
제한 단위 b (bytes) 단위 생략 시

기본값 bytes
k (kilobytes)
m (megabytes)
g (gigabytes)
주요 옵션 옵션 설명
-m, --memory 컨테이너 최대 메모리 용량 지정
--memory-swap 스왑 메모리 포함 총 메모리 제한
--memory-reservation 소프트 제한 (경고 기준)
--oom-kill-disable OOM (Out Of Memory) 킬러 비활성화
OOM

(Out Of Memory)
메모리 초과 시 발생하는 커널 이벤트로,

프로세스를 강제 종료하여 시스템 보호
--oom-killer-disable로

방지 가능
운용 포인트 과도한 메모리 사용 방지 자원 모니터링 필수

(docker stats)
서비스 간 메모리 경쟁 최소화
DB, WAS 등 고부하 컨테이너에 필수

 


Ⅰ - Ⅱ. 명령어 사용 예시

명령어 

사용 예시
예시 설명
docker container run -d -m 512m nginx 최대 메모리 용량 512M,

swap 메모리 용량 512M

으로 설정하고 초과되면

Kill 실시
docker container run -d -m 200m -memory-swap 300m nginx 최대 메모리 용량 2OOM,

swap 메모리 용량 300M

으로 설정하고 초과되면

Kill 실시
docker container run -d -m 100m -memory-swap 100m nginx 최대 메모리 용량 100M으로

설정하고 초과되면 

Kill 실시 (swap 메모리 없음)
docker container run -d -m 1g -memory-swap 1g -memory-reservation 500m nginx 최소 메모리 500M로 

보장하면서 최대 1G까지

사용 가능하고 초과되면

Kill 실시
docker container run -d -m 200m -memory-swap 200m -oom-kill-disable nginx 최대 메모리 200M을 

초과하면 OOM Killer가

프로세스를 Kill하지 

못하도록 설정

 


Ⅱ. CPU 리소스 제한


Ⅱ - Ⅰ. CPU 리소스 제한 옵션

CPU

리소스 제한
구분 설명 비고
개념 컨테이너별 CPU 코어 사용량 및 비율을 제어하여

특정 서비스의  과도한 CPU 점유를 방지
CPU 경쟁 방지 및

성능 보장

주요 옵션
옵션 설명
--cpus 컨테이너가 사용할 수 있는 CPU core 수 지정
예시 설명
ex) --cpus="1.5"  컨테이너가

최대 1.5개의

CPU 파워 사용 가능
--cpuset-cpus 특정 CPU 코어에만 컨테이너 고정
컨테이너가 사용할 수 있는 CPU나 코어 할당
CPU Index는 0부터 시작
예시 설명
ex) --cpuset-cpus="0-2" CPU 0, 1, 2번 코어만

사용 가능하도록 제한
--cpu-share CPU 비중 가중치 설정 (기본값 1024)
예시 설명
ex) --cpu-share=2048 기본값보다 2배 많은

CPU 자원 할당
운용 포인트 동일 호스트에서 여러 컨테이너가 공존할 때 CPU 점유율 균형 유지 CPUU 모니터링과

병행 권장
고성능 프로세스는 전용 코어 배정

 


Ⅱ -Ⅱ. 명령어 사용 예시

명령어

사용 예시
예시 설명
docker container run -d -cpus=".5" ubuntu 0.5개의 CPU 사용 가능
docker container run -d -cpu-share 2048 ubuntu 다른 컨테이너에 비해 2배의 CPU 자원 할당

(다른 컨테이너에 대한 가중치)
docker container run -d -cpu-share 512 ubuntu 다른 컨테이너에 비해 0.5배의 CPU 자원 할당
docker container run -d -cpuset-cpus 0-2 ubuntu CPU 중 0번부터 2번 CPU 할당

 


Ⅲ. BLOCK I / O (DISK I / O) 제한


Ⅲ - Ⅰ. BLOCK I / O 리소스 제한 옵션

BLOCK

I/O 리소스 

제한
구분 설명 비고
개념 컨테이너별 디스크 입출력 속도 (IOPS, BPS)를 제한하여

특정 컨테이너의 과도한 디스크 사용 방지
I / O 병목 방지
주요 옵션 옵션 설명
--blkio-weight 컨테이너별 I / O 우선 순위 설정
Block I / O의 Quota 설정
100 ~ 1000까지 선택 가능
기본값은 500
--device-read-bps 

or 

--device-write-bps
컨테이너의 읽기 / 쓰기 속도를 초단위로 제한
단위 : KB, MB, GB
--device-read-iops

or

--device-write-iops
컨테이너의 읽기 / 쓰기 속도의 Quota 설정
초당 쿼터를 제한해서 I / O 발생시킴
0 이상의 정수로 표시
초당 데이터 전송량은 'IOPS x 블록단위 (단위 데이터 용량)' 계산
운용 포인트 DB, 로그 수집 등 I / O 집약적 워크로드에 유용 I / O 모니터링 툴과 병행 필요
SSD / HDD 병행 환경에서 병목 최소화
서비스별 QoS 제어 가능

 


Ⅲ - Ⅱ. 명령어 사용 예시

명령어

사용 예시
예시 설명
docker container run -it --rm -blkio-weight 100 ubuntu /bin/bash 블록 I / O를 1 / 5

(100 / 500)로 설정

(다른 컨테이너에 비해

1 / 5 정도의 

BLOCK I / O 발생)
docker container run -it --rm -device-write-bps /dev/sda:1mb ubuntu /bin/bash 블록 write I / O를 초당 1MB

속도로 제한
docker container run -it --rm -device-write-bps /dev/sda:10mb ubuntu /bin/bash 블록 write I / O를 초당 10MB

속도로 제한
docker container run -it --rm -device-write-iops /dev/sda:10 ubuntu /bin/bash 초당 데이터 전송량 제한

( 10 x 블록 크기)

 


Ⅳ. Docker 리소스 모니터링


Ⅳ - Ⅰ. 명령어 형식

 

- docker monitoring commands

 


Ⅳ - Ⅱ. 명령어 사용 예시

 

docker container stats [옵션] 컨테이너_이름

 

- 실행 중인 컨테이너의 런타임 통계 확인

 

docker events –f container=<NAME>

 

- Docker 호스트의 실시간 event 정보를 수집해서 출력


Ⅴ. Docker 리소스 제한 및 모니터링

 

- yum -y install epel-release 명령을 통해 epel-release 패키지 설치

 

- yum -y install htop 명령을 통해 htop 패키지 설치

 

 

lscpu | head 명령을 통해 CPU 아키텍처 및 정보 확인

 

lsmen 명령을 통해 시스템 메모리 블록 관련 정보 확인

 

 

free 명령을 통해 시스템의 메모리 사용 현황 확인

 

df -h 명령을 통해 파일 시스템 디스크 사용량을 용량 단위로 보기 쉽게 출력한 뒤 확인

 

lsblk 명령을 통해 블록 장치 구조와 마운트 위치를 트리 구조로 확인

 

 

mkdir –p build 명령을 통해 build 디렉터리 생성

 

(-p 옵션을 통해 상위 디렉터리가 없을 경우, 함께 생성)

 

cd build/ 명령을 통해 build 디렉터리로 이동

 

cat << EOF > Dockerfile 명령을 통해 Dockerfile 파일 생성하고, 내용 입력

 

 

[Dockerfile 파일의 내용]

 

FROM debian 명령을 통해 Dockerfile 파일의 베이스 이미지를 Debian으로 지정

 

RUN apt-get update; apt-get –y install stress 명령을 통해 컨테이너 내에서 stress 패키지 설치

 

CMD [“/bin/sh”, “-c”, “stress –c 2”] 명령을 통해 컨테이너가 실행될 때

 

CPU 2개 코어를 사용하여 stress 명령어 실행하도록 저장

 

EOF 명령을 통해 Dockerfile 파일에 내용 저장하는 것 종료

 

ls 명령을 통해 현재 디렉터리인 build 디렉터리에 Dockerfile 파일이 잘 생성되었는지 확인

 

 

# stress 이미지 빌드

 

docker image build –t stress . 명령을 통해 현재 디렉터리의 Dockerfile 파일을 기반으로 Stress 이미지 빌드

 

 

docker image ls 명령을 통해 Stress 이미지가 잘 생성되었는지 확인

 

docker image inspect stress:latest 명령을 통해 Stress 이미지의 상세 정보 확인


Ⅴ - Ⅰ. stress 명령어

stress

명령어
구분 설명
개념 시스템 또는 Docker 컨테이너의 CPU, 메모리, I / O 사용량을 인위적으로 높여 부하 테스트를 수행하는 도구
주로 리소스 제한 설정이 올바르게 적용되었는지 확인하거나 시스템의 안정성 테스트 시 사용됨
주요 옵션 옵션 설명 비고
--vm 실행할 메모리 할당 프로세스 (vm worker)의 개수 지정 프로세스 개수 = 메모리 부하 정도
--vm-bytes 각 프로세스가 사용할 메모리 크기 지정 단위 : K, M, G 가능
-t [시간] 스트레스 테스트 실행 시간 지정 s (초), m (분), h (시간) 단위
--cpu CPU 코어를 몇 개 사용할지 지정 CPU 부하 테스트용
--io I / O 작업 부하 발생 (디스크 읽기 / 쓰기 시뮬레이션) 디스크 성능 테스트
--timeout 지정 시간 이후 자동 종료 ( = -t와 동일 기능) 자동 종료 설정
--verbose 실행 중 상세 로그 출력 동작 과정 확인 가능

 

 

 

 

# 컨테이너 생성 및 실행

 

time 명령을 통해 뒤에 실행하는 명령어가 완료되는데 걸리는

 

실제(real), 사용자(user), 시스템(sys) 시간 측정해서 보여주도록 설정

 

docker container run stress 명령을 통해 Stress 이미지 사용하여 컨테이너 생성 및 실행

 

--rm 옵션을 통해 실행이 종료되면 자동으로 컨테이너가 삭제되도록 설정

 

-m 100m 옵션을 통해 컨테이너에 할당 가능한 메모리 상한을 100MB로 제한

 

--memory-swap 100m 옵션을 통해 컨테이너 swap 영역 포함 전체 메모리 사용 제한을 100MB로 설정

 

=> 메모리 + swap의 최대 합 = 100MB

 

stress 옵션을 통해 CPU, 메모리 등에 부하를 주는 테스트 유틸리티,

 

컨테이너 내에서 실행할 프로그램 이름과 옵션이 stress라는 것 확인

 

--vm 1 옵션을 통해 1개의 가상 메모리 작업자 (Worker) 생성

 

--vm-bytes 90m 옵션을 통해 각 Worker가 90MB 메모리 블록 할당하도록 지정

 

-t 5s 옵션을 통해 5초 동안 부하를 지속적으로 발생시킴

 

 

# 컨테이너 생성 및 실행

 

time 명령을 통해 뒤에 실행하는 명령어가 완료되는데 걸리는

 

실제(real), 사용자(user), 시스템(sys) 시간 측정해서 보여주도록 설정

 

docker container run stress 명령을 통해 Stress 이미지 사용하여 컨테이너 생성 및 실행

 

--rm 옵션을 통해 실행이 종료되면 자동으로 컨테이너가 삭제되도록 설정

 

-m 100m 옵션을 통해 컨테이너에 할당 가능한 메모리 상한을 100MB로 제한

 

stress 옵션을 통해 CPU, 메모리 등에 부하를 주는 테스트 유틸리티,

 

컨테이너 내에서 실행할 프로그램 이름과 옵션이 stress라는 것 확인

 

--vm 1 옵션을 통해 1개의 가상 메모리 작업자 (Worker) 생성

 

--vm-bytes 150m 옵션을 통해 각 Worker가 150MB 메모리 블록 할당하도록 지정

 

-t 5s 옵션을 통해 5초 동안 부하를 지속적으로 발생시킴

 

 

# 컨테이너 생성 및 실행

 

time 명령을 통해 뒤에 실행하는 명령어가 완료되는데 걸리는

 

실제(real), 사용자(user), 시스템(sys) 시간 측정해서 보여주도록 설정

 

docker container run stress 명령을 통해 Stress 이미지 사용하여 컨테이너 생성 및 실행

 

--rm 옵션을 통해 실행이 종료되면 자동으로 컨테이너가 삭제되도록 설정

 

-m 100m 옵션을 통해 컨테이너에 할당 가능한 메모리 상한을 100MB로 제한

 

stress 옵션을 통해 CPU, 메모리 등에 부하를 주는 테스트 유틸리티,

 

컨테이너 내에서 실행할 프로그램 이름과 옵션이 stress라는 것 확인

 

--vm 1 옵션을 통해 1개의 가상 메모리 작업자 (Worker) 생성

 

--vm-bytes 250m 옵션을 통해 각 Worker가 250MB 메모리 블록 할당하도록 지정

 

-t 5s 옵션을 통해 5초 동안 부하를 지속적으로 발생시킴

 

 

lscpu | head 명령을 통해 CPU 아키텍처, 코어 수, 모델명 등 CPU 관련 정보 처음 10줄만 출력하여 확인

 

 

# c1 컨테이너 생성 및 실행

 

docker container run --name c1 stress 명령을 통해 Stress 이미지 사용하여 c1 컨테이너 생성 및 실행

 

-d 옵션으로 인해 c1 컨테이너를 백그라운드에서 구동

 

--cpuset-cpus 1 옵션을 통해 컨테이너가 사용할 CPU 코어를 1번 코어로 제한

 

stress —cpu 1 옵션을 통해 컨테이너 내부에서 stress CPU 부하 테스트 유틸리티 사용하여 CPU 1개에 부하 부여

 

htop 명령을 통해 시스템의 실시간 프로세스와 리소스 사용 현황 확인

 

docker container ls –a 명령을 통해 컨테이너가 잘 생성되었는지 확인

 

 

# c1 컨테이너 삭제

 

docker containe rm –f 6f 명령을 통해 c1 컨테이너 삭제

 

docker container ls –a 명령을 통해 컨테이너가 잘 삭제되었는지 확인

 

 

# c1 컨테이너 생성 및 실행

 

docker container run --name c1 sterss 명령을 통해 Stress 이미지를 사용하여 c1 컨테이너 생성 및 실행

 

-d 옵션을 통해 c1 컨테이너를 백그라운드로 구동

 

--cpuset-cpus 1 옵션을 통해 컨테이너가 사용할 CPU 코어를 1번 코어로 제한

 

stress —cpu 1 옵션을 통해 컨테이너 내부에서 stress CPU 부하 테스트 유틸리티 사용하여 CPU 1개에 부하 부여

 

htop 명령을 통해 시스템의 실시간 프로세스와 리소스 사용 현황 확인

 

 

# c1 컨테이너 생성 및 실행

 

docker container run --name c1 stress 명령을 통해 Stress 이미지 사용하여 c1 컨테이너 생성 및 실행

 

-d 옵션을 통해 c1 컨테이너를 백그라운드로 구동

 

--cpuset-cpus 0-2 옵션을 통해 CPU 코어 0부터 2까지 3개의 CPU 코어를 컨테이너에 할당

 

stress —cpu 2 옵션을 통해 CPU 2개에 부하를 주는 테스트 진행

 

htop 명령을 통해 stress 프로세스가 CPU를 부하시키는 것 확인

 

docker container ls –a 명령을 통해 현재 실행 중인 c1 컨테이너 확인

 

 

# c1 컨테이너 삭제

 

docker container rm –f 64 명령을 통해 c1 컨테이너 강제로 삭제

 

docker container ls –a 명령을 통해 컨테이너가 잘 삭제되었는지 확인

 

 

# c1 컨테이너 생성 및 실행

 

docker container run --name c1 stress 명령을 통해 Stress 이미지 사용하여 c1 컨테이너 생성 및 실행

 

-d 옵션을 통해 c1 컨테이너를 백그라운드로 구동

 

--cpu-shares 2048 옵션을 통해 CPU 공유 가중치를

 

기본값보다 2배 높은 2048로 설정해 리소스 할당 우선순위 높임

 

 

# c2 컨테이너 생성 및 실행

 

docker container run --name c2 stress 명령을 통해 Stress 이미지 사용하여 c2 컨테이너 생성 및 실행

 

-d 옵션을 통해 c2 컨테이너를 백그라운드로 구동

 

--cpu-shares 1024 옵션을 통해 CPU 공유 가중치를 기본값인 1024로 설정

 

 

# c3 컨테이너 생성 및 실행

 

docker container run --name c3 stress 명령을 통해 Stress 이미지 사용하여 c3 컨테이너 생성 및 실행

 

-d 옵션을 통해 c3 컨테이너를 백그라운드로 구동

 

--cpu-shares 512 옵션을 통해 CPU 공유 가중치를 기본값의 절반인 512로 낮게 설정

 

 

# c4 컨테이너 생성 및 실행

 

docker container run --name c4 stress 명령을 통해 Stress 이미지 사용하여 c4 컨테이너 생성 및 실행

 

-d 옵션을 통해 c4 컨테이너를 백그라운드로 구동

 

--cpu-shares 512 옵션을 통해 CPU 공유 가중치를 기본값의 절반인 512로 낮게 설정

 

docker container ls -a 명령으로 컨테이너가 잘 생성되었는지 확인

 

 

docker container stats 명령을 통해 실행 중인 도커 컨테이너들의 리소스 사용 현황 실시간으로 확인

 

 

# c1, c2, c3, c4 컨테이너 삭제

 

docker container rm -f 08 f6 26 58 명령을 통해 c1, c2, c3, c4 컨테이너 삭제

 

docker container ls -a 명령을 통해 컨테이너가 잘 삭제되었는지 확인

 

 

# c1 컨테이너 생성 및 실행

 

docker container run --name c1 stress 명령을 통해 Stress 이미지 사용하여 c1 컨테이너 생성 및 실행

 

-d 옵션을 통해 c1 컨테이너를 백그라운드로 구동

 

--cpu-shares 200 옵션을 통해 CPU 공유 가중치를 기본값보다 2배 높은 200으로 설정해 리소스 할당 우선순위 높임

 

 

# c2 컨테이너 생성 및 실행

 

docker container run --name c2 stress 명령을 통해 Stress 이미지 사용하여 c2 컨테이너 생성 및 실행

 

-d 옵션을 통해 c2 컨테이너를 백그라운드로 구동

 

--cpu-shares 100 옵션을 통해 CPU 공유 가중치를 기본값인 100으로 설정

 

 

# c3 컨테이너 생성 및 실행

 

docker container run --name c3 stress 명령을 통해 Stress 이미지 사용하여 c3 컨테이너 생성 및 실행

 

-d 옵션을 통해 c3 컨테이너를 백그라운드로 구동

 

--cpu-shares 50 옵션을 통해 CPU 공유 가중치를 기본값의 절반인 50으로 낮게 설정

 

 

# c4 컨테이너 생성 및 실행

 

docker container run --name c4 stress 명령을 통해 Stress 이미지 사용하여 c4 컨테이너 생성 및 실행

 

-d 옵션을 통해 c4 컨테이너를 백그라운드로 구동

 

--cpu-shares 50 옵션을 통해 CPU 공유 가중치를 기본값의 절반인 50으로 낮게 설정

 

docker container ls -a 명령을 통해 컨테이너가 잘 생성되었는지 확인

 

 

docker container stats 명령을 통해 실행 중인 컨테이너들의 리소스 사용량을 실시간으로 확인


Ⅴ - Ⅱ. 컨테이너 리소스 제한 - Block I/O 제한

 

lsblk 명령을 통해 본체 디스크 이름 확인 -> sda

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해  Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-bps=/dev/sda:1mb 옵션을 통해 컨테이너 내부 /dev/sda 장치에 대한 쓰기 속도를 초당 1mb로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=1M 옵션을 통해 한 번에 1MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 10MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

cat file1과 file file1 명령을 통해 생성된 파일 확인

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해 Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-bps=/dev/sda:100mb 옵션을 통해

 

컨테이너 내부 /dev/sda 장치에 대한 쓰기 속도를 초당 100mb로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=1M 옵션을 통해 한 번에 1MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 10MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해 Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-bps=/dev/sda:1000mb 옵션을 통해

 

컨테이너 내부 /dev/sda 장치에 대한 쓰기 속도를 초당 1000mb로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=1M 옵션을 통해 한 번에 1MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 10MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해 Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-bps=/dev/sda:200mb 옵션을 통해

 

컨테이너 내부 /dev/sda 장치에 대한 쓰기 속도를 초당 200mb로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=1M 옵션을 통해 한 번에 1MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 10MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해 Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-bps=/dev/sda:100mb 옵션을 통해

 

컨테이너 내부 /dev/sda 장치에 대한 쓰기 속도를 초당 100mb로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=10M 옵션을 통해 한 번에 10MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 100MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴 

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해 Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-bps=/dev/sda:1000mb 옵션을 통해

 

컨테이너 내부 /dev/sda 장치에 대한 쓰기 속도를 초당 1000mb로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=10M 옵션을 통해 한 번에 10MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 100MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해 Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-iops=/dev/sda:10 옵션을 통해

 

컨테이너 내부 /dev/sda 장치에 대한 초당 I/O 쓰기 작업 수를 10으로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=1M 옵션을 통해 한 번에 1MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 10MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴 

 

 

# 컨테이너 생성 및 실행

 

docker container run ubuntu 명령을 통해 Ubuntu 이미지 사용하여 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

--device-write-iops=/dev/sda:100 옵션을 통해

 

컨테이너 내부 /dev/sda 장치에 대한를 초당 I/O 쓰기 작업 수를 100으로 제한

 

dd 명령을 통해 파일 복사 및 변환

 

if=/dev/zero 옵션을 통해 0으로 채워진 무한대의 데이터를 생성하는 가상 장치 설정

 

of=file1 옵션을 통해 생성된 데이터를 file1이라는 이름의 파일에 저장

 

bs=1M 옵션을 통해 한 번에 1MB씩 데이터 처리

 

count=10 옵션을 통해 10번 반복하여 총 10MB의 파일 생성

 

oflag=direct 옵션을 통해 캐시를 사용하지 않고 디스크에 직접 쓰도록 설정

 

exit 명령을 통해 컨테이너 내부 bash 쉘에서 나옴


Ⅴ - Ⅲ. cAdvisor 설치 및 실행

 

# myweb 컨테이너 생성 및 실행

 

docker container run --name myweb ubuntu 명령을 통해 Ubuntu 이미지 사용하여 myweb 컨테이너 생성 및 실행

 

--it /bin/bash 옵션을 통해 컨테이너 내부에 직접 접근할 수 있는 bash 쉘 실행하도록 설정

 

-d 옵션을 통해 myweb 컨테이너를 백그라운드로 구동

 

--rm 옵션을 통해 실행 끝나면 컨테이너가 자동으로 삭제되도록 설정

 

-m 500m 옵션을 통해 컨테이너가 사용할 메모리 500MB로 제한

 

--cpuset-cpus 0-1 옵션을 통해 컨테이너가 사용할 CPU 코어를 0번과 1번으로 제한

 

cAdvisor 컨테이너 설치 및 실행. docker container ls –a 명령 통해 잘 설치되었는지 확인