본문 바로가기
Framework and Tool/Docker

Docker compose - Overview and Feature

by ocwokocw 2023. 10. 12.

- 출처: https://docs.docker.com/compose/

- 출처: https://docs.docker.com/compose/features-uses/

 

Docker Compose overview

Learn how to use Docker Compose to define and run multi-container applications with this detailed introduction to the tool.

docs.docker.com

- Overview

Compose는 multi container Docker application을 저의하고 실행하기 위한 도구이다. YAML file을 이용하여 application service를 설정한다. 그리고 단일 명령어로 설정한 모든 service를 실행하고 생성할 수 있다.

 

Compose는 production, staging, development, CI workflows 와 같은 모든 환경에서 동작한다. 단순히 container를 수행하는것 외에도 application의 생명주기를 관리할 수 있는 command도 지원한다.

  • Start, stop, service rebuild
  • 실행중인 service 상태 확인
  • 실행중인 service의 log 출력
  • service에서 일회성 명령 실행

 

- Docker compose essential

Compose는 3단계의 과정을 거친다.

  • Dockerfile 정의
  • 격리된 환경에서 함께 동작할 수 있도록 compose.yaml 파일 내에 app을 구성하는 service 들을 정의
  • "docker compose up" 을 실행하여 전체 app 실행

compose.yaml은 아래와 같은 형태를 갖는다.

services:
  web:
    build: .
    ports:
      - "8000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    depends_on:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

- Key features

- 단일 host에서 여러 개의 격리된 환경 제공

Compose는 서로 환경을 격리하기 위해 project 명을 사용한다. 이 project 명은 context에 따라 다르게 사용될 수 있다.

  • dev host: 단일 환경에서 여러 개의 복사본 생성 (ex - project의 각 feature branch에 대한 안정적으로 복사본을 실행하고 싶을 때)
  • CI server: 서로 build시 간섭 없는 환경을 위해 project 명을 build number로 활용
  • shared host 또는 dev host: 다른 project에서 같은 service 명을 사용할 수 있으므로 이를 방지하기 위해

기본적으로 project 명은 project 폴더 이름을 기본값으로 갖는다. 물론 -p 나 COMPOSE_PROJECT_NAME 환경 변수로 커스터마이징 가능하다. 여기서 "project 폴더"란 기본적으로 compose file이 위치한 폴더를 말한다. 이 역시 --project-directory 명령 옵션을 통해 커스터마이징 가능하다.

 

- container 생성시 volume 데이터 보존

Compose는 service에 사용된 모든 volume을 보존한다. docker compose up을 실행할 때 만약 이전에 실행한 container가 있다면 기존 container로 부터 신규 container로 volume을 복사한다.

 

- 필요시에만 container 재생성(cache)

Copose는 container 생서이 필요한 환경을 caching한다. 변경사항이 없는 service를 재시작하면 Compose는 기존 container를 재활용한다.

 

- 변수 지원과 환경간의 composition 이동 지원

Compose는 Compose file 내에서 변수를 지원한다. 이런 변수는 다른 환경이나 다른 user 에서 composition을 커스텀화하기 위해 사용된다.

 

'Framework and Tool > Docker' 카테고리의 다른 글

Docker compose - Tutorials  (0) 2023.10.12
Swarm - routing mesh  (1) 2023.10.08
Swarm - drain node  (0) 2023.10.02
Swarm - Rolling update  (0) 2023.10.02
Swarm mode tutorial  (0) 2023.10.02

댓글