[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
옵션을 활성화하는데 있어 설정 파일을 통해 구성할 수 있습니다.
/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"
}