개발일기
도커 컴포즈(Docker compose) - 개념 정리 및 사용법 본문
도커 컴포즈란?
도커 컴포즈는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구입니다.
도커 컴포즈를 사용하는 이유
여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 이를 테스트하려면 각 컨테이너를 하나씩 생성해야 한다. 예를 들면, 웹 애플리케이션을 테스트하려면 웹 서버 컨테이너, 데이터베이스 컨테이너 두 개의 컨테이너를 각각 생성해야 한다.
docker run을 통해서 실행하는 모든 어플리케이션은 docker-compose 명령어를 사용하여 실행할 수 있다.
$ docker run --name wordpress_db -d mysql:8
이처럼 여러 개의 컨테이너로 구성된 어플리케이션을 구축하기 위해 run 명령어를 여러 번 사용할 수 있지만 각 컨테이너가 제대로 동작하는지 확인하는 테스트 단계에서는 이런 식으로 일일히 여러개의 컨테이너로 구성된 어플리케이션을 구축하기 위해 run 명령어를 여러 번 사용할 수 있지만 각 컨테이너가 제대로 동작하는지 확인하는 테스트 단계에서는 이런 식으로 일일히 여러 개의 컨테이너를 실행학디는 매우 번거롭다. 매번 run명령어에 옵션을 설정해 CLI로 컨테이너를 실행하기보다는 여러 개의 컨테이너를 하나의 서비스로 정리해 컨테이너 묶음으로 관리할 수 있다면 좀 더 편리하다. 이를 위해 도커 컴포즈는 컨테이너를 이용한 서비스의 개발과 CI를 위해 여러 개의 컨테이너를 하나의 프로젝트로서 다룰 수 있는 작업 환경을 제공합니다.
도커 컴포즈는 여러 개의 컨테이너의 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작합니다.
도커 컴포즈의 설정 파일은 도커 엔진의 run 명령어의 옵션을 그대로 사용할 수 있으며, 각 컨테이너의 의존성, 네트워크, 볼륨 등을 함께 정의할 수 있습니다. 또한 스윔모드의 서비스와 유사하게 설정 파일에 정의된 서비스의 컨테이너 수를 유동적으로 조절할 수 있으며 컨테이너의 서비스 디스커비리도 자동으로 이루어집니다. 그래서 컨테이너의 수가 많아지고 정의해야 할 옵션이 많아지고 정의해야 할 옵션이 많아진다면 도커 컴포즈를 사용하는 것이 좋습니다.
도커 명령어
docker-compose ps 명령어를 활용하여 가동된 서비스(컨테이너)를 조회합니다.
docker-compose ps 명령어를 활용하여 기동된 서비스(컨테이너)를 조회합니다.
docker-compose up -d
docker-compose를 활용하여 어플리케이션을 가동할 수 있다. -d(--detach) 옵션을 사용하면 백그라운드로 실행합니다.