반응형

웹 개발 관점에서 Docker Compose는 Docker에서 가장 흥미로운 부분 중 하나인데요. 개발 환경에서 Docker Compose를 사용하면 애플리케이션의 생명 주기를 자동으로 관리하게 하고, 애플리케이션의 시작, 중지할 수 있는 좋은 작업 스타일을 가질 수 있습니다. 여러 컨테이너를 관리하게 해주는 Docker Compose!!, Docker Compose에 대해 알아보고 특징 및 필요성을 생각해 보도록 하겠습니다.


Docker Compose란

Docker Compose는 여러 컨테이너를 가지는 애플리케이션을 통합적으로 Docker 이미지를 만들고, 만들어진 각각의 컨테이너를 시작 및 중지하는 등의 작업을 더 쉽게 수행할 수 있도록 도와주는 도구입니다.

 

Docker Compose 특징

공식 문서를 살펴보면 네 가지 주요 영역을 강조하고 있습니다.

1. 서비스들을 시작하고 중지하고 재 빌드한다.

여기서 말하는 서비스는 컨테이너에서 돌아가는 애플케이션을 의미합니다. 단일 서비스(컨테이너)가 아닌 복수의 서비스(컨테이너)를 시작하고 중지하고 다시 빌드한다고 볼 수 있겠습니다. 예전 포스트에서 몽고 디비와 NodeJS컨테이너를 연결하기 위해 네트워크를 만들고 실행시키기 위해 일련의 커맨드를 순차로 입력해야 했었습니다. 이러한 과정들을 편리하게 docker-compose파일에 정의함으로 관리하게 해 줍니다.

 

2. 실행 중인 서비스의 상태를 볼 수 있다.

로그 출력을 포함하여 실행 중인 모든 서비스의 상태를 쉽게 볼 수 있습니다.

 

3. 실행 중인 서비스의 로그를 스트림 할 수 있다.

두 번째와 비슷한 특징이라고 생각할 수 있습니다. Docker Compose를 이용하면 로그를 가져오기 위해 컨테이너별로 명령을 수행할 필요가 없습니다. 실제로 원하는 경우 모든 다른 컨테이너의 로그를 한 번에 가져올 수도 있습니다.

 

4. 하나의 서비스에 일회성 작업을 수행할 수 있다.

당연하게 생각될 수 있는데 항상 모든 컨테이너를 묶어서 작업해야 할 필요는 없습니다. 경우에 따라서는 단일 컨테이너에 명령을 내리는 필요가 있을 텐데요. Docker-compose에서 역시 단일 컨테이너에 접근하여 해당 컨테이너의 로그를 보거나 컨테이너를 시작 및 중지하거나, 이미지를 빌드할 수도 있습니다.

 

Docker Compose의 필요성?

여기 아래에 6개의 서비스가 있다고 생각해 봅시다.

웹 앱에 프런트 앤드에 nginx가 있고 요청이 들어오면 Node.js서버로 라우팅 한다고 가정해 보겠습니다. 물론 이러한 프레임워크는 PHP, ASP.NET, Java 등 무엇이든 상관없습니다. 노드 서버가 호출되면 데이터베이스를 호출하게 되고, Redis에서 해당 데이터의 일부를 캐시 하거나 하여 앱의 프로세스가 진행됩니다.

Docker Compose를 사용한다면 단일 서비스가 아닌 이 모든 서비스를 관리할 수 있게 됩니다. 위의 예의 경우 6개의 다른 컨테이너가 존재할 것입니다. 만약 다른 애플리케이션 서버와 작업이 필요하고 수동으로 관리하는 경우 훨씬 더 많은 컨테이너가 필요할 것입니다. 단일로 관리하게 될 경우 매우 효율적이지 않고 매우 생산적이지 않을 수 있습니다.

Docker Compose에는 docker-compose라는 yaml파일이 있으며, 이 파일에서 이러한 모든 서비스 간의 관계를 정의할 수 있습니다. 그리고 브리지 네트워크와 같은 설정도 docker-compose에서 모두 설정이 가능합니다. Redis, Mongo는 실제로 런타임 컨테이너일 뿐이지만 Docker Compose에서는 서비스라고 불리는 걸 기억해 주세요.

 

Docker Compose WorkFlow

DockerCompose를 사용하기로 했다면 어떤 순서로 진행해야 하는지 간략히 알아보도록 하겠습니다.

1. 서비스들 빌드하기

서비스를 사용하기 위해서 빌드를 해야 합니다. Docker파일을 설정하고 docker-compose.yml파일에 정의하여 Docker Compose를 사용하여 서비스를 빌드하게 됩니다. 이 과정을 통해 Docker 이미지를 생성하게 됩니다.

2. 서비스들 시작하기

그런 다음 Docker Compose를 사용하여 서비스를 시작하게 됩니다. 한 개 이상의 컨테이너가 시작된다고 생각하시면 됩니다. 그리고 다수의 컨테이너를 사용하는 애플리케이션 서비스를 이용할수 있게 됩니다.

3. 서비스들 정리하기

사용이 끝난 서비스를 해체하고 컨테이너를 중지하고, 원하는 경우 제거할 수 있습니다.


간단히 Docker Compose에 대해 알아보았는데요.

다음 포스트에서 직접 실습을 하며 다뤄보도록 하겠습니다. 여기까지 읽어주셔서 감사합니다.

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기