1. Docker Compose 소개
1. Docker Compose란
- Docker Compose는 다중 컨테이너 애플리케이션을 정의 및 공유할 수 있도록 개발되었다.
- 단일 명령을 사용하여 모두 실행 또는 종료할 수 있도록 개발된 도구이다.
1) 다중 컨테이너 애플리케이션 정의
- 서비스를 서버 위에 실행시킬 때 여러 개의 서비스들이 필요한 경우가 있다.
- 예를 들어 새로 만든 애플리케이션(기계 번역 애플리케이션 등)이 사용하는 데이터베이스는 MySQL을 사용한다고 가정한다면, MySQL을 설치 및 실행한 뒤 애플리케이션과 함께 실행시켜야 할 것이다.
- 이런 경우
docker-compose
가 여러 개의 서비스를 한 번에 정의할 수 있도록 한다.
services:
nmt_app:
image: nmt_app_v1
nmt_mysq:
image: mysql
YAML
문서 하나에 여러 개의 컨테이너를 정의할 수 있다.
2) 단일 명령을 사용하여 모두 실행 또는 종료
docker-compose up
이라는 명령어 하나로 문서에 정의한 서비스들이 한꺼번에 컨테이너로 실행될 수 있다.
- 반대로
docker-compose down
이라는 명령어로 정의한 모든 서비스를 내릴 수도 있다.
- 이때 먼저 실행되어야 하는 순서까지 지정이 가능하다.
2. Docker Compose의 특징
1) 단일 호스트의 여러 격리된 환경
- Docker Compose는 프로젝트 이름을 사용하여 환경을 서로 격리하고, 여러 다른 컨텍스트에서 이 프로젝트 이름을 사용하여 접근한다.
- 예를 들어
nmt
라는 서비스를 실행시킬 때, old_nmt
, new_nmt
형식으로 여러 개를 서로 격리하여 서비스가 가능하다.
sudo docker-compose -p old up
sudo docker-compose -p new up
- 이때
-p
옵션으로 프로젝트명을 지정하여 하나의 애플리케이션(nmt
)을 두 개의 격리된 환경(old_nmt
, new_nmt
)으로 제공해 준다.
2) 컨테이너 생성 시 볼륨 데이터 보존
- 컨테이너 생성 시 볼륨 데이터를 보존하여 데이터가 휘발되지 않도록 처리해 준다.
- 컨테이너 내부에서 생성하여 사용하는 파일 볼륨을 로컬 경로와 공유하여 실수로 컨테이너가 종료되더라도 재실행 시 같은 볼륨을 유지해 준다.
3) 변경된 컨테이너만 재생성
- 컨테이너를 만드는 데 사용되는 구성을 캐시하여 변경되지 않은 서비스를 다시 시작하면, 기존 컨테이너를 다시 사용한다.
4) 변수 및 환경 간 구성 이동
- Docker Compose 파일의 변수를 지원하여 다양한 환경 또는 다른 사용자에게 맞게 컴포지션 커스텀이 가능하다.