Docker를 사용하다 보면 하나의 컨테이너만 실행하는 경우는 드뭅니다.
웹 서버, 데이터베이스, 캐시 서버 등 여러 개의 컨테이너를 함께 실행해야 하는 경우가 많죠.
이럴 때 유용하게 사용할 수 있는 도구가 바로 Docker Compose입니다.
Docker Compose란?
여러 개의 Docker 컨테이너를 하나의 서비스 단위로 정의하고 구성하여,
명령 한 줄로 관리할 수 있게 도와주는 도구입니다.
복잡한 컨테이너 환경을 단순화하고,
설정 파일(docker-compose.yml)로 전체 구성을 관리할 수 있다는 점이 가장 큰 장점입니다.
Docker Compose를 사용하는 이유
1. 여러 개의 컨테이너를 한 번에 관리
여러 컨테이너로 구성된 애플리케이션을 한 번에 관리할 수 있습니다.
예를 들어, Nginx + MySQL + Redis 조합으로 이루어진 서비스를
각각 따로 실행하는 대신 한 번의 명령으로 실행하고 중지할 수 있습니다.
2. 복잡한 명령어를 간소화
이전에는 MySQL 컨테이너를 실행할 때 아래처럼 길고 복잡한 명령어를 입력해야 했습니다.
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/username/Documents:/dev/mysql mysql
하지만 Docker Compose를 사용하면 이렇게 간단해집니다
$ docker compose up -d
모든 설정은 compose.yml 파일 안에서 관리되기 때문에,
명령어는 단 한 줄로도 충분합니다.
[실습] Docker Compose로 Nginx 실행하기
이번에는 Docker Compose를 직접 사용해보며
전체 흐름을 이해해보겠습니다.
1. Docker CLI로 실행할 때
먼저 Docker 명령어만으로 Nginx 컨테이너를 실행하면 다음과 같습니다.
$ docker run --name webserver -d -p 80:80 nginx
2. Docker Compose로 실행할 때
이제 같은 작업을 Compose 파일로 실행해보겠습니다.
2.1 📄 compose.yml 작성
services:
my-web-server:
container_name: webserver
image: nginx
ports:
- 80:80
- services: 컨테이너 단위를 정의하는 최상위 항목
- container_name: 컨테이너 이름 설정 (--name 옵션과 동일)
- image: 사용할 이미지 지정 (docker run nginx와 동일)
- ports: 포트 매핑 설정 (-p 80:80과 동일)
2.2 실행하기
$ docker compose up -d
백그라운드에서 컨테이너가 실행됩니다.
2.3 실행 현황 확인
$ docker compose ps
$ docker ps
현재 실행 중인 컨테이너 정보를 확인할 수 있습니다
2.3 웹 페이지 접속
브라우저에서 http://localhost:80 으로 접속하면
Nginx 기본 환영 페이지가 표시됩니다 👇
“Welcome to nginx!”
2.4 컨테이너 종료 및 삭제
$ docker compose down
이 명령어 한 줄로 실행된 모든 컨테이너가 정리됩니다.
정리하면
| 항목 | 내용 |
| 도구 | Docker Compose |
| 역할 | 여러 컨테이너를 하나의 서비스 단위로 관리 |
| 장점 | 복잡한 명령어 단순화, 서비스 일관 실행 및 중지 |
| 실행 명령 | docker compose up -d, docker compose down |
Docker Compose는 개발 환경을 체계적으로 관리할 수 있는 강력한 도구입니다.
여러 컨테이너가 필요한 프로젝트라면, Compose로 통합 관리해보세요
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Docker Compose로 MySQL, Redis 컨테이너 동시에 띄워보기 (0) | 2025.10.12 |
|---|---|
| Docker Compose에서 build와 --build의 차이 이해하기 (0) | 2025.10.12 |
| Dockerfile WORKDIR — 작업 디렉터리를 지정하는 명령어 (0) | 2025.10.12 |
| Dockerfile ENTRYPOINT 이해하기 (0) | 2025.10.12 |
| Dockerfile의 COPY 명령 (0) | 2025.10.12 |