Docker Compose로 여러 컨테이너 관리하기

Docker Compose로 여러 컨테이너 관리하기

Docker Compose는 복잡한 애플리케이션을 보다 손쉽게 관리하기 위해 설계된 강력한 도구입니다. 이 도구를 활용하면 여러 개의 Docker 컨테이너를 동시에 설정하고 실행할 수 있으며, 이를 통해 소프트웨어 개발 및 배포에 있어서의 효율성을 크게 향상시킬 수 있습니다. 이 블로그 포스트에서는 Docker Compose의 특징과 활용 방법, 설치 방법에 대해 자세히 안내드리겠습니다.

Docker Compose란?

Docker Compose는 여러 개의 컨테이너를 하나의 서비스로 묶어 관리할 수 있는 기능을 제공하는 도구입니다. YAML 형식의 정의 파일인 docker-compose.yml을 통해 여러 서비스의 속성들을 설정하고, 이를 기반으로 명령어 하나로 모든 컨테이너를 실행, 중지할 수 있습니다. Docker Compose를 사용하면 반복적인 작업을 줄이고, 버전 관리가 용이해지며, 표준화된 환경을 쉽게 구축할 수 있습니다.

Docker Compose 설치 방법

Docker Compose는 다양한 운영 체제에서 사용할 수 있습니다. 각 운영 체제별 설치 방법을 살펴보겠습니다.

Windows와 macOS

Windows와 macOS 사용자는 Docker Desktop을 설치하면 Docker Compose가 기본적으로 포함되어 있습니다. Docker Desktop은 설치 후 자동으로 Compose를 설치하므로 별도의 설치 과정이 필요하지 않습니다. 설치 후, 다음의 명령어로 설치 여부를 확인할 수 있습니다.

$ docker-compose --version

리눅스

리눅스에서는 Docker Engine을 먼저 설치한 후 Docker Compose를 설치해야 합니다. 다음은 리눅스에서 Docker Compose를 설치하는 단계입니다.

  • 먼저 시스템 패키지를 업데이트합니다.
  • $ sudo apt-get update
  • 그 다음, 다음 명령어를 실행하여 Docker Compose를 설치합니다.
  • $ sudo apt-get install docker-compose-plugin

만약 위 명령어로 설치가 되지 않는 경우, Docker Compose의 GitHub 릴리즈 페이지에서 최신 버전을 다운로드하여 수동으로 설치할 수 있습니다.

Docker Compose 사용법

Docker Compose의 기본적인 사용법은 docker-compose.yml 파일을 작성한 후, 해당 파일을 기반으로 명령어를 실행하는 것입니다. 아래의 예시는 간단한 웹 애플리케이션을 설정하는 방법을 보여줍니다.

version: '3'
services:
 web:
  image: nginx
  ports:
   - "80:80"
 database:
  image: postgres
  environment:
   POSTGRES_PASSWORD: example

위의 예시는 두 개의 서비스를 정의하고 있습니다. 첫 번째 서비스는 Nginx 웹 서버를 실행하며, 두 번째 서비스는 PostgreSQL 데이터베이스를 설정합니다. 각 서비스는 특정 이미지를 기반으로 생성되며, 포트와 환경 변수 설정이 포함되어 있습니다.

컨테이너 실행하기

정의된 서비스를 실행하기 위해서는 아래 명령어를 사용합니다.

$ docker-compose up -d

이 명령어는 백그라운드에서 모든 서비스를 실행합니다. 모든 서비스가 정상적으로 실행되면, 각 컨테이너는 독립적인 네트워크 상에서 서로 통신할 수 있게 됩니다.

컨테이너 중지 및 삭제

실행 중인 컨테이너를 중지하고 삭제하려면 다음 명령어를 사용합니다.

$ docker-compose down

이 명령어는 모든 서비스를 중지하고 정의된 네트워크를 제거합니다. 데이터베이스와 같은 서비스는 볼륨에 따라 데이터가 유지될 수 있습니다.

Docker Compose의 네트워크 관리

Docker Compose는 기본적으로 각 서비스 간의 통신을 위한 네트워크를 자동으로 생성합니다. 이러한 기본 네트워크는 docker-compose.yml 파일이 위치한 디렉토리 이름을 따릅니다. 예를 들어, 디렉토리 이름이 my_app라면 네트워크 이름은 my_app_default가 됩니다.

컨테이너 간 통신

컨테이너 간의 통신은 서비스 이름을 호스트명으로 사용하여 이루어집니다. 예를 들어, web 서비스의 컨테이너에서 database 서비스에 접근할 때 다음과 같이 명령어를 실행할 수 있습니다.

$ docker-compose exec web ping database

이와 같은 방식으로 컨테이너 간의 네트워크 통신이 가능합니다.

환경 변수 관리

Docker Compose에서 환경 변수를 관리하는 것은 매우 유용합니다. 환경 변수를 .env 파일에 정의해두면 docker-compose.yml 파일 내에서 쉽게 사용할 수 있습니다.

POSTGRES_PASSWORD=${POSTGRES_PASSWORD}

위와 같이 설정하면 .env 파일에 정의된 POSTGRES_PASSWORD의 값을 사용할 수 있습니다.

결론

Docker Compose는 여러 컨테이너를 관리하는 데 있어 매우 유용한 도구입니다. 간편한 설정 파일을 기반으로 다양한 서비스를 구성하고, 쉽게 실행 및 중지할 수 있게 해줍니다. 본 포스트에서는 Docker Compose의 설치 및 기본적인 사용법에 대해 알아보았습니다. 이러한 기능을 잘 활용하면, 복잡한 시스템 환경을 효율적으로 구축할 수 있을 것입니다.

자주 묻는 질문과 답변

Docker Compose란 무엇인가요?

Docker Compose는 여러 개의 컨테이너를 함께 관리할 수 있도록 도와주는 도구입니다. YAML 파일을 이용해 다양한 서비스를 정의하고, 손쉽게 실행 및 중지할 수 있는 기능을 제공합니다.

Docker Compose를 설치하려면 어떻게 해야 하나요?

운영 체제에 따라 Docker를 설치한 후에 Docker Compose를 추가로 설치할 수 있습니다. Windows 및 macOS 사용자는 Docker Desktop을 설치하면 자동으로 Compose가 포함되어 있습니다.

Docker Compose를 사용해 컨테이너를 실행하는 방법은?

정의된 YAML 파일을 기반으로 docker-compose up -d 명령어를 입력하면 모든 서비스가 백그라운드에서 실행됩니다. 이 명령어로 간편하게 컨테이너를 시작할 수 있습니다.

컨테이너를 중지하고 삭제하려면 어떻게 해야 하나요?

컨테이너를 중지하고 제거하려면 docker-compose down 명령어를 사용하면 됩니다. 이 명령어는 모든 서비스를 종료하고 네트워크를 삭제하게 됩니다.

Leave a Comment