
Docker Compose 란?
💡 여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해
하나의 묶음으로 관리할 수 있게 도와주는 툴이다.
✔ Docker Compose를 사용하는 이유
- 여러 개의 컨테이너를 관리하는 데 용이
여러 개의 컨테이너로 이루어진 복잡한 Application을 한번에 관리할 수 있게 해준다.
여러 컨테이너를 하나의 환경에서 실행하고 관리하는데 도움이 된다. - 복잡한 명령어로 실행시키던 걸 간소화 시킬 수 있음.
이전 이미지를 컨테이너로 실행시킬 때 아래와 같은 명령어를 실행시켰다.
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
Docker Compose를 사용하면 위와 같이 컨테이너를 실행시킬 때마다 복잡한 명령어를 입력하지 않아도 된다.
단순히 docker compose up 명령어만 실행시키면 된다.
Nginx 설치 및 실행
✔ Docker CLI로 컨테이너를 실행시킬 때
$ docker run --name webserver -d -p 80:80 nginx
✔ Docker Compose로 컨테이너를 실행시킬 때
- compose.yml 파일 작성하기
services:
my-web-server:
container_name: web-server
image: nginx
ports:
- 80:80
- services: my-web-server : Docker Compose에서 하나의 컨테이너를 서비스(service)라고 부른다.
이 옵션은 서비스에 이름을 붙이는 기능이다. - container_name: web-server : 컨테이너를 띄울 때 붙이는 별칭이다.
CLI에서 --name web-server 역할과 동일하다. - image: nginx : 컨테이너를 실행시킬 때 어떤 이미지를 사용할 지 정의하는 명령어이다.
$ docker run {이미지 명}와 동일한 역할이다. - ports : 포트 매핑은 어떻게 할 지 설정하는 옵션이다. CLI에서 -p 80:80 역할과 동일하다.
⚠ 볼륨(Volumn), DB 연동, 다중 컨테이너 연동 등 자세한 내용은 추후 포스팅 예정이다.
✔ Docker Compose 파일 실행 시키기
$ docker compose up -d
- -d 옵션은 CLI와 동일하게 백그라운드 실행을 의미한다.
✔ Docker Compose 실행 현황 보기
$ docker compose ps
$ docker ps
✔ Docker Compose로 실행된 모든 컨테이너 중지 및 삭제
$ docker compose down
자주 사용하는 Docker Compose CLI 명령어
💡 docker-compose로 시작하는 명령어는 더 이상 업데이트를 지원하지 않는 V1 명령어이다.
되도록 V2부터는 docker compose로 시작하는 명령어를 사용하자.
✔ Docker Compose로 실행시킨 컨테이너 확인하기
# compose.yml에 정의된 컨테이너 중 실행 중인 컨테이너만 보여준다.
$ docker compose ps
# compose.yml에 정의된 모든 컨테이너를 보여준다.
$ docker compose ps -a
✔ Docker Compose 로그 확인하기
# compose.yml에 정의된 모든 컨테이너의 로그를 모아서 출력한다.
$ docker compose logs
✔ 컨테이너를 실행하기 전에 이미지 재빌드하기
# 포그라운드에서 실행
$ docker compose up --build
# 백그라운드에서 실행
$ docker compose up --build -d
- compose.yml에서 정의한 이미지 파일에서 코드가 변경 됐을 경우,
이미지를 다시 빌드해서 컨테이너를 실행시켜야 코드 변경된 부분이 적용된다.
그러므로 이런 상황에서는 --build 옵션을 추가해서 사용해야 한다.
✔ 개발 환경에서 빠르게 변경사항을 반영해야 할 때는 docker compose up --build를 사용해도 괜찮다.
운영 환경에서는 안전성을 위해 docker compose down으로 먼저 중지한 다음,
docker compose up --build를 실행하는 경우가 있다
✔ 이미지 다운받기 / 업데이트 하기
$ docker compose pull
- compose.yml에서 정의된 이미지를 다운 받거나 업데이트 한다.
- 로컬 환경에 이미지가 없다면 이미지를 다운 받는다.
- 로컬 환경에 이미 이미지가 있는데, Dockerhub의 이미지와 다른 이미지일 경우 이미지를 업데이트 한다.
✔ Docker Compose로 실행된 특정 컨테이너 시작/중지/삭제
# 시작
$ docker compose start {compose name}
# 중지
$ docker compose stop {compose name}
# 삭제
$ docker compose rm {compose name}
✔ Docker Compose -f 옵션
💡 다른 이름이나 경로의 파일을 Docker Compose 설정 파일로 사용하고 싶다면
-f 옵션으로 명시해준다.
$ docker compose -f compose.yml up
-f 롭션은 여러 개의 설정 파일을 사용할 때도 사용할 수 있다.
나중에 나오는 설정이 앞에 오는 설정보다 우선하게 된다.
$ docker compose -f compose.yml -f docker-compose.yml up
Docker CLI <-> Docker Compose 변환 사이트
💡 compose.yml <-> Docker CLI 명령어를 변환해주는 사이트가 있다.
✔ Docker CLI -> compose.yml로 변환
Composerize
Say goodbye to sprawling docker commands and say hello to $ docker-compose up :) Looking for the reverse (Docker compose to docker run command(s)) ? Try Decomposerize Want to convert from Docker compose file formats ? Try Composeverter Paste your docker ru
www.composerize.com
✔ compose.yml -> Docker CLI로 변환
https://www.decomposerize.com/
'DevOps > Docker' 카테고리의 다른 글
| [Docker] Docker Compose로 Spring boot + MySQL + Redis 컨테이너 동시에 띄어보기 (0) | 2026.01.14 |
|---|---|
| [Docker] 웹 프론트엔드 프로젝트 Next.js를 Docker로 배포해보자 (0) | 2026.01.14 |
| [Docker] 백엔드 프로젝트 Next.js를 Docker로 실행시켜보자 (0) | 2026.01.14 |
| [Docker] Dockerfile이란? + 작성 및 개념 설명 (0) | 2026.01.14 |
| [Docker] Docker로 MongoDB 실행 + 볼륨(Volumn) 적용 (0) | 2026.01.13 |