
커널에서 도커의 위치를 찾아보면 /usr/bin/docker에 위치한다.
하지만 도커엔진의 프로세스는 /usr/bin/dockerd 파일로 실행된다.
도커는 도커 클라이언트와 도커 서버로 나뉜다.
실제로 컨테이너를 실행하고 이미지를 관리하는 것은 도커 서버이다.
도커 엔진은 외부로부터 API 입력을 받아서 기능을 수행하는데, 도커 프로세스가 실행되고 서버로서 입력을 받을 준비가 된 상태를 도커 데몬이라고 한다.
도커 데몬이 API를 사용할 수 있도록 CLI를 제공하는 것이 도커 클라이언트이다.
여태까지 사용했던 docker 명령어는 실제 도커 엔진이 아니라 클라이언트로서의 도커이다.
도커 클라이언트는 사용자가 입력한 명령어를 도커 데몬에게 API로서 전달하는데, 이때 도커 클라이언트는 /var/run/docker.sock에 위치한 유닉스 소켓을 통해 도커 데몬의 API를 호출한다.
(도커 클라이언트가 유닉스 소켓을 이용해서 도커 데몬에게 명령어를 전달하는것)
도커 데몬은 받은 명령어를 파싱해서 명령어에 해당하는 작업을 수행하고, 결과를 클라이언트에게 반환한다.
-H 옵션은 도커 데몬의 API를 사용할 수 있는 방법을 추가 하는 것이다.
dockered -H IP주소:포트번호
위와같이 IP주소와 포트 번호를 입력하면 로컬에 있는 도커 데몬이 아니더라도 제어할 수 있도록 원격 API를 사용할 수 있다. 원격 API는 RESTful API 형식을 띠고 있어서 HTTP 요청으로 도커를 제어할 수 있다.
dockered -H tcp://0.0.0.0:2375
위와 같이 도커 데몬을 실행하면, 호스트에 존재하는 모든 네트워크 인터페이스의 IP주소와 3275번 포트를 바인딩해서 입력을 받는다.
또한 이렇게 원격 API만을 위한 바인딩 주소만 입력하면 유닉스 소켓이 비활성화 되므로 도커 클라이언트를 사용할 수 없게 되고, 즉 docker ~ 명령어를 사용할 수 없다. 따라서 일반적으로 아래와 여러개를 함께 적는다.
docker -H unix://var/run/docker.socket -H tcp://0.0.0.0:2375
DOCKER_HOST 변수를 수정하여 원격에 있는 도커를 제어할 수도 있다.
도커는 기본적으로 보안이 설정되어있지 않다. 따라서 원격 API를 위해 바인딩된 ip주소와 포트만 알면 도커를 제어할 수 있기 때문에 바람직 하지 않다.
도커 데몬에 TLS 보안을 적용하고, 도커 클라이언트와 원격 API 클라이언트가 인증되지 않으면 도커 데몬을 제어할 수 없도록 설정할 수 있다.
보안을 적용할때 사용될 파일은 총 5개 아래와같다.
1. ca.pem (공용 키)
2. server-cert.pem (서버 측의 인증서 파일)
3. server-key.pem (서버측에서 사용될 키)
4. cert.pem (클라이언트 측의 인증서 파일)
5. key.pem (클라이언트 측의 키 파일)
1) 인증서에 사용될 키를 생성

2) 공용키를 생성 - ca.pem

3) 서버 측에서 사용될 키를 생성 - server-key.pem

4) 서버 측에서 사용될 인증서를 위한 인증 요청서 파일을 생성.

5) 접속에 사용될 IP주소를 extfile.cnf 파일로 저장

6) 서버 측의 인증서 파일을 생성 - 아래 예에서는 172.30.1.4로 접속하는 연결에 사용되는 인증서 파일이 생성됨.

1) 클라이언트 측의 키 파일과 인증 요청 파일을 생성, extfile.cnf 파일에 extendedKeyUsage 항목을 추가

2) 클라이언트 측의 인증서를 생성

3) 위에서 언급한 필요한 5개 파일 생성됐는지 확인

4) 5개 파일의 쓰기 권한을 삭제하여 읽기 전용 파일로 만들기

5) 도커 데몬의 설정 파일이 존재하는 ~/.docker 디렉토리로 도커 데몬측에서 필요한 파일 옮기기.

dockerd --tlsverify --tlscacert=/root/ .docker/ca.pem --tlscert=/root/ .docker/server-cert.pem --tlskey=/root/ .docker/server-key.pem -H=0.0.0.0:2376 -H unix:///var/run/docker.sock
--tlsverify 등의 모든 데몬 옵션은 도커 서비스의 설정파일을 변경해야 사용할 수 있다!!