도커 데몬
도커의 구조
도커를 사용할 때 docker라는 명령어를 통해 사용하는데 이는 /usr/bin/docker 에 위치하는 파일을 사용하는 것입니다. 그럼 해당 프로세스를 살펴보면
컨테이너나 이미지를 다루는 명령어는 /usr/bin/docker에서 실행되지만 도커 엔진의 프로세스는 /usr/bin/dockerd 파일로 실행되고 있습니다. 이는 docker 명령어가 실제 도커 엔진이 아닌 클라이언트로서의 도커이기 때문입니다.
도커의 구조는 크게 두가지로 나뉩니다. 하나는 클라이언트로서의 도커이고, 다른 하나는 서버로서의 도커입니다. 실제로 컨테이너를 생성하고 실행하며 이미지를 관리하는 주체는 도커 서버이고, 이는 dockerd 프로세스로서 동작합니다. 도커 엔진은 외부에서 API 입력을 받아 도커 엔진의 기능을 수행하는데, 도커 프로세스가 실행되어 서버로서 입력을 받을 준비가 된 상태를 도커 데몬이라고 이야기합니다.
다른하나는 도커 클라이언트 입니다. 도커 데몬은 api 입력을 받아 도커엔진의 기능을 수행하는데 이는 api 를 사용할 수 있도록 CLI를 제공하는 것이 도커 클라이언트 입니다. 사용자가 docker로 시작하는 명령어를 입력하면 도커 클라이언트를 사용하는 것이며, 도커 클라이언트는 입력된 명령어를 로컬에 존재하는 도커 데몬에게 api 로서 전달합니다. 이때 도커 클라이언트는 /var/run/docker.sock에 위치한 유닉스 소켓을 통해 도커 데몬의 API를 호출합니다. 도커 클라이언트가 사용하는 유닉스 소켓은 같은 호스트 내에 있는 도커 데몬에게 명령을전달 할 때 사용됩니다 tcp 로 원격에 있는 도커 데몬을 제어하는 방법도 있습니다.
- 개발자 docker version -> 도커 클라이언트 -> /var/run/docker.sock -> 도커 데몬 -> dockerd -H unix://var/run/docker.sock -H tcp://0.0.0.0:port
즉 터미널이나 PuTTY 등으로 도커가 설치된 호스트에 접속해 docker 명령어를 입력하면 다음과 같은 과정으로 도커가 제어됩니다.
- 사용자가 docker version 같은 도커 명령어를 입력합니다.
- /usr/bin/docker는 /var/run/docker.sock 유닉스 소켓을 사용해 도커 데몬에게 명령어를 전달합니다.
- 도커 데몬은 이 명령어를 파싱하고 명령어에 해당하는 작업을 수행합니다.
- 수행결과를 도커클라이언트에게 반환하고 사용자에게 결과를 출력합니다.
도커 데몬 실행
도커 데몬은 일반적으로 다음과같이 실행, 정지 할 수 있습니다. 우분투에선 도커가 설치되면 자동으로 등록되기 때문에 자동으로 실행됩니다.
service docker start
service docker stop
레드헷
systemctl enable docker
도커 데몬 제어 -H
-H 옵션은 도커 데몬의 API를 사용할 수 있는 방법을 추가합니다. 아무런 옵션을 설정하지 않고 도커 데몬을 실행하면 도커 클라이언트인 /usr/bin/docker 를 위한 유닉스 소켓인 /var/run/docker.sock 을 사용합니다.
-H 에 IP주소와 포트 번호를 입력하면 원격 API인 Docker Remote API로 도커를 제어할 수 있습니다.Remote API는 RESTful API 형식을 띠고 있으므로 HTTP 요청으로 도커를 제어할 수 있습니다.
도커 데몬 모니터링
실시간으로 도커의 상태를 체크하기위해 도커 데모을을 사용해서 도커 데몬 자체를 모니터링할 수 있다.
도커 데몬 디버그 모드
dockerd -D 옵션을 이용해 디버그모드로 들어갈 수 있습니다.
추가적인 명령어
events
events는 도커 데몬에 어떤일이 일어나고 있는지 실시간 스트림 로그로 보여줍니다.
docker events
이때 출력되는 메시지는 컨테이너 관련 명령어나 이미지 관련명령어가 로그로 출력됩니다.
stats
docker stats 명령어는 실행중인 모든 컨테이너의 자원 사용량을 스트림으로 출력합니다.
stats 명령어는 실행 중인 모든 컨테이너의 CPU,메모리 제한 및 사용량,네트워크 입출력(1/0) ,블 록 입출력(하드웨어 입출력) 정보를 출력합니다. 기본적으로 스트림 형태로 출력되며,스트림이 아닌 한 번만 출력하는 방식으로 사용하고 싶다면 一 no-stream 옵션을 추가합니다.
system df
해당 명령어는 도커에서 사용하고 있는 이미지, 컨테이너, 로컬 볼륨의 총 개수 및 사용중인 개수,크기, 삭제합으로써 확보 가능한 공간을 출력합니다.
CAdvisor
CAdvisor 는 구글이 만든 컨테이너 모니터링 도구로, 컨테이너로서 간단히 설치할 수 있고 컨테이너별 실시간 자원 사용량 및 도커 모니터링 정보 등을 시각화 해서 보여줍니다. CAdvisor는 도커 이미지로도 배포되고 있습니다.
CAdvisor에서는 생성된 모든 컨테이너의 자원 사용량을 확인할 수 있을 뿐만 아니라 도커 데몬의 정보,상태,호스트의 자원 사용량까지 한 번에 확인할 수 있습니다. IP 주소와 8080번 포트로 접속
했을 때 확인할 수 있는 페이지는 호스트의 프로세스,자원 사용량 등을 보여줍니다.
그리고 해당 대시보드의 로그를 영속화 하고 싶다면 Prometheus 등을 이용해서 모니터링 정보를 영속화 할 수도 있습니다.
출처 : 시작하세요 도커-쿠버네티스
'Docker' 카테고리의 다른 글
도커 이미지 기본개념 (0) | 2023.08.07 |
---|---|
Dockerfile 기본개념 (0) | 2023.08.07 |
docker/ expose 와 port 의 차이점 (0) | 2023.05.31 |
도커 스웜 개념 (0) | 2023.05.31 |
도커와 컨테이너 생태계 (0) | 2023.05.31 |