도커 데몬은 API 입력을 받아 도커 엔진의 기능을 수행한다.
API를 사용할 수 있도록 CLI를 제공하는 것이 도커 클라이언트이다.
도커 클라이언트는 /var/run/docker.sock에 위치한 유닉스 소켓을 통해 도커 데몬의 API를 호출한다.
도커 클라이언트가 사용하는 유닉스 소켓은 같은 호스트 애에 있는 도커 데몬에게 명령을 전달할 때 사용된다.
EX)
$ service docker start
$ service docker stop
$ systemctl enable docker
도커를 자동으로 실행하도록 설정
서비스를 사용하지 않고 직접 도커 데몬을 실행할 수도 있다.
$ service docker stop
$ dockerd
... API listen on /var/run/docker.sock
디버깅이나 도커 자체의 트러블 슈팅이 필요하다면 도커 데몬을 직접 실행하는 것이 더 편리할 수도 있다.
EX) command line
$ dockerd --help
다양한 옵션 확인 가능
$ dockerd -H tcp://0.0.0.0:2375 --insecure-registry=192.168.100.99 --tls=false
EX) config
$ vim /etc/default/docker
...
DOCKER_OPTS="dockerd -H tcp://0.0.0.0:2375 --insecure-registry=192.168.100.99 --tls=false"
RESTful API 형식을 띠고 있으므로 HTTP 요청으로 도커를 제어할 수 있다.
EX) 다음 두 명령은 차이가 없다
$ dockerd
$ dockerd -H unix:///var/run/docker.sock
EX) 호스트에 존재하는 모든 네트워크 인터페이스의 IP 주소와 2375번 포트를 바인딩해 입력을 받는다.
$ dockerd -H tcp://0.0.0.0:2375
EX) 호스으틔 모든 넽트워크 인터페이스 카드에 할당된 IP 주소와 2375번 포트로 도커 데몬을 제어함과 동시에 도커 클라이언트도 사용
$ dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
디버그 모드는 도커 데몬을 실행할 때 -D 옵션을 추가해서 사용할 수 있다.
$ dockerd -D
디버그 모드는 도커 데몬에 문제가 생겼을 떄 무엇이 잘못됐는지 확인하는 가장 좋은 수단이다.
EX) events : 도커 데몬에 어떤 일이 일어나고 있는지를 실시간 스트림 로그로 보여줌
$ docker events
$ docker events --filter 'type=image'
$ docker system events
EX) stats : 실행 중인 모든 컨테이너의 자원 사용량을 스트림으로 출력
$ docker stats
EX) system df : 도커에서 사용하고 있는 이미지, 컨테이너, 로컬 볼륨의 총 개수 및 사용중인 개수, 크기, 삭제함으로써 확보 가능한 공간을 출력
$ docker system df
$ service docker stop
$ rm -rf /var/lib/docker
$ rm -rf /var/run/docker
$ service docker start