[CKS] 27. Docker Service Configuration

systemd 환경에서 Docker 데몬의 상태 관리와 원격 제어 방법을 설명합니다. TCP와 TLS를 활용해 외부에서도 안전하게 컨테이너를 관리할 수 있습니다.

개요

systemd를 사용하여 Docker Daemon Service를 구성하는 방법을 확인합니다.

Docker 상태 검사

systemctl status docker
systemctl start docker
systemctl stop docker

Linux 환경에서 systemd 서비스로 실행하면 기본적으로 데몬이 백그라운드에서 실행되며 부팅 시 자동으로 시작됩니다. dockerd 명령어를 통해 포그라운드에서 실행할 수도 있습니다. 주로 트러블 슈팅에서 사용합니다.

Foreground Docker Daemon

다음과 같이 로그 메시지를 확인할 수 있습니다.

dockerd --debug

Unix Socket을 통한 Docker CLI 통신

Docker daemon은 기본적으로 OS 내부 Unix 소켓(**/var/run/docker.sock)**에서 대기하며 IPC 메커니즘을 통해 Docker CLI로 명령어 실행이 가능합니다.

Docker daemon Remote Access

원격 호스트에서 Docker Container를 관리할 경우 docker 데몬이 TCP를 수신할 수 있도록 호스트를 명시적으로 지정해야합니다.

dockerd --debug \ --host=tcp://<HOST_IP>:<PORT>

원격에서도 호스트에 대한 정보를 등록해야합니다.

DOCKER_HOST="tcp://<HOST_IP>:<PORT>"

다만 추가적인 네트워크 제한없이 구성하는 경우 해당 구성은 치명적인 보안 위협을 야기하므로 반드시 제한조치를 수행해야합니다.

TLS 활성화

TLS 활성화하여 데몬을 실행합니다.

dockerd --debug \
  --host=tcp://192.168.1.10:2376 \
  --tls=true \
  --tlscert=/var/docker/server.pem \
  --tlskey=/var/docker/serverkey.pem

Configuration File

옵션을 활성화하는데 있어 설정 파일을 통해 구성할 수 있습니다.

예시는 다음과 같습니다.

{
  "debug": true,
  "hosts": ["tcp://192.168.1.10:2376"], # 배열 주의
  "tls": true,
  "tlscert": "/var/docker/server.pem",
  "tlskey": "/var/docker/serverkey.pem"
}