본문 바로가기
Docker

[Docker] Docker Compose (도커 강의 정리 #5)

by dbs_ 2025. 5. 8.

 


 

Docker Compose를 사용하는 이유

  • 여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴.
  • 컨테이너 여러 개를 동시에 띄우는 경우에 사용.
  • 실행할 때 작성한 복잡한 명령어를 간소화시킬 수 있음.

 

예시 : Nginx 설치 및 실행

docker cli로 nginx 컨테이너 실행 할 때

$ docker run --name webserver -d -p 80:80 nginx

 

docker compose 사용하여 실행 할 때

  • 파일명은 compose.yml 지정
  • yml 파일은 들여쓰기로 계층을 나누어 판단하므로 들여 쓰기 주의
services: # 하나의 컨테이너를 서비스라고 한다
	my-web-server: # 서비스 이름 지정
		container_name: web-server
		image: nginx
		ports:
			- 80:80

 

compose 파일 실행 / 중지

  • compose.yml 파일이 있는 경로에서 명령어 실행
$ dokcer compose up
 
$ docker compose up -d 백그라운드 실행

$ docker compose down 컨테이너 중지 / 삭제

 

Docker Compose CLI 명령어

$ docker compose up -d
 -d는 "detached 모드"로 터미널을 점유하지 않고 실행
 컨테이너를 백그라운드에서 실행

$ docker compose ps
 상태와 포트 정보 등을 확인할 수 있다
 현재 실행 중인 컨테이너 목록을 보여줌

$ docker compose ps -a
 실행 중/중지된 컨테이너 상태를 모두 확인할 때 사용
 종료된 컨테이너 포함 모든 컨테이너 목록을 보여줌

$ docker compose logs
 문제 원인 파악이나 동작 확인에 유용
 컨테이너에서 출력한 로그를 확인할 수 있다

$ docker compose up --build
 코드나 Dockerfile이 변경된 경우 사용 
 컨테이너를 실행하기 전에 이미지를 새로 빌드 

$ docker compose pull
 이미지 업데이트가 필요할 때 사용 
 docker-compose.yml에 정의된 이미지를 최신 버전으로 다운로드 

$ docker compose down
 초기화하거나 정리할 때 사용 
 실행 중인 컨테이너, 네트워크, 볼륨 등을 완전히 종료 및 삭제

 

예시 : Spring Boot 실행하기

  • compose.yml 아래와 같이 작성
services:
 my-server:
   build: . # 현재 경로에 있는 Docker파일로 만들어진 이미지를 기반으로 컨테이너를 띄우겠다
   ports:
     - 8080:8080

 

Docker CLI compose.yml 변환

  • Docker CLI로 작성할 수 있는 명령어는 전부 compose.yml 파일로 옮길 수 있다. 반대로 compose.yml에 작성한 모든 값은 Docker CLI로 나타낼 수 있다.