SW Engineering/DevOps, SRE

Docker Compose-여러개의 컨테이너를 설정하고 생성하기

SungWookKang 2019. 3. 27. 07:30
반응형

Docker Compose

-         여러개의 컨테이너를 설정하고 생성하기

 

·         Version : Docker

 

Docker compose 명령은 여러개의 컨테이너 옵션과 환경을 정의한 파일을 읽어 컨테이너를 순차적으로 생성한다. 도커 컴포즈의 설정 파일(docker-compose.yml) run 명령어 옵션을 그대로 사용할 있으며 컨테이너의 의존성, 네트워크, 볼륨, 컨테이너 등을 유동적으로 조절할 있다.  예를 들어 파이썬 프로그램이 구동되는 컨테이너와 데이터를 저장하는 redis 서버,  웹서버 컨테이너를 실행한다고 , 각각의 run 명령어 다양한 옵션으로 컨테이너를 생성하고 테스트하기에는 매우 번거롭다. 이때 도커 컴포즈를 활용하면 편리하다.

 

도커 컴포즈는 컨테이너 설정이 정의된 YAML 파일을 읽어 도커 엔진을 통해 컨테이너를 생성한다.


아래 스크립트는 docker-compose.yml 예제 스크립트이다. YAML 파일에서 들여쓰기 , 도커 컴포즈는 TAP 인식하지 못하기 때문에 2개의 공백(Space) 사용하여 하위 항목을 구분한다.

[docker-compose.yml]

version: "3"

services:

  web:

    # replace username/repo:tag with your name and image details

    image: username/repo:tag

    deploy:

      replicas: 5

      restart_policy:

        condition: on-failure

      resources:

        limits:

          cpus: "0.1"

          memory: 50M

    ports:

      - "80:80"

    networks:

      - webnet

  visualizer:

    image: dockersamples/visualizer:stable

    ports:

      - "8080:8080"

    volumes:

      - "/var/run/docker.sock:/var/run/docker.sock"

    deploy:

      placement:

        constraints: [node.role == manager]

    networks:

      - webnet

  redis:

    image: redis

    ports:

      - "6379:6379"

    volumes:

      - "/home/docker/data:/data"

    deploy:

      placement:

        constraints: [node.role == manager]

    command: redis-server --appendonly yes

    networks:

      - webnet

networks:

  webnet:

·         Version : YAML 파일 포맷 버전

·         Service : 생성될 컨테이너들을 묶어 놓는 단위. 서비스 항목 아래에 컨테이너에 적용될 옵션을 지정

·         Web, visualizer, redis : 생성될 서비스 이름. 항목 아래에 컨테이너가 생성될 필요한 옵션을 지정

·         image : 컨테이너를 생성할 사용될 이미지 이름

·         link : docker run --link 같으며 다른 서비스에서 서비스명만으로 접근할 있도록 설정

·         environment : docker run --env, -e 옵션과 동일. 컨테이너 내부에서 사용할 환경변수 지정

·         command : 컨테이너가 실행될 수행할 명령어를 설정.

·         ports : docker run -p 같으며 컨테이너를 개방할 포트를 설정.

·          

 

도커 컴포즈 관련 옵션은 매우 다양하게 지원되므로 자세한 내용은 공식 문서를 참고 있도록 한다.

·         Get Started with Docker Compose : https://docs.docker.com/compose/gettingstarted/

 

도커 컴포즈로 컨테이너를 생성하는 명령은 docker-compose up -d이다. 어떠한 설정도 하지 않으면 기본적으로 로컬 디렉터리의 docker-compose.yml 파일을 읽어 로컬의 도커 엔진에서 생성한다. 컨테이너 생성이 완료되면 docker ps에서 실행된 컨테이너를 확인할 있다.

docker-compose up -d

 

 

 

 

[참고자료]

·         Get Started with Docker Compose : https://docs.docker.com/compose/gettingstarted/

 

 

2019-02-17 / Sungwook Kang / http://sqlmvp.kr

 

Docker,  dockerfile, docker build, 도커 파일, 도커 이미지 생성, dockerfile reference, docker compose, 도커 컴포즈, 도커 컨테이너, docker container

반응형