IT/도커
9. 도커 엔진, cgroups
노오-력
2023. 1. 25. 22:17
리눅스 호스트에 docker를 설치하면 컴포넌트가 3개 설치된다.
Docker Daemon은 docker객체인 이미지와 컨테이너,
볼륨 및 네트워크를 관리하는 백그라운드 프로세스이다.
Docker REST API 서버는 프로그램이 쓰는 API인터페이스로
Daemon과 통신하고 명령어를 제공할때 사용된다.
Docker CLI는 명령줄 인터페이스이며
컨테이너 실행, 중지 및 이미지 제거 등에 사용된다.
또한 REST API를 사용하여 Docker Daemon과 상호작용하는데
이때는 Docker CLI가 반드시 같은 호스트에 있지 않아도 된다.
docker 명령어에서 -H 옵션을 사용해서
원격 Docker Engine의 주소와 포트를 지정하면 된다.
cgroups
Docker 호스트와 컨테이너는
CPU와 메모리 등의 동일한 시스템 리소스를 공유한다.
호스트 및 컨테이너에 각각 얼마만큼의 리소스가 할당될까?
도커는 컨테이너 간 리소스를 어떻게 관리하고 공유할까?
컨테이너가 사용할 수 있는 리소스는 기본적으로 제한이 없어서
컨테이너는 결국 기본 호스트의 모든 리소스를 활용할 수 있다.
하지만 컨테이너가 사용할 CPU나 메모리의 양을 제한할 수 있다.
Docker Cgroups 즉, 제어 그룹을 사용하여
각 컨테이너에 할당된 하드웨어 리소스 양을 제한할 수 있다.
ex) cpu사용량을 50프로로 제한하기
$ docker run --cpus=.5 ubuntu
ex) memory 사용량을 100MB로 제한하기
$ docker run --memory=100m ubuntu
--cups 옵션을 사용해 cpu 사용 %를 제한 할 수 있고
--memory 옵션을 사용해 사용할 수 있는 메모리 양을 제한할수있다.