다중 컨테이너 Docker 애플리케이션 구성 및 관리 방법

DockerBeginner
지금 연습하기

소개

Docker Compose 는 개발자 및 DevOps 전문가들이 다중 컨테이너 애플리케이션 배포 및 관리를 효율화하기 위한 필수적인 도구입니다. 이 포괄적인 튜토리얼은 다양한 환경에서 Docker Compose 를 효과적으로 사용하기 위한 기본 개념, 구성 전략 및 실제 구현 기법을 탐구합니다.

Docker Compose 소개

Docker Compose 란 무엇인가요?

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

Docker Compose 의 주요 개념

graph TD A[Docker Compose] --> B[서비스 구성] A --> C[다중 컨테이너 관리] A --> D[선언적 애플리케이션 설정]
기능 설명
서비스 정의 docker-compose.yml 에서 애플리케이션 구성 요소 정의
환경 구성 다양한 환경을 쉽게 관리
확장성 서비스의 수평적 확장을 간단하게 수행

Ubuntu 22.04 에서 기본 설치

## 패키지 인덱스 업데이트
sudo apt update

## 종속성 설치
sudo apt install curl docker-compose -y

## 설치 확인
docker-compose --version

Docker Compose 구성 예제

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

이 예제는 웹 서버와 PostgreSQL 데이터베이스라는 두 개의 상호 연결된 서비스를 사용하여 기본적인 Docker Compose 설정을 보여주며, 다중 컨테이너 애플리케이션을 위한 컨테이너 오케스트레이션 원리를 보여줍니다.

Docker Compose 구성

Docker Compose 파일 구조

Docker Compose 구성은 일반적으로 docker-compose.yml라는 YAML 파일로 정의됩니다. 이 파일은 다중 컨테이너 애플리케이션의 서비스, 네트워크 및 볼륨을 설명하는 구조화된 구문을 따릅니다.

graph TD A[docker-compose.yml] --> B[버전] A --> C[서비스] A --> D[네트워크] A --> E[볼륨]

구성 구문 및 버전

키 구성 요소 설명
버전 Docker Compose 파일 형식 지정
서비스 컨테이너 및 해당 구성 정의
네트워크 컨테이너 네트워킹 구성
볼륨 데이터 지속성 관리

완전한 Docker Compose 구성 예제

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./website:/usr/share/nginx/html
    networks:
      - web_network

  database:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: secretpassword
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - web_network

networks:
  web_network:
    driver: bridge

volumes:
  postgres_data:

구성 유효성 검사

## Docker Compose 파일 구문 검증
docker-compose config

## 컨테이너 시작 없이 구성 확인
docker-compose config --quiet

Docker Compose 애플리케이션 배포

배포 워크플로우

Docker Compose 는 간단한 명령줄 작업으로 다중 컨테이너 애플리케이션을 원활하게 배포하는 방법을 제공합니다.

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

기본 배포 명령어

명령어 기능
docker-compose up 모든 서비스 시작
docker-compose up -d 분리된 모드로 서비스 시작
docker-compose down 컨테이너 중지 및 제거
docker-compose scale 특정 서비스 확장

배포 예제

## 프로젝트 디렉토리로 이동
cd /path/to/project

## 서비스 빌드 및 시작
docker-compose up -d

## 실행 중인 컨테이너 보기
docker-compose ps

## 서비스 로그 확인
docker-compose logs web

## 특정 서비스 확장
docker-compose up -d --scale web=3

고급 배포 전략

version: "3.8"
services:
  web:
    image: myapp:latest
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
    networks:
      - application_network

networks:
  application_network:
    driver: overlay

서비스 관리 명령어

## 특정 서비스 중지
docker-compose stop web

## 서비스 다시 시작
docker-compose restart

## 모든 컨테이너 제거
docker-compose down --rmi all

요약

Docker Compose 를 마스터함으로써 개발자는 복잡한 애플리케이션 아키텍처를 단순화하고, 배포 워크플로우를 개선하며, 확장 가능하고 재현 가능한 컨테이너 환경을 만들 수 있습니다. 이 튜토리얼은 Docker 의 강력한 오케스트레이션 도구를 사용하여 서비스 구성, 네트워크 관리 및 선언적 애플리케이션 설정을 이해하는 견고한 기반을 제공합니다.