도커 클라이언트와 도커 데몬
- 도커 클라이언트: Mac 기준
/usr/local/bin/docker
, 리눅스 기준/usr/bin/docker
에 존재. 도커데몬의 API를 호출함으로써 유저가 CLI로 도커를 이용할 수 있도록 한다./var/run/docker.sock
Unix 소켓을 이용한다. - 도커 서버(데몬 - dockerd):
/usr/bin/dockerd
(Mac에서는 도커 데스크탑에 존재).dockerd
명령어를 통해 도커 데몬을 포그라운드 형태로 직접 실행할 수 있다.--insecure-registry
-> 레지스트리 컨테이너 구축 /--storage-opt
-> 스토리지 백엔드 변경 등 다양한 도커 데몬 설정이 가능하고, 매번 직접 CLI로 칠 필요 없이 설정파일DOCKER_OPTS
에 입력해놓을 수 있다.- k8s로 따지면 Podman에 대응된다고 보면 된다.
도커 데몬 제어: -H
- 해당 옵션과 함께 IP, port를 적어두면 원격 API인 Docker remote API로 도커를 제어할 수 있다. (HTTP 요청)
- 만일 remote docker daemon 주소만 적으면 해당 도커 데몬에 로컬에서 사용하던 unix 소켓이 비활성화 되어 로컬 CLI를 사용 할 수 없게 되니, 함께 입력하면 둘다 요청을 받아 처리할 수 있다.
- 각 언어별로 라이브러리들이 오픈소스 형태로 존재한다. 개발에 필요한 경우 이용할 수 있다.
도커 데몬에 보안 : –tlsverify
: 기본적으로 도커에는 보안 연결이 설정돼있지 않는다. remote API를 사용할 때도 마찬가지이기 때문에 TLS를 적용해야한다.
스토리지 드라이버 변경: –storage-driver
: 도커는 스토리지 백엔드 기술을 이용해 컨테이너와 이미지를 저장 및 관리한다. Mac에서는 overlay2.
- 스냅샷의 개념이 이용된다: 원본은 읽기전용으로 사용하고 변경은 새로운 공간에 할당하기
- CoW: 스냅샷 공간에 원본파일 복사 후 변경사항 쓰기. (write 오버헤드 2회)
- RoW: 원본 스냅샷을 freeze 시킨 뒤 스냅샷 공간에 변경된 사항 새롭게 할당받아 쓰기(write 1회)
- 이미지 레이어는 각 스냅샷에 해당한다. 컨테이너 레이어의 변경점을 커밋하면 변경사항(diff)가 스냅샷(commit)으로 생성되고 해당 diff는 하나의 이미지 레이어로서 존재한다.
데몬 모니터링
: 컨테이너 상태 뿐 아니라 도커를 PaaS로 제공하는 경우를 위해 도커 데몬 자체를 모니터링 할 수 있다.
- events: 컨테이너, 이미지, 볼륨 네트워크 관련 명령어 실행 결과를 모니터링
- stats: 컨테이너 자원 사용량 모니터링
- system df: 컨테이너, 이미지, 볼륨 사용량과 삭제함으로써 확보 가능한 공간 등 모니터링 -> prune 관련
- CAdvisor: 호스트의 도커 관련 디렉터리를 모두 해당 컨테이너와 볼륨 공유한다. 리소스, 컨테이너 상태 등을 확인 할 수 있다. 호스트의 도커 리소스를 공유하는 것이기 때문에 단일 호스트 한정이다.
Reference)
시작하세요! 도커 / 쿠버네티스