
도커 컴포즈는 복잡한 애플리케이션을 쉽게 관리하고 실행할 수 있도록 돕는 도구입니다. 이번 포스트에서는 도커 컴포즈의 설치 방법과 실행 방법에 대해 자세히 알아보겠습니다.
도커 컴포즈 설치
도커 컴포즈는 도커 엔진과는 별개의 소프트웨어로, 별도로 설치해야 합니다. 하지만 도커 데스크톱을 설치하면 도커 컴포즈도 자동으로 설치되므로, 별도의 설치 과정이 필요하지 않습니다.
운영체제별 설치 방법
Windows와 macOS (Docker Desktop)
Docker Desktop을 설치하면 Docker Compose가 자동으로 포함됩니다:
# 설치 확인
docker-compose --version
# 또는 최신 명령어
docker compose version리눅스에서의 설치
리눅스 환경에서 도커 컴포즈를 설치하기 위해서는 먼저 Python3와 Python3-pip 패키지를 설치해야 합니다. 도커 컴포즈는 Python으로 작성되어 있기 때문에 Python 런타임이 필요합니다.
다음 명령어를 사용하여 필요한 패키지를 설치합니다:
sudo apt install -y python3 python3-pip
sudo pip3 install docker-compose2025년 권장 설치 방법 (Linux)
최신 Docker Compose V2 설치 (권장):
# 1. Docker 공식 GPG 키 추가
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# 2. Docker 공식 저장소 추가
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 3. Docker Compose 플러그인 설치
sudo apt-get update
sudo apt-get install docker-compose-plugin
# 4. 설치 확인
docker compose version바이너리 직접 다운로드 방법:
# 최신 버전 다운로드 (2025년 기준)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
# 심볼릭 링크 생성 (선택사항)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 설치 확인
docker-compose --version이렇게 설치가 완료되면 도커 컴포즈를 사용할 준비가 완료됩니다.
도커 컴포즈 실행
도커 컴포즈를 실행하기 위해서는 먼저 호스트 컴퓨터에 작업할 폴더를 생성하고, 그 안에 YAML 파일을 생성해야 합니다. 이 YAML 파일은 도커 컴포즈의 정의 파일로, 이름은 반드시 docker-compose.yml로 지정해야 합니다.
정의 파일 생성
정의 파일은 호스트 컴퓨터에서 실행되지만, 실제 컨테이너는 도커 엔진을 통해 실행됩니다. 따라서 생성된 컨테이너 역시 도커 엔진에서 동작하게 됩니다.
정의 파일은 동일 폴더 안에 하나만 존재해야 하므로, 여러 개의 정의 파일이 필요한 경우에는 각각의 폴더를 생성하여 그 안에 정의 파일을 위치시켜야 합니다.
mkdir my_project
cd my_project
nano docker-compose.yml위와 같은 방식으로 폴더를 생성하고, YAML 파일을 생성합니다. YAML 파일에는 다음과 같은 형식으로 서비스(컨테이너)를 정의할 수 있습니다:
version: "3.8"
services:
apaex111:
image: httpd
ports:
- 8080:80
restart: always기존 docker 실행 예시와 비교
# 기존 Docker 명령어
docker run --name apaex111 -d -p 8080:80 httpd
# Docker Compose 실행
docker-compose up -d고급 docker-compose.yml 예시
version: "3.8"
services:
web:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/ssl:ro
depends_on:
- app
networks:
- frontend
restart: unless-stopped
app:
build:
context: .
dockerfile: Dockerfile
environment:
- NODE_ENV=production
- DB_HOST=database
- REDIS_URL=redis://redis:6379
volumes:
- ./app:/usr/src/app
- app_logs:/var/log/app
networks:
- frontend
- backend
depends_on:
- database
- redis
restart: unless-stopped
database:
image: postgres:15-alpine
environment:
POSTGRES_DB: myapp
POSTGRES_USER: appuser
POSTGRES_PASSWORD: ${DB_PASSWORD:-defaultpassword}
volumes:
- postgres_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
networks:
- backend
restart: unless-stopped
redis:
image: redis:7-alpine
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-defaultpassword}
volumes:
- redis_data:/data
networks:
- backend
restart: unless-stopped
volumes:
postgres_data:
redis_data:
app_logs:
networks:
frontend:
driver: bridge
backend:
driver: bridge서비스와 컨테이너
도커 컴포즈에서는 여러 개의 컨테이너를 "서비스"라고 정의합니다. 각 서비스는 서로 다른 컨테이너를 나타내지만, 모두 컨테이너의 개념으로 생각해도 무방합니다. 따라서 도커 컴포즈를 사용하여 여러 서비스를 정의하고, 이를 통해 복잡한 애플리케이션을 쉽게 구성하고 관리할 수 있습니다.
실행 및 관리 명령어
기본 실행 명령어
# 서비스 시작 (백그라운드)
docker-compose up -d
# 서비스 시작 (포그라운드, 로그 확인)
docker-compose up
# 특정 서비스만 시작
docker-compose up web database
# 서비스 중지 및 제거
docker-compose down
# 볼륨까지 함께 제거
docker-compose down -v
# 이미지까지 함께 제거
docker-compose down --rmi all관리 명령어
# 서비스 상태 확인
docker-compose ps
# 서비스 로그 확인
docker-compose logs
docker-compose logs -f web # 실시간 로그
# 서비스 재시작
docker-compose restart
docker-compose restart web # 특정 서비스만
# 서비스 중지 (제거하지 않음)
docker-compose stop
# 서비스 시작 (이미 생성된 컨테이너)
docker-compose start
# 설정 파일 검증
docker-compose config
# 서비스 스케일링
docker-compose up -d --scale web=3개발 환경 최적화
# 이미지 빌드 후 시작
docker-compose up --build
# 캐시 없이 빌드
docker-compose build --no-cache
# 강제 재생성
docker-compose up --force-recreate
# 의존성 없이 시작
docker-compose up --no-deps web환경 변수 및 설정 관리
.env 파일 활용
# .env 파일 생성
cat > .env << EOF
DB_PASSWORD=mysecretpassword
REDIS_PASSWORD=redispassword
NODE_ENV=production
APP_PORT=3000
EOF환경별 설정 파일
# 개발 환경
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
# 프로덕션 환경
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
# 테스트 환경
docker-compose -f docker-compose.yml -f docker-compose.test.yml up --abort-on-container-exit결론
도커 컴포즈는 여러 개의 컨테이너를 관리하는 데 매우 유용한 도구입니다. 설치가 간편하고, YAML 파일을 통해 복잡한 시스템을 쉽게 정의할 수 있습니다.
핵심 포인트:
- Docker Desktop 사용 시 자동 설치되어 별도 설치 불필요
- Linux 환경에서는 Docker Compose V2 플러그인 설치 권장
- docker-compose.yml 파일을 통한 선언적 설정
- 환경별 설정 분리를 통한 유연한 배포
- 서비스 단위의 컨테이너 관리로 복잡한 애플리케이션 구성
Docker Compose를 마스터하면 개발 환경에서 프로덕션과 유사한 환경을 쉽게 구축할 수 있으며, 팀 전체가 일관된 개발 환경에서 작업할 수 있습니다.
'IT기술 > 도커 (docker)' 카테고리의 다른 글
| Docker Compose 명령어 완벽 가이드: 다중 컨테이너 관리의 핵심 (12) | 2025.07.20 |
|---|---|
| Docker Compose 정의 파일 완벽 가이드: 아파치와 워드프레스 컨테이너 실행 예제 (10) | 2025.07.18 |
| Docker Compose 완벽 가이드: 다중 컨테이너 시스템의 효율적 관리 (0) | 2025.07.15 |
| Docker Hub 완벽 가이드: 이미지 관리와 배포의 중심 플랫폼 (2) | 2025.07.14 |
| Docker 컨테이너 개조 완벽 가이드: 실행 중인 컨테이너 커스터마이징 방법 (14) | 2025.07.12 |