Docker Compose에서 가장 중요한 개념은 Service 관리입니다.
Docker Compose는 여러 Container를 개별적으로 관리하는 것이 아니라 Service 단위로 관리합니다.
기존 Docker 방식:
Container 하나씩 관리
↓
docker run
↓
docker stop
↓
docker restart
문제:
- Container가 많아질수록 복잡
- 명령어 증가
- 설정 관리 어려움
Docker Compose 방식:
Service 정의
↓
docker compose 명령 실행
↓
여러 Container 자동 관리
예:
services:
web:
image: nginx
database:
image: mysql
실행:
docker compose up
결과:
web Service
↓
nginx Container 실행
database Service
↓
mysql Container 실행
이번 글에서는 Docker Compose Service 개념부터 실행, 중지, 재시작, 업데이트, Scale 관리까지 실제 서버 운영에 필요한 Service 관리 방법을 알아보겠습니다.
Docker Compose Service란 무엇인가?
Service는 Docker Compose에서 Container를 정의하는 관리 단위입니다.
쉽게 설명하면:
Service
↓
Container 생성 규칙
입니다.
예:
services:
nginx:
image: nginx
구조:
nginx Service
↓
nginx Container
Service는 Container의 설정 정보를 저장합니다.
포함 정보:
- 사용할 Image
- Port
- Volume
- Environment
- Network
- Restart 정책
Docker Compose Service 목록 확인하기
현재 프로젝트 Service 확인:
docker compose config --services
결과:
nginx
database
redis
현재 실행 중인 Service:
docker compose ps
결과:
NAME
STATUS
PORT
Docker Compose Service 실행 방법
전체 Service 실행:
docker compose up
백그라운드 실행:
docker compose up -d
동작:
docker-compose.yml 확인
↓
Service 생성
↓
Container 실행
특정 Service만 실행:
docker compose up nginx
결과:
nginx Service만 실행
Docker Compose Service 중지 방법
전체 Service 종료:
docker compose stop
특정 Service 종료:
docker compose stop nginx
결과:
Container 종료
↓
데이터 유지
중요:
stop은 Container를 삭제하지 않습니다.
Docker Compose Service 삭제 방법
Container와 Network 삭제:
docker compose down
결과:
Container 삭제
↓
Network 삭제
Volume 유지:
Database 데이터 유지
Volume까지 삭제:
docker compose down -v
주의:
Volume 삭제
↓
Database 데이터 삭제 가능
Docker Compose Service 재시작
전체 재시작:
docker compose restart
특정 Service:
docker compose restart nginx
활용:
- 설정 변경 적용
- 오류 Container 복구
- 서비스 재시작
Docker Compose Service 로그 확인
전체 로그:
docker compose logs
특정 Service:
docker compose logs nginx
실시간 확인:
docker compose logs -f nginx
실무 활용:
서비스 장애 발생
↓
로그 확인
↓
원인 분석
Docker Compose Service 상태 확인
명령:
docker compose ps
예:
NAME
nginx
STATUS running
PORT 80
확인 항목:
- 실행 상태
- Port 연결
- Container 이름
Docker Compose Service 업데이트 방법
Image 변경 후 업데이트:
docker compose pull
최신 Image 다운로드:
Registry
↓
새 Image 가져오기
재실행:
docker compose up -d
동작:
기존 Container 확인
↓
새 Image 적용
↓
Container 교체
Docker Compose Service Build 관리
직접 Build하는 경우:
docker-compose.yml:
services:
app:
build:
context: .
Build:
docker compose build
실행:
docker compose up -d
흐름:
Source Code
↓
Dockerfile
↓
Image 생성
↓
Container 실행
Docker Compose Service Scale 관리
같은 Service를 여러 개 실행할 수 있습니다.
예:
docker compose up -d --scale app=3
결과:
app-1
app-2
app-3
활용:
- 트래픽 증가
- 부하 분산
- API 서버 확장
주의:
Port 충돌이 발생할 수 있어 Reverse Proxy와 함께 사용하는 경우가 많습니다.
Docker Compose Service 의존성 관리
depends_on 사용:
services:
app:
image: node
depends_on:
- database
database:
image: mysql
실행:
Database 시작
↓
Application 시작
하지만:
Container 실행 완료
≠
Application 정상 실행
입니다.
Health Check와 함께 사용하는 것이 좋습니다.
Docker Compose Healthcheck 설정
예:
services:
database:
image: mysql
healthcheck:
test:
- CMD
- mysqladmin
- ping
interval: 10s
효과:
Database 상태 확인
↓
정상 확인 후 연결
Docker Compose Service 운영 예제
실제 서버 구조:
services:
nginx:
image: nginx
restart: unless-stopped
app:
image: my-app:v1
restart: unless-stopped
mysql:
image: mysql:8
restart: unless-stopped
구조:
사용자
↓
Nginx
↓
Application
↓
MySQL
Docker Compose Service 운영 Best Practice
추천 설정:
Restart 설정
restart: unless-stopped
Version 고정
좋음:
image: mysql:8.0
나쁨:
image: mysql:latest
환경 분리
구성:
docker-compose.yml
docker-compose.prod.yml
.env
로그 관리
정기적으로 확인:
docker compose logs
자주 묻는 질문
Service와 Container 차이는 무엇인가요?
Service는 Container 생성 설정이고 Container는 실제 실행되는 객체입니다.
특정 Service만 실행할 수 있나요?
가능합니다.
docker compose up 서비스명
Service를 삭제하면 데이터도 삭제되나요?
Container만 삭제하면 Volume 데이터는 유지됩니다.
Production 서버에서 사용할 수 있나요?
가능합니다.
소규모~중간 규모 서버 운영에서 많이 사용됩니다.
마무리
Docker Compose Service 관리는 여러 Container를 안정적으로 운영하기 위한 핵심 기능입니다.
up, stop, down, restart, logs, scale, pull 같은 명령어를 활용하면 서버 환경을 효율적으로 관리할 수 있습니다.
다음 글에서는 Docker Compose에서 실제 실행되는 Container 관리 방법을 다루면서 Container 이름, 상태 확인, 접속, 명령 실행, 리소스 관리 방법을 자세히 알아보겠습니다.