[CKS] Docker Service Configuration

Docker 데몬을 Unix 소켓 또는 TCP를 통해 설정하는 방법을 다룹니다. 로컬 통신부터 TLS 암호화를 적용한 원격 접근 보안까지 단계별로 설명합니다.

[CKS] Docker Service Configuration
Photo by Glenn Carstens-Peters / Unsplash

개요

CKS 시험 만료가 얼마 남지않아 다시 시작하고 있습니다.

Certified Kubernetes Security Specialist (CKS) | KodeKloud

Docker Daemon 서비스 구성 방법

Docker 서비스 실행 상태를 확인합니다.

systemctl start docker
systemctl status docker
systemctl stop docker

포그라운드에서 실행

디버그를 위해 Docker 데몬을 포그라운드에서 실행할 수 있습니다.

dockerd --debug # 자세한 로그 확인을 위해 --debug 사용

Docker CLI와 Unix 소켓 통신

Docker 데몬이 시작되면 내부 Unix 소켓에서 수신을 대기합니다.

  • /var/run/docker.sock. 프로세스 간 통신(IPC) 메커니즘을 통해 Docker CLI가 데몬과 상호 작용함.
    • Unix 소켓 → 같은 컴퓨터 내 프로그램끼리 통신 (로컬 전용)

원격 호스트에서 Docker를 관리해야하는 경우 Docker 데몬은 인터넷 네트워크를 위해 TCP 인터페이스에서 수신 대기 설정을 해야합니다.

dockerd --debug \
  --host=tcp://192.168.1.10:2375 # Docker 데몬이 돌아가는 서버 자신의 IP

접근하고자 하는 로컬 컴퓨터에서 DOCKER_HOST 로 원격지의 IP, PORT를 등록합니다.

export DOCKER_HOST="tcp://192.168.1.10:2375"
docker ps

하지만 암호화, 인증 없는 TCP 접근은 악의적인 목적으로 호스트에서 컨테이너를 실행할 수 있습니다.

TLS 활성화

TLS 암호화 포트는 2376 이며 암호화 없는 포트는 2375입니다

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

/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"
}