🐳 도커 컴포즈(Docker Compose)란
컨테이너 환경이 일반화되면서, 단일 컨테이너가 아닌 여러 개의 컨테이너로 구성된 시스템을 효율적으로 다루는 것이 중요해졌습니다. 이럴 때 유용한 도구가 바로 도커 컴포즈(Docker Compose) 입니다.
도커 컴포즈는 여러 개의 컨테이너를 하나의 서비스처럼 정의하고, 묶어서 실행 및 관리할 수 있는 도구입니다.
기존에는 컨테이너 하나를 실행하려면 docker run 명령어를 사용했지만, 여러 개의 컨테이너를 일일이 띄우기에는 번거롭고 실수가 발생하기 쉽습니다. 도커 컴포즈는 이러한 번거로움을 하나의 정의 파일(docker-compose.yml)로 해결해줍니다.
$ docker-compose up # 모든 컨테이너 실행
$ docker-compose down # 모든 컨테이너 정지 및 삭제
📂 도커 컴포즈 구조
도커 컴포즈는 YAML 포맷의 정의 파일을 기반으로 동작합니다. 주요 구성 요소는 아래와 같습니다.
항목 | 설명 |
version | 컴포즈 파일 버전 |
services | 컨테이너 정의 |
networks | 네트워크 정의 |
volumes | 볼륨 정의 |
YAML 파일은 들여쓰기에 민감하므로 공백 두 칸 기준으로 작성해야 하며, 탭은 사용하지 않습니다.
🧱 컴포즈 vs Dockerfile
항목 | Dockerfile | Docker Compose |
목적 | 이미지 생성 | 컨테이너 및 환경 구성 |
네트워크/볼륨 | 정의 불가 | 정의 가능 |
실행 대상 | 이미지 1개 | 여러 개의 컨테이너 |
예시 | 단일 앱 이미지 빌드 | 워드프레스 + DB 서버 구성 |
즉, Dockerfile은 이미지 빌드를 위한 것이고, Docker Compose는 서비스 실행 환경 구성을 위한 것입니다.
🧐 도커 컴포즈를 왜 사용할까?
웹 애플리케이션처럼 여러 컨테이너가 필요한 환경에서는 단일 CLI 명령어로 모든 컨테이너를 실행하고 정리할 수 있는 자동화된 워크플로우가 필요합니다.
예: 워드프레스 실행 시
$ docker run --name wordpress_db -d mysql:8
$ docker run -d -p 8080:80 --link wordpress_db:mysql --name yeron_wordpress wordpress:latest
위와 같은 복잡한 명령어를 반복하는 대신, 도커 컴포즈는 아래처럼 YAML 파일만 작성하면 됩니다.
version: '3'
services:
db:
image: mysql:8
wordpress:
image: wordpress:latest
ports:
- "8080:80"
depends_on:
- db
🛠️ 설치 방법 (Linux 기준)
리눅스에서는 아래 명령어로 도커 컴포즈의 깃허브 저장소에서 현재 날짜 기준으로 최신 버너인 2.34 버전을 설치할 수 있습니다.
다른 OS에서의 설치 방법은 도커 컴포즈 도큐먼트에서 확인하실 수 있습니다.
$ sudo curl -SL https://github.com/docker/compose/releases/download/v2.34.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose version
🗂 컴포즈 파일 작성법
도커 컴포즈 파일은 docker-compose.yml이라는 이름으로 프로젝트 루트에 위치해야 하며, 아래 순서대로 구성합니다.
- version : 컴포즈 파일 버전 명시
- services : 실행할 컨테이너들 정의
- networks : 컨테이너 간 통신 정의 (선택)
- volumes : 데이터 보존을 위한 볼륨 정의 (선택)
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
📌 도커 컴포즈 vs 쿠버네티스
항목 | Docker Compose | 쿠버네티스 |
목적 | 간단한 컨테이너 구성 관리 | 대규모 컨테이너 오케스트레이션 |
설치 | 로컬 설치 가능 | 클러스터 구성 필요 |
복잡도 | 낮음 | 높음 |
컴포즈는 로컬 개발/테스트에 적합하고, 쿠버네티스는 운영 환경에서 사용됩니다.
✅ 정리
- 도커 컴포즈는 여러 개의 컨테이너를 하나의 서비스 단위로 정의하고 실행할 수 있는 도구입니다.
- YAML 정의 파일(docker-compose.yml)만 작성하면 손쉽게 전체 시스템을 실행하거나 종료할 수 있습니다.
- 복잡한 CLI 명령어를 반복할 필요 없이, 효율적인 개발 및 테스트 환경 구축이 가능합니다.
- 도커 컴포즈는 Dockerfile과 역할이 다르며, 쿠버네티스와도 사용 목적이 명확히 구분됩니다.
'Docker' 카테고리의 다른 글
[Docker] 도커 개념 정리 (0) | 2025.03.17 |
---|