기타

docker compose 기본개념

content0474 2024. 12. 10. 10:38

Docker Compose는 Docker 컨테이너를 사용하여 여러 애플리케이션을 정의하고 실행할 수 있도록 돕는 도구

Compose는 컨테이너 정의를 하나의 파일에 작성하고 명령어 한 줄로 여러 컨테이너를 실행하거나 중단

 

1. 주요 특징

  1. 멀티 컨테이너 애플리케이션 관리
    여러 컨테이너를 한꺼번에 정의하고 실행 가능
  2. YAML 파일 기반 설
    docker-compose.yml 파일에 애플리케이션 스택을 정의
  3. 종속성 관리
    컨테이너 간의 네트워크 및 의존 관계를 쉽게 설정
  4. 명령어 단순화
    docker compose up으로 모든 컨테이너를 실행하고,
    docker compose down으로 한 번에 종료 및 정리 가능

2. Docker Compose의 구조

  1. 정의 (Define)
    docker-compose.yml 파일에서 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의
  2. 빌드(Build) 및 실행(Run)
    정의한 내용을 기반으로 이미지를 빌드하고 컨테이너를 실행
  3. 제어(Control)
    컨테이너의 시작, 종료, 로그 확인, 상태 확인 등을 명령어로 제어

3. docker-compose.yml 파일 예제

version: "3.9"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
  database:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: test_db
    ports:
      - "3306:3306"

 

설명:

  1. version: Compose 파일의 스펙 버전
  2. services: 컨테이너를 정의하는 섹션
    • web: nginx 컨테이너 정의
    • database: mysql 컨테이너 정의
  3. ports: 호스트와 컨테이너 간의 포트 매핑
  4. volumes: 로컬 파일을 컨테이너 내부와 연결
  5. environment: 컨테이너 환경 변수를 설정

 

4. 주요 명령어

  1. Compose 실행
    • `docker compose up`
    • -d: 백그라운드 실행. (docker compose up -d)
  2. Compose 종료
    • `docker compose down`
    • 네트워크, 컨테이너, 볼륨 제거
  3. 상태 확인
    • `docker compose ps`
  4. 로그 확인
    • `docker compose logs`

5. Docker Compose의 장점

  1. 개발 환경에서 편리함: 여러 컨테이너를 정의 및 실행하는 과정을 단순화
  2. 이식성: 동일한 docker-compose.yml 파일을 통해 다른 환경에서도 동일한 애플리케이션 실행 가능
  3. 자동화된 워크플로우의존성을 쉽게 설정하고 관리할 수 있어 빠른 배포가 가능