areum

[Docker] 컨테이너 리소스 관리 및 모니터링-CPU,Memory 본문

Docker

[Docker] 컨테이너 리소스 관리 및 모니터링-CPU,Memory

armmy 2022. 12. 2. 13:42
728x90

컨테이너를 생성 시 다양한 옵션이 존재하지만  오늘은 CPU와 Memory 관련해서 알아보도록 하겠습니다.

기본적으로 컨테이너를 생성할 때, 하드웨어 리소스의 사용 제한을 받지 않습니다. 그렇기 때문에 하나의 컨테이너가 모든 리소스를 사용할 수 있게 되고, 다른 컨테이너가 상대적으로 적은 리소스를 사용하게 됩니다.

 

  1. memory 리소스할당
  2. cpu 리소스 할당
  3. 이미 생성된 container 리소스 재설정
  4. 리소스 확인

1. Memory 리소스 할당


docker run -d -m 500m [컨테이너이름:tag]

docker run -d -m 1g --memory-reservation 500m [컨테이너 이름:tag]

docker run -d -m 200m --memory-swap 300m [컨테이너 이름:tag] // 실제 mem=200m, swap=100m

docker run -d -m 200m --oom-kill-disable [컨테이너 이름:tag]

2. CPU 리소스 할당


docker run -d --cpus="1.5" [컨테이너이름:tag이름]

docker run -d --cpu-shares 1024 [컨테이너이름:tag이름]

docker run -d --cpuset-cpus 0-3 [컨테이너이름:tag이름]

3. 이미 생성된 container 리소스 재설정


docker update [리소스 설정] [컨테이너 이름]
docker update --cpus=5 test

4-1. 리소스 확인 (실시간)


# 전체 컨테이너 실시간 사용률 확인
docker container stats 

# 특정 컨테이너 실시간 사용률 확인
docker container stats [컨테이너 이름]

4-2. 리소스 확인 (컨테이너 자체 설정된 리소스)


# 모든 정보가 다 나옴 
docker inspect [컨테이너이름]

# 특정 항목만 보려면(메모리)
docker inspect [컨테이너이름]|grep "Memory"

# 특정 항목만 보려면(cpu)
docker inspect [컨테이너이름]|grep "Cpus"
> "NanoCpus":1000000000 => 1개 라는 의미

* 자세한건 아래 docker 공식 document에서 !

https://docs.docker.com/engine/reference/commandline/run/