가장 간단한 방법은
docker inspect 컨테이너name 명령어를 쓰는 것이다.
- | grep \"Memory\" : 메모리 확인
run 명령어에서 설정된 컨테이너에서 할당 자원을 제한하거나 업데이트 할 수 있는 방법
docker update [변경할 자원 제한] [컨테이너name]
메모리 제한
( 너무 작은 메모리는 할당하면 메모리 부족으로 컨테이너 실행되지 않음 )
docker run -d
--memory="1g"
--name memory_1g
nginx
CPU 제한
컨테이너에 가중치를 설정해 해당 컨테이너가 CPU를 얼마나 사용할 수 있는지 나타내준다. (비율로 생각하면 됨)
docker run -d
--cpu-shares 1024
--name cpu_share
nginx
--cpiset-cpu : 호스트에 cpu가 여러개 있을 경우 특정 cpu만 사용하도록 설정할 수 있음
컨테이너 CFS(conpletely Fair scheduler_ 주기를 바꿔줄 수도 있다.
--cpu-period : 기본값은 100000, 100ms
--cpu-quota : --cpu-period에 설정된 시간 중 CPU 스케줄링에 얼마나 할당할 것인지 설정
ex) --cpu-period=100000 --cpu-quota=250000 이렇게 사용하면 cpu 주기를 1/4만 사용하겠다. (성능 1/4 로 감소)
--cpus : 위에 CFS 바꾸는 것과 동일하지만 그냥 비율을 넣어준다. ex) --cpus=0.5
Block I/O 제한
컨테이너를 생성할 때 아무런 옵션도 설정하지 않으며 컨테이너 내부에서 파일을 읽고 쓰는 대역폭에 제한이 설정되지 않는다. 하나의 컨테이너가 블록 입출력을 과도하게 사용하지 않게 설정할려면 run 명령어에서
--device-write-bps,
--device-read-bps,
--device-write-iops,
--device-read-iops
옵션을 지정해 블록 입출력을 제한을 주어야 한다.
단, Direct I/O 의 경우에만 블록 입출력이 제한되며, Buffered I/O 는 제한되지 않는다.
--device-write-bps, --device-read-bps : 각기 쓰고 읽는 작업의 초당 제한을 설정하며, kb, mb, gb 단위로 제한할 수 있다.
다음 명령어로 컨테이너를 생성하면 초당 쓰기 작업의 최대치가 1MB 로 제한된다.
# docker run -it \
--device-write-bps /dev/xvda:1mb \
ubuntu:14.04
여기서 사용되는 Block I/O 를 제한하는 옵션은 [디바이스 이름]:[값] 형태로 설정
다음 명령어는 10MB의 파일을 Direct I/O 를 통해 쓰기 작업을 수행한다.
root@6762cabed8b1:/# dd if=/dev/zero of=test.out bs=1M conut=10 oflag=direct
10+0 records in
10+0 record out
10485760 bytes (10 MB, 10MiB) copied, 10.0315 s, 1.0MB/s
CPU의 자원 할당에서 --cpu-share 에 상대적인 값을 입력했던 것처럼 --device-write-iops, --device-read-iops 에도 상대적인 값을 입력함.
# docker run -it \
--device-write-iops /dev/xvda:5 \
ubuntu:14.04
root@9af770684ef6:/# dd if=/dev/zero of=test.out bs=1M count=10 oflag=direct
10+0 records in
10+0 record out
10485760 bytes (10 MB, 10MiB) copied, 2.02604 s, 5.2MB/s
# docker run -it \
--device-write-iops /dev/xvda:10 \
ubuntu:14.04
root@12ad7be4d3df:/# dd if=/dev/zero of=test.out bs=1M count=10 oflag=direct
10+0 records in
10+0 record out
10485760 bytes (10 MB, 10MiB) copied, 1.02254 s, 10.3MB/s
스토리지 드라이버와 컨테이너 저장 공간 제한
도커 엔진은 컨테이너 내부의 저장 공간을 제한하는 기능을 보편적으로 제공하지는 않지만, 도커의 스토리지 드라이버나 파일 시스템 등이 특정 조건을 만족하는 경우에만 이 기능을 제한적으로 사용할 수 있다.
단, 모든 스토리지 드라이버에서 컨테이너의 저장 공간을 제한할 수 있는 것은 아니다.
따라서 컨테이너 애플리케이션이 해당 스토리지 드라이버에 적합하지 않다면 이 기능을 사용하지 않는 것이 좋을 수도 있다.
'Docker' 카테고리의 다른 글
Docker File (0) | 2021.01.04 |
---|---|
Docker 이미지 (0) | 2021.01.04 |
컨테이너 로깅 (0) | 2020.12.30 |
도커 네트워크 (0) | 2020.12.30 |
Docker 명령어 (기본 + 볼륨) (0) | 2020.12.28 |