ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커 데몬(Docker Daemon)
    BackEnd/docker 2022. 3. 19. 10:04
    반응형

      도커의 구조는 크게 두 가지로 나뉩니다. 하나는 클라이언트로서의 도커이고, 다른 하나는 서버로서의 도커입니다. 실제로 컨테이너를 생성하고 실행하며 이미지를 관리하는 주체는 도커 서버이고, 이는 dockerd 프로세스로서 동작합니다. 도커 엔진은 외부에서 API 입력을 받아 도커 엔진의 기능을 수행하는데, 도커 프로세스가 실행되어 서버로서 입력을 받을 준비가 된 상태를 도커 데몬이라고 이야기합니다.

     

      다른 하나는 도커 클라이언트입니다. 도커 데몬은 API를 입력을 받아 도커 엔진의 기능을 수행하는데, 이 API를 사용할 수 있도록 CLI(Command Line Interface)를 제공하는 것이 도커 클라이언트입니다. 사용자가 docker로 시작하는 명령어를 입력하면 도커 클라이언트를 사용하는 것이며, 도커 클라이언트는 입력된 명령어를 로컬에 존재하는 도커 데몬에게 API로서 전달합니다. 이때 도커 클라이언트는 /var/run/docker.sock에 위치한 유닉스 소켓을 통해 도커 데몬의 API를 호출합니다.

     

      즉, 터미널이나 PuTTY 등으로 도커가 설치된 호스트에 접속해 docker 명령어를 입력하면 아래와 같은 과정으로 도커가 제어됩니다.

    1. 사용자가 docker ps 같은 도커 명령어를 입력합니다.
    2. /usr/bin/docker는 /var/run/docker.sock 유닉스 소켓을 사용해 도커 데몬에게 명령어를 전달합니다.
    3. 도커 데몬은 이 명령어를 파싱하고 명령어에 해당하는 작업을 수행합니다.
    4. 수행 결과를 도커 클라이언트에게 반환하고 사용자에게 결과를 출력합니다.

      이것은 아무런 설정을 하지 않았을 때 일반적으로 도커 데몬을 제어하는 순서입니다. 도커 데몬에 각종 옵션을 추가해 실행한다면 위 순서에 별도의 과정이 포함될 수 있습니다.

     

      도커 데몬에 적용할 수 있는 옵션은 매우 많으며, 일반적으로 도커 설정 파일(ubuntu14.04: /etc/default/docker)을 수정한 뒤 도커 데몬이 설정 파일을 읽어 서비스로 실행되게 합니다. 전체 옵션은 도커 공식 매뉴얼을 참조하기 바랍니다.

     

    도커 데몬 모니터링

    • events 명령어: 도커 데몬에 어떤 일이 일어나고 있는지를 실시간 스트림 로그로 보여줍니다. 아래 명령어를 입력한 직후에는 어떠한 이벤트도 도커 데몬에 발생하지 않았으므로 아무것도 출력되지 않습니다. 새로운 터미널을 연 뒤 ubuntu:14.04 이미지를 pull 하면 다음과 같은 명령어가 출력되는 것을 확인할 수 있습니다.
    $ docker events
    2022-03-19T11:09:46.116745400+09:00 image pull ubuntu:14.04 (name=ubuntu)

      그러나 모든 명령어가 출력되는 것은 아닙니다. attach, commit, copy, create 등의 컨테이너 관련 명령어, delete, import, load, pull, push 등의 이미지 관련 명령어, 볼륨, 네트워크, 플러그인 등에 관한 명령어의 수행 결과가 출력됩니다.

     

      특정 항목(container, image, volumn, network, plugin, daemon)에 대한 출력 결과만 보고 싶다면 --filter 'type=..'처럼 옵션을 설정하면 됩니다.

    $ docker events --filter 'type=image'

     

    • stats 명령어: 실행 중인 모든 컨테이너의 자원 사용량을 스트림으로 출력합니다. 기본적으로 스트림 형태로 출력되며, 스트림이 아닌 한 번만 출력하는 방식으로 사용하고 싶다면 --no-stream 옵션을 추가합니다.
    $ docker stats --no-stream
    CONTAINER ID   NAME       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O      BLOCK I/O   PIDS
    01c6e07ceed4   myserver   0.17%     5.027MiB / 1.938GiB   0.25%     1.3kB / 0B   0B / 0B     57

     

    • system df 명령어: 도커에서 사용하고 있는 이미지, 컨테이너, 로컬 볼륨의 총 개수 및 사용 중인 개수, 크기, 삭제함으로써 확보 가능한 공간을 출력합니다.
    $ docker system df
    TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
    Images          5         4         1.274GB   196.5MB (15%)
    Containers      10        1         1.717kB   177B (10%)
    Local Volumes   4         3         691.9MB   219.5MB (31%)
    Build Cache     11        0         261B      261B

     

      구글이 만든 컨테이너 모니터링 도구인 CAdvisor는컨테이너로서 간단히 설치할 수 있고 컨테이너별 실시간 자원 사용량 및 도커 모니터링 정보 등을 시각화해서 볼 수 있지만 단일 도커 호스트만을 모니터링할 수 있다는 한계가 있습니다. 일반적으로 쿠버네티스나 스웜 모드 등과 같은 오케스트레이션 툴을 설치한 뒤 프로메테우스(Prometheus), InfluxDB 등을 이용해 여러 호스트의 데이터를 수집합니다.

    반응형

    'BackEnd > docker' 카테고리의 다른 글

    도커 컴포즈(Docker Compose)  (1) 2022.03.24
    Dockerfile 명령어  (0) 2022.03.18
    Dockerfile  (0) 2022.03.16
    이미지 배포(Image Deploy)  (0) 2022.03.15
    도커 이미지(Docker Image)  (0) 2022.03.15

    댓글

Designed by Tistory.