[CKS] 27. Docker Service Configuration

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

[CKS] 27. Docker Service Configuration
Photo by Marek Piwnicki / Unsplash

개요

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

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

  • /etc/docker/daemon.json

예시는 다음과 같습니다.

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