Docker Compose 개요

Docker Compose 개요

Compose는 다중 컨테이너 Docker 응용 프로그램을 정의하고 실행하기위한 도구입니다.
Compose를 사용하면 YAML 파일을 사용하여 응용 프로그램의 서비스를 구성 할 수 있습니다.
그런 다음 단일 명령으로 구성에서 모든 서비스를 작성하고 시작하십시오.
Compose의 모든 기능에 대한 자세한 내용은 기능 목록을 참조하십시오 .

Compose는 모든 환경 (production, staging, development, testing, as well as CI workflows)에서 작동합니다.
일반적인 사용 사례 에서 각 사례에 대해 자세히 알아볼 수 있습니다 .

작성 사용은 기본적으로 3 단계 프로세스입니다.

  1. Dockerfile 어디에서나 재생산 할 수 있도록 앱의 환경을 정의하십시오.

  2. docker-compose.yml 격리 된 환경에서 함께 실행할 수 있도록 앱을 구성하는 서비스를 정의 합니다.

  3. docker-compose up 명령을 실행하면 전체 앱을 시작하고 실행합니다.

docker-compose.yml 파일 양식은 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}

위에 yml 파일에 자세한 작성 방식은 compose-file 링크에서 볼수 있다.

Compose 에는 응용 프로그램의 전체 라이프 사이클을 관리하는 명령이 있습니다.

  • 서비스 시작, 중지 및 rebuild
  • 실행중인 서비스의 상태보기
  • 실행중인 서비스의 로그 출력 스트리밍
  • 서비스에서 일회용 명령 실행

Features

  • 단일 호스트상의 여러 격리 된 환경
  • 컨테이너 작성시 볼륨 데이터 보존
  • 변경된 컨테이너만 다시 작성하십시오.
  • 변수와 환경간에 컴포지션 이동

단일 호스트상의 여러 격리 된 환경

Compose는 프로젝트 이름을 사용하여 서로 환경을 격리합니다.
여러 다른 상황에서 이 프로젝트 이름을 사용할 수 있습니다.

  • dev 호스트에서 프로젝트의 각 지형지 물에 대해 안정적인 복사본을 실행하려는 경우와 같이 단일 환경의 여러 복사본을 만들 수 있습니다
  • CI 서버에서 빌드가 서로 간섭하지 않도록하려면 프로젝트 이름을 고유 한 빌드 번호로 설정할 수 있습니다
  • 공유 호스트 또는 dev 호스트에서 서로 다른 프로젝트가 서로 간섭하지 않도록 동일한 서비스 이름을 사용할 수 있다

기본 프로젝트 이름은 프로젝트 디렉토리의 기본 이름입니다.
-p 명령 행 옵션 또는 COMPOSE_PROJECT_NAME 환경 변수를 사용하여 사용자 정의 프로젝트 이름을 설정할 수 있습니다 .

컨테이너 작성시 볼륨 데이터 보존

Compose는 서비스에서 사용하는 모든 볼륨을 보존합니다.
docker-compose up 실행될 때 이전 실행에서 컨테이너를 찾으면 볼륨을 이전 컨테이너에서 새 컨테이너로 복사합니다.
이 프로세스는 볼륨에서 작성한 모든 데이터가 손실되지 않도록합니다.

당신이 Windows 시스템에서 docker-compose 사용하는 경우 환경 변수 및 사용자의 특정 요구에 필요한 환경 변수를 조정이 필요하다.

변경된 컨테이너 만 다시 작성하십시오.

컨테이너 작성에 사용 된 구성을 작성하십시오.
변경되지 않은 서비스를 다시 시작하면 Compose는 기존 컨테이너를 다시 사용합니다.
컨테이너를 다시 사용한다는 것은 환경을 매우 빠르게 변경할 수 있음을 의미합니다.

변수와 환경간에 컴포지션 이동

Compose는 Compose 파일의 변수를 지원합니다.
이 변수를 사용하여 서로 다른 환경 또는 다른 사용자에 맞게 구성을 사용자 정의 할 수 있습니다.
자세한 내용은 변수 대체 를 참조하십시오.

extends필드를 사용하거나 여러 Compose 파일을 작성 하여 작성 파일을 확장 할 수 있습니다.
자세한 내용 은 extend 를 참조하십시오.

일반적인 사용 사례

작성은 여러 가지 다른 방법으로 사용될 수 있습니다. 몇 가지 일반적인 사용 사례가 아래에 요약되어 있습니다.

개발 환경

소프트웨어를 개발할 때는 격리 된 환경에서 응용 프로그램을 실행하고 응용 프로그램과 상호 작용하는 기능이 중요합니다.
작성 명령 행 도구를 사용하여 환경을 작성하고 환경과 상호 작용할 수 있습니다.

작성 파일은 문서 및 응용 프로그램의 서비스 종속성의 모든 (데이터베이스, 큐, 캐시, 웹 서비스 API 등)을 구성 할 수있는 방법을 제공합니다.
작성 명령 행 도구를 사용하여 단일 명령 ( docker-compose up)으로 각 종속성에 대해 하나 이상의 컨테이너를 작성하고 시작할 수 있습니다 .

이러한 기능을 함께 사용하면 개발자가 프로젝트를 시작할 수있는 편리한 방법을 제공합니다.
작성은 여러 페이지의 “개발자 시작 안내서”를 단일 기계 판독 가능 파일 작성 및 몇 가지 명령으로 줄일 수 있습니다.

자동화 된 테스트 환경

Continuous Deployment 또는 Continuous Integration 프로세스의 중요한 부분은 자동화 된 테스트 스위트입니다.
자동화 된 엔드 투 엔드 테스트에는 테스트를 실행하는 환경이 필요합니다.
Compose는 테스트 스위트에 대해 격리 된 테스트 환경을 만들고 파괴하는 편리한 방법을 제공합니다.
Compose 파일 에 전체 환경을 정의하면 몇 가지 명령으로 이러한 환경을 만들고 파괴 할 수 있습니다.

1
2
3
4
5

$ docker-compose up -d
$ ./run_tests
$ docker-compose down

단일 호스트 배포

Compose는 전통적으로 개발 및 테스트 워크 플로에 주력해 왔지만, 출시 할 때마다 더 많은 생산 지향 기능을 개발하고 있습니다.
Compose를 사용하여 원격 Docker Engine에 배포 할 수 있습니다.
Docker Engine은 Docker Machine 또는 전체 Docker Swarm 클러스터로 프로비저닝 된 단일 인스턴스 일 수 있습니다 .

제작 지향 기능 사용에 대한 자세한 내용 은이 설명서의 제작 환경 에서 작성을 참조하십시오 .

참조