Docker Compose-여러개의 컨테이너를 설정하고 생성하기
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