Dev

[THE SOPT 도커 스터디] Week4 - 2.5. 도커 데몬

1. 도커의 구조

  • 도커의 구조는 크게 두 가지로 나뉨 : 클라이언트로서의 도커, 서버로서의 도커
  • 도커 서버 : 실제로 컨테이너 생성, 실행, 이미지 관리
    • 도커 엔진의 프로세스는 /usr/bin/dockerd 파일로 실행
    • 도커 엔진은 외부에서 API 입력을 받아 도커 엔진의 기능을 수행
    • 도커 프로세스가 실행되어 서버로서 입력을 받을 준비가 된 상태가 '도커 데몬
  • 도커 클라이언트 : API를 사용할 수 있도록 CLI를 제공
    • 유닉스 소켓을 통해 도커 데몬의 API를 호출, 입력된 명령어 전달

2. 도커 데몬 실행

service docker start
service docker stop
dockerd # 도커 데몬에 대한 정보 출력, 입력을 받을 수 있는 상태

3. 도커 데몬 설정

  • 설정 파일의 DOCKER_OPTS를 수정하고, 도커 데몬이 설정 파일을 읽어 서비스로 실행되게 하는 것이 일반적
  • 도커 데몬 제어 : -H
    • Remote API는 HTTP 도구를 사용하기보다는 언어별로 존재하는 라이브러리를 주로 사용!
  • dockerd -H tcp://0.0.0.0:2375 # Docker Remote API로 도커 제어 가능! 복수 지정 가능!
  • 도커 데몬에 보안 적용 : —tlsveify
    • 보안이 적용되지 않으면 IP와 port만으로 도커 데몬 제어 가능
    • 클라이언트, 서버가 보안 파일을 주고받으며 검증된 사용자만 도커 데몬 제어하도록 허용
  • 도커 스토리지 드라이버 변경 : —storage-driver
    • 도커를 설치할 때 기본적으로 사용하도록 설정된 스토리지 드라이버 존재
    • 명령어를 통해 다른 스토리지 드라이버로 변경 가능
    • 어떤 스토리지 드라이버를 사용할지는 컨테이너 애플리케이션 및 개발 환경에 따라 다름
    • 스토리지 드라이버의 원리는 스냅숏 (CoW, RoW)
    • 드라이버 별로 원리와 사용법은 너무 많아서 생략했습니다 ^ㅠ^
  • 컨테이너 저장 공간 설정
    • 컨테이너 내부에서 사용되는 파일 시스템의 크기는 스토리지 드라이버에 따라 다름
      • AUFS, overlay2 : 컨테이너와 호스트가 저장 공간 크기 공유
      • debicemapper : 컨테이너가 기본적으로 10GB의 저장 공간 할당 받음
    • 역시 드라이버 별로 저장 공간 설정, 제한 등의 방법은 모두 다름

4. 도커 데몬 모니터링

  • 다양한 목적으로 도커 데몬을 모니터링하는 경우가 많음
  • 도커 데몬 디버그 모드
    • 도커 데몬을 실행할 때 -D 옵션 추가
    • Remote API, 로컬 도커 클라이언트 입출력, 명령어를 로그로 출력
    • 너무 많은 정보가 출력, 포그라운드로 실행해야 한다는 단점 존재
  • events, stats, system df 명령어
    • events
      • 도커가 기본적으로 제공하는 명령어
      • 도커 데몬에 일어나는 일을 실시간 스트림 로그로 보여줌
      • 모든 명령어가 출력되지는 않음
      • —filter 옵션을 이용해 원하는 정보만 출력 가능
    • stats
      • 모든 컨테이너의 자원 사용량을 스트림으로 출력
      • —no-stream을 사용하면 스트림이 아니라 한 번만 출력하는 방식으로 사용
    • system df
      • 이미지, 컨테이너, 로컬 볼륨의 총 / 사용 중 개수, 크기, 삭제 후 확보 가능 공간 표시
      • docker container prune # 사용 중이지 않은 컨테이너 한꺼번에 삭제 docker volume prune # 사용 중이지 않은 볼륨 한꺼번에 삭제 docker image prune # 사용 중이지 않은 댕글링 이미지 한꺼번에 삭제
  • CAdvisor
    • 구글이 만든 컨테이너 모니터링 도구. 자원 사용량 / 도커 모니터링 정보 등을 시각화 표시