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