Docker Compose 기본: 다중 컨테이너 애플리케이션 관리

DockerBeginner
지금 연습하기

소개

Docker Compose 는 현대 소프트웨어 개발에 필수적인 도구로, 개발자가 복잡한 멀티 컨테이너 애플리케이션을 손쉽게 정의하고 실행할 수 있도록 지원합니다. 이 포괄적인 튜토리얼은 Docker Compose 를 사용하여 컨테이너화된 환경을 구성, 배포 및 관리하는 필수 기술을 탐구하며, 개발자와 DevOps 전문가를 위한 실질적인 통찰력을 제공합니다.

Docker Compose 기본

Docker Compose 소개

Docker Compose 는 멀티 컨테이너 Docker 애플리케이션을 정의하고 실행하는 강력한 도구입니다. YAML 파일을 사용하여 애플리케이션 서비스, 네트워크 및 볼륨을 구성할 수 있으므로 컨테이너 오케스트레이션 프로세스를 간소화합니다.

핵심 개념

Docker Compose 를 통해 다음을 수행할 수 있습니다.

  • 멀티 컨테이너 애플리케이션 정의
  • 컨테이너 종속성 관리
  • 애플리케이션 환경 구성
  • 서비스 쉽게 확장

기본 Docker Compose 워크플로우

graph TD A[docker-compose.yml 작성] --> B[컨테이너 빌드] B --> C[서비스 시작] C --> D[컨테이너 관리]

Docker Compose 구성 예제

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  database:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: mysecretpassword

주요 구성 매개변수

매개변수 설명 예시
version Compose 파일 버전 3.8
services 애플리케이션 컨테이너 정의 web, database
image 컨테이너 기본 이미지 nginx:latest
ports 컨테이너 포트 노출 "80:80"
environment 컨테이너 환경 변수 설정 POSTGRES_PASSWORD

실습 예제: 웹 애플리케이션 실행

Ubuntu 22.04 에서 멀티 컨테이너 웹 애플리케이션을 배포하려면 다음과 같이 합니다.

## Docker Compose 설치
sudo apt update
sudo apt install docker-compose

## docker-compose.yml 생성
touch docker-compose.yml

## 서비스 시작
docker-compose up -d

이 방법은 멀티 컨테이너 애플리케이션에 대한 컨테이너 오케스트레이션을 Docker Compose 가 어떻게 간소화하는지 보여주며, 복잡한 개발 환경을 효율적으로 관리하는 방법을 제공합니다.

컨테이너 관리 기법

컨테이너 수명주기 관리

Docker Compose 는 컨테이너 수명주기를 관리하기 위한 포괄적인 명령어를 제공하여 멀티 컨테이너 애플리케이션에 대한 정밀한 제어를 가능하게 합니다.

필수 Docker Compose 명령어

graph LR A[docker-compose up] --> B[docker-compose down] B --> C[docker-compose ps] C --> D[docker-compose restart]

명령어 기능 개요

명령어 기능 사용법
up 컨테이너 생성 및 시작 docker-compose up -d
down 컨테이너 중지 및 제거 docker-compose down
ps 컨테이너 상태 목록 docker-compose ps
restart 서비스 재시작 docker-compose restart web
scale 서비스 인스턴스 조정 docker-compose up --scale web=3

실습 서비스 관리 예제

version: "3.8"
services:
  web:
    image: nginx:latest
    deploy:
      replicas: 3
    ports:
      - "80-85:80"
  database:
    image: postgres:13

컨테이너 제거 및 정리

## 특정 컨테이너 제거
docker-compose rm web

## 모든 컨테이너 및 네트워크 제거
docker-compose down --volumes

## 사용되지 않는 컨테이너 정리
docker system prune -f

이 방법은 고급 컨테이너 관리 기법을 보여주며, 개발자에게 복잡한 멀티 컨테이너 환경을 효율적으로 조정할 수 있는 강력한 도구를 제공합니다.

고급 배포 전략

환경 구성 관리

고급 Docker Compose 배포는 유연하고 안전한 애플리케이션 환경을 보장하기 위해 정교한 환경 구성 기법이 필요합니다.

환경 구성 전략

graph TD A[환경 변수] --> B[보안 정보 관리] B --> C[네트워크 구성] C --> D[성능 최적화]

구성 방법 비교

전략 접근 방식 복잡도 보안 수준
.env 파일 외부 구성 낮음 중간
Docker Secrets 암호화된 민감한 데이터 중간 높음
환경 변수 런타임 구성 낮음 낮음

고급 Docker Compose 구성

version: "3.8"
services:
  backend:
    image: custom-backend
    networks:
      - application_network
    deploy:
      replicas: 3
      update_config:
        parallelism: 2
        delay: 10s
    secrets:
      - db_password

networks:
  application_network:
    driver: overlay

secrets:
  db_password:
    external: true

성능 최적화 기법

## 컨테이너 리소스 할당 최적화
docker-compose up -d --scale backend=5 --compatibility

## 컨테이너 성능 모니터링
docker stats

## 리소스 제약 구현
docker-compose config --resolve-env-vars

이 접근 방식은 복잡한 멀티 컨테이너 환경에 대한 고급 배포 전략을 보여주며, 구성 유연성, 보안 및 성능 최적화에 중점을 둡니다.

요약

Docker Compose 를 마스터함으로써 개발자는 애플리케이션 배포를 간소화하고, 컨테이너 종속성을 관리하며, 확장 가능하고 재현 가능한 개발 환경을 만들 수 있습니다. 이 튜토리얼은 기본 구성부터 고급 배포 전략까지 주요 개념을 다루며, 팀이 컨테이너화 기술을 효과적으로 활용하고 소프트웨어 개발 워크플로우를 향상시키도록 지원합니다.