brief.ing.gg

WIKI

Docker Compose

Docker Compose

단일 호스트 컨테이너 구성을 기술하는 방식의 장점과 한계는 무엇인가.

Scope

핵심 질문

Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 어떤 모델로 정의하고 실행하는가?

Research

핵심 근거

  • Compose는 compose.yaml에서 service, network, volume 등을 선언해 multi-container application을 정의한다.
  • Compose application model에서 service는 동일한 container image와 configuration의 실행단위다.
  • 단일 호스트 중심 운영에 매우 편리하지만 자체적으로 다중 노드 scheduler를 제공하는 것은 아니다.

참고 자료

  • Docker Compose application model: https://docs.docker.com/compose/intro/compose-application-model/

Draft

Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 하나의 선언적 파일로 정의하고 함께 실행하는 도구다.

Compose 파일

compose.yaml에는 service, network, volume, configuration을 정의한다. 각 service는 어떤 이미지를 실행할지, 환경변수와 포트, 볼륨, 다른 서비스와의 관계를 기술한다.

이 덕분에 데이터베이스, API 서버, reverse proxy처럼 여러 컨테이너가 필요한 애플리케이션을 하나의 단위로 재현할 수 있다.

장점

가장 큰 장점은 단순성이다. 개발환경과 소규모 서버에서 하나의 명령으로 전체 스택을 올리고 내릴 수 있으며 설정을 코드처럼 버전관리할 수 있다.

한계

Compose는 기본적으로 특정 Docker 엔진에서 애플리케이션을 구성하는 데 초점을 둔다. Kubernetes나 Nomad처럼 여러 노드 중 어디에 컨테이너를 배치할지 결정하는 범용 cluster scheduler는 아니다.

고가용성, 자동 재배치, 대규모 rolling update와 같은 요구가 커질수록 별도의 orchestration platform이 필요해질 수 있다.

핵심

Docker Compose는 '여러 컨테이너를 하나의 애플리케이션으로 정의하는 도구'다. 단일 호스트와 소규모 배포에서는 복잡한 플랫폼보다 훨씬 낮은 운영비용으로 충분한 기능을 제공한다.