Docker 설정 변경하기

현재 Docker 는 위기를 겪고 있다고 말하고 있지만, 여전히 간단하게 애플리케이션을 사용하기에는 이만한게 없다. 프로젝트를 하면서 Docker 를 다시 다루게 되었는데, 간단하게 설정을 변경하는 방법에 대해서 다룬다.

설정 변경 사항

설정 변경은 많은걸 할 것은 아니고, 다음과 같은 부분이다.

  1. Docker 로컬 저장소 변경
  2. 로깅 변경하기

이 두가지는 거의 필수로 하게 된다.

containerd

containerd 는 실제로 컨테이너를 실행, 관리하는 핵심이다. 다음과 같이 정의할 수 있다.

컨테이너 실행을 위한 핵심 기능만 제공하는 런타임 데몬

실제로 컨테이너를 다룬다는 점에서 Docker 와 다르며, Docker 없이도 독자적으로 작동이 가능하다. 다음과 같은 역할을 한다.

  • 컨네이터 생성/시작/중지
  • 이미지 pull/push
  • 이미지 관리
  • 네임스페이스 관리
  • runc 호출
  • OCI 표준 준수

따라서, 컨테이너 실행에 필요한 최소 기능만 담당한다고 할 수 있다.

Docker

Docker는 containerd 위에 다음 기능들을 얹어서 “플랫폼”을 만든다.

  • Docker CLI (docker run, docker ps)
  • Docker API
  • Docker Build (buildx)
  • Docker Compose
  • 네트워크 드라이버
  • 볼륨 드라이버
  • Swarm
  • 로그 드라이버
  • 이미지 빌드 시스템

따라서, Docker 는 개발 경험 + 생태계 + 편의 기능을 제공하는 상위 플랫폼이다.

아키텍쳐는 대략 다음과 같다.

Docker CLI (docker run, docker ps 등)

Docker Engine API (dockerd)

containerd (컨테이너 관리)

runc (컨테이너 생성/실행)

Linux Namespace / Cgroups

컨테이너 이미지 중복 저장

한가지 문제가 있다. Docker, Containerd 는 각각 자기만의 컨테이너 이미지를 저장한다. 똑같은 이미지를 이중으로 저장하는 문제가 발생하는 것이다. AI 관련 이미지들, 예를들면 vllm 같은 경우에는 30GB 정도로 큰데 Docker 를 사용하게 되면 이미지를 60GB 가 저장된다.

컨테이너 이미지 저장 방식도 다르다. Docker 의 경우에는 overlay2 방식을 사용하지만 Containerd 는 blob 이며 스냅샷은 overlayfs 이다. 따라서 서로 호환이 되지 않는다. 이는 디렉토리 구조를 보면 명확해진다.

Docker 명령어에서 이미지를 가지고 오거나 Docker 를 이용해서 이미지를 빌드하게 되면 역시나 Containerd 저장소에 저장이 된다. 따라서 Docker 를 사용할 경우에 컨테이너 저장소를 고려해 용량을 두배로 계산해야 한다.

Docker 저장소 변경

Docker 설정 파일은 ‘/etc/docker/daemon.json’ 이다. 이 파일을 편집하면 된다.

data-root 항목에서 저장할 위치를 지정해 주면 된다.

Docker 로그 드라이버

Docker 설정에서 로그 드라이버를 local 로 설정했다. 기본값은 json-file 이다. 그런데, 이 로그 드라이버는 다음과 같은 문제가 있다.

  • 성능이 느림.
  • 자동 로그 로테이션이 없음. 따라서 용량이 무제한으로 늘어날 수 있음.
  • plaintext 로 저장

따라서 실제 운영환경에서는 local 를 권장하고 있다. json-file 의 로그는 텍스트 파일로 저장되는데 반해, local 은 바이너리로 저장된다. 만일 드라이버를 json-file 로 한다면 위 예제처럼 로그 로테이션 설정을 해줘야 한다.

Containerd 저장소 변경

Containerd 도 ‘/etc/containerd/config.toml’ 파일에 설정을 저장한다. 한가지 Docker 설정과 다른점은 여러가지 설정들이 함께 포함된 파일이여야 한다. 따라서 Containerd 의 기본 설정 정보를 config.toml 에 담아야 한다.

위 명령어를 실행하면 ‘/etc/containerd/config.toml’ 기본 설정 내용이 파일로 저장된다.

이제 이 파일을 열어서 다음과 같이 변경하면 된다.

위와같이 설정을 변경하면 된다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다