[Docker] Docker Compose란? 명령어와 yml 작성법 정리
by 우와한개발자
[ Docker Compose ]
1. Docker Compose란?
- docker를 사용해 여러 개의 컨테이너를 쉽게 정의하고 실행하기 위한 도구
- docker compose를 사용하면 YAML 파일을 통해 어플리케이션의 서비스, 네트워크, 볼륨 등을 정의
2. Docker Compose 명령어
- 구버전은 docker-compose 형태
- 요즘엔 docker compose 형태의 하위 명령어 방식
1) docker compose 설치
sudo apt install docker-buildx-plugin
sudo apt install docker-compose-plugin
⚠️ apt 명령어?
- Ubuntu에서 사용하는 패키지 관리 도구
- 설정된 패키지 저장소(repository)에서 프로그램을 검색하고 설치함.
- docker Registry가 아닌 Ubuntu 패키지 저장소라면 명령어 차이 있음
#Ubuntu 패키지 저장소 sudo apt install docker-buildx sudo apt install docker-compose-v2
2) 주요 명령어
| 명령어 | 설명 |
| docker compose up | 도커 컴포즈 파일을 사용하여 서비스 시작 |
| docker compose up -d | 서비스를 백그라운드 모드로 시작 |
| docker compose down | 모든 서비스 중지 및 컨테이너와 네트워크 삭제 |
| docker compose ps | 현재 실행 중인 서비스 상태 확인 |
| docker compose logs | 서비스 로그 출력 |
| docker compose exec <service> <command> | 실행 중인 서비스 컨테이너에서 명령 실행 |
| docker compose build | 도커 이미지 빌드 |
| docker compose pull | 도커 허브에서 이미지 다운로드 |
| docker compose restart | 서비스 재시작 |
| docker compose stop | 서비스 정지 |
| docker compose start | 정지된 서비스 시작 |
| docker compose pause | 서비스 일시 중지 |
| docker compose unpause | 일시 중지된 서비스 재시작 |
| docker compose rm | 중지된 서비스 컨테이너 삭제 |
| docker compose down -v | 서비스 및 관련 볼륨까지 삭제 |
| docker compose config | 컴포즈 파일 구성 확인 |
3) 자주 같이 사용되는 추가 옵션
| 옵션 | 설명 | 예시 |
| -d | 백그라운드 실행 | docker compose up -d |
| -f | 특정 compose 파일 지정 | docker compose -f docker-compose.yml up |
| --build | 실행 전에 이미지 다시 빌드 | docker compose up --build |
| --no-cache | 캐시 없이 이미지 빌드 | docker compose build --no-cache |
| -v | 볼륨까지 함께 삭제 | docker compose down -v |
| -p | 프로젝트 이름 지정 | docker compose -p myapp up -d |
- 현재 디렉터리에 기본 이름의 Compose 파일이 있으면 -f 안 써도 됨.
- 기본 이름의 Compose 파일
- docker-compose.yml
- docker-compose.yaml
- compose.yml
- compose.yaml
3. docker compose 작성
- yml 파일로 정의
| 주요 섹션 | 의미 |
| services | 실행할 컨테이너 정의 |
| networks | 컨테이너 네트워크 정의 |
| volumes | 데이터 저장소 정의 |
services:
db:
image: jinkyoungheo/oracle-xe
container_name: oracle-container
ports:
- "1521:1521"
environment:
ORACLE_PASSWORD: oracle
app:
image: jinkyoungheo/emp-web
container_name: emp-web-container
ports:
- "8080:8080"
environment:
DB_IP: 192.168.0.86
DB_USER: hr
DB_PASS: hr
API_BASE_URL: "<http://192.168.0.86:8080>"
depends_on:
- db
tc:
image: jinkyoungheo/tomcat10
container_name: tomcat
ports:
- 8888:8080
volumes:
- tomcat_vol:/usr/local/tomcat/webapps
depends_on:
- db
volumes:
tomcat_vol:
networks:
my_network:
driver: bridge
⚠️ YAML 파일 작성 규칙
- 콜론(:) 뒤에 바로 값을 쓰는 경우 → 단일 값(문자열, 숫자 등)을 설정할 때 사용
- 콜론(:) 뒤에 줄바꿈 후 들여쓰기하는 경우 → 리스트(-), 딕셔너리(객체), 여러 설정이 있는 복합 구조를 정의할 때 사용
# 단일 값 image: nginx # 리스트 ports: - 8080:80 # 딕셔너리 environment: DB_USER: root DB_PASS: 1234
'인프라' 카테고리의 다른 글
| [Docker] Docker Networking이란? docker network driver 종류와 명령어 정리 (0) | 2026.03.17 |
|---|---|
| [Docker] Docker Volume이란? 컨테이너 데이터 관리와 mount (0) | 2026.03.16 |
| [Docker] Docker Registry GC(가비지컬렉션)와 인증 설정하기 (0) | 2026.03.16 |
| [Docker] Docker Registry란? private registry 구축하기 (0) | 2026.03.16 |
| [Docker] Dockerfile이란? 주요 명령어와 이미지 생성 (0) | 2026.03.14 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자