DevOps./Docker

[Docker] 도커 컴포즈 (Docker Compose)

PI.314 2022. 2. 1. 19:41

도커 컴포즈 (Docker Compose)
단일 서버에서 여러 컨테이너를 프로젝트 단위로 묶어서 관리

  • docker-compose.yml YAML 파일을 통해 명시적 관리
  • 프로젝트 단위로 도커 네트워크와 볼륨 관리
  • 프로젝트 내 서비스 간 의존성 정의 가능
  • 프로젝트 내 서비스 디스커버리 자동화
  • 손 쉬운 컨테이너 수평 확장

프로젝트 (Project)

도커 컴포즈에서 다루는 워크스페이스 단위. 함께 관리하는 서비스 컨테이너의 묶음. 프로젝트 단위로 기본 도커 네트워크가 생성 됨.

서비스 (Service)

도커 컴포즈에서 컨테이너를 관리하기 위한 단위.

scale을 통해 서비스 컨테이너의 수 확장 가능. 컨테이너 (Container)

서비스를 통해 컨테이너 관리.

컨테이너 (Container)

서비스를 통해 컨테이너 관리.

docker-compose.yml

  • version, services, networks, volumes 총 4개의 최상위 옵션 버전 (version)
  • 가능한 최신 버전 사용 권장
    도커 엔진 및 도커 컴포즈 버전에 따른 호환성 매트릭스 참조할 것
  • 버전 3부터 Docker Swarm과 호환
    -> Swarm 서비스를 docker-compose.yml로 정의 가능

도커 스왐 (Docker Swarm)

  • 여러 서버를 기반으로 스왐 클러스터를 형성하여 컨테이너를 관리하는 컨테이너 오케스트레이션 시스템
  • 쿠버네티스와 동일 목적으로 만들어졌지만 인기를 끌지 못함

docker-compose 명령어: 프로젝트 목록

# 실행중인 프로젝트 목록 확인

$ docker-compose ls

# 전체 프로젝트 목록 확인

$ docker-compose ls -a

 

docker-compose 명령어: 실행 및 종료

# Foreground로 도커 컴포즈 프로젝트 실행

$ docker-compose up

# Background로 도커 컴포즈 프로젝트 실행

$ docker-compose up -d

# 프로젝트 이름 my-project로 변경하여 도커 컴포즈 프로젝트 실행

$ docker-compose -p my-project up -d

# 프로젝트 내 컨테이너 및 네트워크 종료 및 제거

$ docker-compose down

#프로젝트 내 컨테이너,네트워크 및 볼륨 종료 및 제거

$ docker-compose down -v

docker-compose 명령어: 서비스 확장

# web 서비스를 3개로 확장

$ docker-compose up --scale web=3

 

 

프로젝트 내 서비스 로그 확인

$ docker-compose logs

프로젝트 내 컨테이너 이벤트 확인

$ docke-compose events

프로젝트 내 이미지 목록

$ docker-compose images

 

프로젝트 내 컨테이너 목록

$ docker-compose ps

프로젝트 내 실행중인 프로세스 목록

$ docker-compose top