Docker

[Docker]#19 도커 컴포즈(docker compose) - 개념 정리

TitediosKW 2024. 9. 2. 19:00
반응형

Docker는 컨테이너 기술의 선두주자이며, 다양한 개발 및 운영 환경에서 애플리케이션을 배포하고 관리하는 데 널리 사용되고 있습니다. 하지만 단일 컨테이너로는 복잡한 애플리케이션을 관리하는 데 한계가 있습니다. 이때 필요한 것이 바로 Docker Compose입니다. Docker Compose는 다수의 컨테이너로 구성된 애플리케이션을 간편하게 정의하고 실행하기 위한 도구입니다. YAML 형식의 파일 하나로 애플리케이션의 모든 서비스, 네트워크, 볼륨 등을 관리할 수 있어 복잡한 애플리케이션 개발 및 배포를 효율적으로 만들어줍니다. 이 포스팅에서는 Docker Compose의 기본 개념과 주요 기능을 살펴보겠습니다.


목차

1. Docker Compose란 무엇인가?

2. Docker Compose의 주요 기능

3. Docker Compose의 장점

4. Docker Compose 설치

5. Docker compose 기본 사용법

결론


1. Docker Compose란 무엇인가?

그림 출처: https://docs.docker.com/compose/compose-application-model/

Docker Compose는 다중 컨테이너 애플리케이션을 정의하고 관리할 수 있는 도구입니다. 예를 들어, 웹 애플리케이션은 웹 서버, 데이터베이스, 캐시 서버 등 여러 컨테이너로 구성될 수 있습니다. 이러한 컨테이너들을 개별적으로 관리하는 것은 복잡하고 비효율적일 수 있습니다. Docker Compose는 하나의 YAML 파일로 여러 컨테이너를 정의하고, 명령어 한 줄로 모든 컨테이너를 시작, 중지, 관리할 수 있게 해 줍니다.

 

위의 그림에서 보자면 2개의 서비스와 1개의 보안 및 설정, 볼륨, 그리고 2개의 네트워크로 구성된 서비스를 만든다고 가정하여 봅시다. 그림에서 Infrastructure로 되어 있는 부분입니다. 해당 부분들에 대한 것들을 하나하나 손으로 작업하게 되면 비효율적일 뿐만 아니라 중간에 문제가 생길 가능성도 높고 다른 사람이 작업을 이해하기도 어렵습니다. 이런 문제를 해결하고자 Docker compose는 이런 인프라에 해당하는 작업들을 한데 묶어 관리한다고 생각하시면 이해가 빠르실 것입니다.


2. Docker Compose의 주요 기능

Docker Compose는 다음과 같은 주요 기능을 제공합니다:

  • 멀티 컨테이너 환경 구성: 여러 개의 서비스를 하나의 애플리케이션으로 정의하고, 간단히 배포할 수 있습니다.
  • 서비스 간 네트워크 설정: 각 서비스 간의 네트워크 설정을 손쉽게 정의할 수 있으며, 기본적으로 각 서비스는 자체 네트워크를 사용하여 통신합니다.
  • 볼륨을 통한 데이터 관리: 데이터베이스나 파일 시스템과 같은 영구 데이터를 저장할 수 있는 볼륨을 쉽게 정의하고 관리할 수 있습니다.
  • 환경 변수 설정 및 관리: 애플리케이션 환경에 맞게 서비스의 환경 변수를 설정할 수 있습니다.
반응형

3. Docker Compose의 장점

Docker Compose를 사용하면 다음과 같은 이점이 있습니다:

  • 간편한 정의: YAML 파일을 통해 서비스 간의 의존성, 포트 매핑, 볼륨 마운트 등을 명확하게 정의할 수 있습니다.
  • 일괄 관리: 하나의 명령어로 여러 컨테이너를 동시에 생성, 시작, 중지, 삭제할 수 있습니다.
  • 생산성 향상: 반복적인 작업을 자동화하여 개발 생산성을 높입니다.
  • 팀 협업: 명확한 구성 파일을 통해 팀원 간의 협업을 용이하게 합니다.
  • 환경 일관성: 개발, 테스트, 운영 환경에서 동일한 환경을 유지할 수 있습니다.

4. Docker Compose 설치

Docker Compose는 Docker Desktop에 기본 포함되어 있거나, 별도로 설치할 수 있습니다. 아래는 주요 OS에서의 설치 방법입니다.

Windows/macOS

Docker Desktop을 설치하면 Docker Compose도 함께 설치됩니다.

Linux

ubuntu를 기준 deb 파일을 다운로드 후에 아래 명령을 실행하여 설치를 진행합니다.

Install Docker Desktop on Ubuntu

sudo apt-get update
sudo apt-get install ./docker-desktop-<arch>.deb

설치 후, 다음 명령어로 설치가 제대로 되었는지 확인합니다.

docker compose --version 
docker-compose --version # docker version이 낮은 경우

5. Docker compose 기본 사용법

Docker Compose의 핵심은 docker-compose.yml 파일입니다. 이 파일에서 애플리케이션을 구성하는 모든 서비스, 볼륨, 네트워크 등을 정의합니다. 아래 예제를 살펴보겠습니다.

version: '3.7'

services:
  web:
    build: .
    ports:
      - "5000:5000"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: mysecretpassword
  • version: Docker compose 내부에서 사용하는 버전 정보입니다. 현재는 사용하지 않는 것을 권고합니다.
  • services: 컨테이너를 통해 실행할 서비스들을 정의하는 공간입니다. 여러분이 작성하여 실행하고자 하는 코드들이 대부분 여기에 작성됩니다.

결론

Docker Compose는 복잡한 애플리케이션을 효율적으로 관리하고 배포하기 위한 강력한 도구입니다. YAML 파일 하나로 애플리케이션 전체를 정의하고 관리할 수 있어 개발 생산성을 향상하고 팀 협업을 원활하게 만들어줍니다. 이 포스팅에서 다룬 내용을 바탕으로 Docker Compose를 활용해 여러분의 개발 및 운영 환경을 더욱 효율적으로 관리할 수 있기를 바랍니다. 이후 포스팅에서는 이번 포스팅의 내용을 바탕으로 서비스를 더 확장시켜 보도록 하겠습니다.


도움이 되셨다면 공감 부탁드리겠습니다. 여러분의 공감이 정말 큰 힘이 됩니다.


감사합니다!

반응형
댓글수1