여러 컨테이너를 운용하고, 각 컨테이너 별로 사용하는 사용자가 다르다면 서로의 자원이 공유되기 때문에 형평성이 맞게 자원을 분배 할당해야하는 시점이 올 것이다.
오늘은 서버 관리자로 잠깐 빙의해서, 각 컨테이너별 가상의 유저가 있다고 생각하고 자원을 균형있게 할당해보도록 하겠다.
# 컨테이너 현재 상태 확인
docker inspect [컨테이너명]
docker inspect my_container
CpusetCpus, CpusetMems 가 " " 로 비어있는 것을 확인할 수 있다. 비어있는 부분을 채워주어야한다.
# 컨테이너 별 현재 cpu, memory 사용량 확인
docker stats --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
간단하게는 docker stats 로 모든 stats에 대해서도 알아볼 수 있다.
docker stats
# 코어 할당
docker update --cpuset-cpus="0-n" [컨테이너명]
ex) 컨테이너 자원할당 cpu 갯수 15개로 제한
docker update --cpuset-cpus="0-14" my_container
총 30개의 core가 있다고 가정해보자. 그런 경우 0~14 코어를 my_container 라는 컨테이너가 가용한 core로 주고 싶을 때, 위와 같은 명령을 사용하면 된다
# 메모리 할당
docker update -m [할당하고자 하는 메모리 크기]m [컨테이너명]
ex) 컨테이너 자원할당 메모리 512m 로 제한
docker update -m 512m my_container
물론 메가바이트(m) 제한 뿐만 아니라, 기가바이트(G) 제한도 가능하다. 옵션을 m을 G로 변경해주면 된다.
또한, update가 아니라, 애초에 컨테이너를 올릴때(run) 에도 동일한 옵션으로 자원 할당 제한이 가능하다.
다음 시간에는, 컨테이너를 이미지화(commit)하여, 그 이미지를 원격 repository(docker hub)에 push 하는 기능에 대해 알아보도록 하겠다. 이 기능을 통해 협업하는 구성원들에게 수월하게 개발 환경을 공유할 수 있을 것이다.
728x90
'Data Engineering(Pipeline, Hadoop...) > Docker' 카테고리의 다른 글
Docker Container 날짜(date) 한국시간(KST)으로 변경하기 (0) | 2022.10.20 |
---|---|
Docker 파헤치기 4(컨테이너 이미지화[commit] -> 배포[push]) (0) | 2022.09.24 |
Docker 파헤치기 2(데이터 공유 및 볼륨 마운트) (0) | 2022.09.22 |
Docker 파헤치기 1(기본 명령어 및 옵션) (1) | 2022.09.21 |
Docker 컨테이너(jupyter)로 khaiii 형태소분석기 실행해보기 (0) | 2022.09.21 |