Docker를 사용하다 보면 하나의 Container만 실행하는 것이 아니라 여러 개의 Container를 함께 운영해야 하는 상황이 발생합니다.
예:
Web Server
+
Database
+
Cache Server
+
API Server
기존 Docker 방식:
docker run nginx
docker run mysql
docker run redis
문제:
- 명령어가 많아짐
- 설정 관리 어려움
- Container 연결 복잡
- 서버 이전 어려움
Docker Compose를 사용하면 여러 Container 환경을 하나의 설정 파일로 관리할 수 있습니다.
구조:
docker-compose.yml
↓
Docker Compose 실행
↓
여러 Container 생성
↓
서비스 실행
이번 글에서는 Docker Compose의 기본 개념부터 설치 방법, 명령어, Docker Compose V2 사용법까지 서버 운영에 필요한 기초 내용을 알아보겠습니다.
Docker Compose란 무엇인가?
Docker Compose는 여러 개의 Docker Container를 하나의 YAML 파일로 정의하고 관리하는 도구입니다.
기본 파일:
docker-compose.yml
예:
services:
web:
image: nginx
database:
image: mysql
실행:
docker compose up
결과:
Docker Compose
↓
Web Container 생성
↓
Database Container 생성
↓
서비스 연결
Docker Compose가 필요한 이유
단일 Container 환경:
Application
↓
Container
간단한 서비스에서는 문제가 없습니다.
하지만 실제 서버는:
사용자
↓
Nginx
↓
Application
↓
Database
↓
Redis
처럼 여러 서비스가 함께 동작합니다.
Docker Compose 사용 전:
docker run
docker network create
docker volume create
docker exec
여러 명령 필요
Docker Compose 사용 후:
docker compose up
하나의 명령으로 전체 환경을 실행할 수 있습니다.
Docker Compose 주요 특징
1. 여러 Container 관리
하나의 파일에서 여러 서비스를 관리합니다.
예:
services:
nginx:
mysql:
redis:
2. 환경 설정 관리
Port:
ports:
- "8080:80"
Volume:
volumes:
- ./data:/var/lib/mysql
Environment:
environment:
MYSQL_PASSWORD: password
3. Network 자동 생성
Compose는 기본 Network를 자동 생성합니다.
구조:
Web Container
↓
Compose Network
↓
Database Container
4. Volume 관리
데이터 유지가 가능합니다.
예:
Container 삭제
↓
Volume 유지
↓
데이터 보존
Docker Compose 설치 확인
최근 Docker Desktop과 Docker Engine에는 Docker Compose V2가 기본 포함되어 있습니다.
확인:
docker compose version
예:
Docker Compose version v2.x.x
정상적으로 나오면 설치 완료입니다.
Docker Compose V2와 V1 차이
기존:
docker-compose up
현재:
docker compose up
차이:
| 구분 | 명령어 |
|---|---|
| Compose V1 | docker-compose |
| Compose V2 | docker compose |
현재 서버 환경에서는 Compose V2 사용을 권장합니다.
Docker Compose 기본 프로젝트 만들기
폴더 생성:
mkdir compose-project
cd compose-project
파일 생성:
touch docker-compose.yml
구조:
compose-project/
└── docker-compose.yml
첫 번째 Docker Compose 실행 예제
docker-compose.yml:
services:
web:
image: nginx
ports:
- "8080:80"
실행:
docker compose up
확인:
docker ps
결과:
Nginx Container 실행
↓
localhost:8080 접속
백그라운드 실행:
docker compose up -d
Docker Compose 기본 명령어 정리
Container 실행
docker compose up
백그라운드 실행
docker compose up -d
Container 종료
docker compose down
실행 상태 확인
docker compose ps
로그 확인
docker compose logs
실시간 로그
docker compose logs -f
Image 다시 Build
docker compose build
Docker Compose 파일 기본 구조
기본 구조:
services:
service-name:
image:
ports:
volumes:
environment:
networks:
예:
services:
app:
image: node
ports:
- "3000:3000"
environment:
NODE_ENV: production
Docker Compose 프로젝트 종료 방법
실행 중:
docker compose down
결과:
Container 삭제
↓
Network 삭제
↓
서비스 종료
Volume까지 삭제:
docker compose down -v
주의:
Volume 삭제 시 데이터가 삭제될 수 있습니다.
Docker Compose 서버 운영 활용
실제 서버에서는:
Client
↓
Nginx
↓
Application
↓
Database
↓
Redis
구조를 Compose로 관리합니다.
예:
docker-compose.yml
↓
Nginx
↓
Backend
↓
MySQL
↓
Redis
Docker Compose 장점 정리
장점:
✅ 여러 Container 관리
✅ 설정 파일 관리
✅ 서버 이전 쉬움
✅ 개발 환경 통일
✅ 배포 자동화 가능
✅ Network 자동 구성
Docker Compose 단점
주의점:
- 대규모 서비스에는 Kubernetes 필요
- Container 수가 많으면 관리 어려움
- 고급 배포 기능 제한
사용 기준:
소규모 서버
↓
Docker Compose
대규모 서비스
↓
Kubernetes
마무리
Docker Compose는 여러 Docker Container를 효율적으로 관리하기 위한 가장 기본적인 서버 운영 도구입니다.
Docker Buildx Bake가 Image 생성 자동화라면 Docker Compose는 생성된 Image를 실제 서비스 환경에서 연결하고 운영하는 역할을 담당합니다.
앞으로 Docker Compose 시리즈에서는 다음 내용을 순서대로 다룹니다.
Docker Compose YAML 작성법
↓
Service 관리
↓
Network
↓
Volume
↓
Database 연결
↓
Nginx 구성
↓
Production 서버 배포
Docker 서버 운영을 위한 다음 단계가 시작됩니다.