도커 컴포즈
시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구
설치
- 윈도우나 macOS에서는 도커 데스크톱을 설치하면 도커 컴포즈가 함께 설치됨
- 리눅스에서는 다음 명령어 실행
sudo apt install -y python3 python3-pip
sudo pip3 install docker-compose
정의 파일
- 이름을 docker-compose.yml라고 지정
- 한 폴더에 한 정의 파일만 있어야 함
구조
version: "[version]"
services:
[container name1]:
depends_on:
- [container name2]
image: [image name]
networks:
- [network name1]
- [network name2]
ports:
- [host port number]:[container port number]
volumes:
- [host path or volume name]:[container path]
environment:
- [environment variable]=[value]
stdin_open: [true / false]
tty: [true / false]
restart: [always / no / on-failure / unless-stopped]
[container name2]:
...
networks:
[network name1]:
[network name2]:
volumes:
[volume name1]:
[volume name2]:
항목
주항목 | 내용 |
---|---|
services | 컨테이너를 정의 |
networks | 네트워크를 정의 |
volumes | 볼륨을 정의 |
부항목 | docker run 커맨드의 옵션 | 내용 |
---|---|---|
image | 이미지 인자 | 사용할 이미지를 지정 |
networks | --net | 접속할 네트워크를 지정 |
volumes | -v, --mount | 스토리지 마운트를 설정 |
ports | -p | 포트 설정 |
environment | -e | 환경변수 설정 |
depends_on | 없음 | 다른 서비스에 대한 의존관계를 정의
컨테이너를 생성하는 순서나 연동 여부를 정의 |
restart | 없음 | 컨테이너 종료 시 재시작 여부를 설정 no: 재시작하지 않음 always: 항상 재시작 on-failure: 프로세스가 0 외의 상태로 종료됐다면 재시작 unless-stopped: 수동으로 멈추지 않는 한 항상 재시작 |
그외 부항목 | docker run 커맨드의 옵션 | 내용 |
---|---|---|
command | 커맨드 인자 | 컨테이너 시작 시 기존 커맨드를 오버라이드 |
container_name | —name | 실행할 컨테이너의 이름을 명시적으로 지정 |
dns | —dns | DNS 서버를 명시적으로 지정 |
env_file | 없음 | 환경설정 정보를 기재한 파일을 로드 |
entrypoint | —entrypoint | 컨테이너 시작 시 ENTRYPOINT 설정을 오버라이드 |
external_links | —link | 외부 링크를 설정 |
extra_hosts | —add-host | 외부 호스트의 IP 주소를 명시적으로 지정 |
logging | —log-driver | 로그 출력 대상을 설정 |
network_mode | —network | 네트워크 모드를 설정 |
실행
커맨드 | 내용 |
---|---|
up | 컨테이너를 생성하고 실행 |
down | 컨테이너와 네트워크를 종료하고 삭제 |
ps | 컨테이너 목록을 출력 |
config | 컴포즈 파일을 확인하고 내용을 출력 |
port | 포트 설정 내용을 출력 |
logs | 컨테이너가 출력한 내용을 화면에 출력 |
start | 컨테이너를 시작 |
stop | 컨테이너를 종료 |
kill | 컨테이너를 강제 종료 |
create | 컨테이너를 생성 |
restart | 컨테이너를 재실행 |
pause | 컨테이너를 일시 정지 |
unpause | 컨테이너의 일시 정리를 해제 |
rm | 종료된 컨테이너를 삭제 |
build | 컨테이너에 사용되는 이미지를 빌드 혹은 재빌드 |
pull | 컨테이너에 사용되는 이미지를 내려받음 |
scale | 컨테이너의 수를 지정 |
events | 컨테이너로부터 실시간으로 이벤트를 수신 |
help | 도움말 화면을 출력 |
up
- 컴포즈 파일의 내용에 따라 컨테이너와 볼륨, 네트워크를 생성하고 실행
docker-compose -f [file path] up [options]
옵션 | 내용 |
---|---|
-d | 백그라운드로 실행 |
—no-color | 화면 출력 내용을 흑백으로 함 |
—no-deps | 링크된 서비스를 실행하지 않음 |
—force-recreate | 설정 또는 이미지가 변경되지 않더라도 컨테이너를 재생성 |
—no-create | 컨테이너가 이미 존재할 경우 다시 생성하지 않음 |
—no-build | 이미지가 없어도 이미지를 빌드하지 않음 |
—build | 컨테이너를 실행하기 전에 이미지를 빌드 |
—abort-on-container-exit | 컨테이너가 하나라도 종료되면 모든 컨테이너를 종료 |
-t, —timeout | 컨테이너를 종료할 때의 타임아웃 설정, 기본은 10초 |
—remove-orphans | 컴포즈 파일에 정의되지 않은 서비스의 컨테이너를 삭제 |
—scale | 컨테이너의 수를 변경 |
down
- 컴포즈 파일의 내용에 따라 컨테이너와 네트워크를 삭제
- 볼륨과 이미지는 삭제되지 않음
docker-compose -f [file path] down [options]
옵션 | 내용 |
---|---|
--rmi 종류 |
삭제 시에 이미지도 삭제 종류를 all로 지정하면 사용했던 모든 이미지가 삭제됨 local로 지정하면 커스텀 태그가 없는 이미지만 삭제 |
-v, --volumes |
volumes 항목에 기재된 볼륨을 삭제 단, external로 지정된 볼륨은 삭제되지 않음 |
--remove-orphans | 컴포즈 파일에 정의되지 않은 서비스의 컨테이너도 삭제 |
stop
- 컴포즈 파일의 내용에 따라 컨테이너를 종료
docker-compose -f [file path] stop [options]
출처: 오가사와라 시게타카, 「그림과 실습으로 배우는 도커 & 쿠버네티스」, 위키북스
'CI CD > Docker' 카테고리의 다른 글
도커 명령어 (0) | 2025.05.21 |
---|---|
레지스트리 (Registry) (0) | 2025.05.21 |
이미지 만들기 (0) | 2025.05.21 |
스토리지 마운트 (Storage Mount) (0) | 2025.05.21 |
자주 사용하는 이미지 (0) | 2025.05.21 |