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
- 구글이 만든 컨테이너 모니터링 도구. 자원 사용량 / 도커 모니터링 정보 등을 시각화 표시