Docker Compose & Stack

uuuu.jini·2022년 9월 15일
0

Kubernetes

목록 보기
3/14

Docker Compose


Docker Compose란, 여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리를 간단히 하는 기능이다. Docker compose에서는 compose 파일을 준비하여 커맨드를 1회 실행하는 것으로, 그 파일로부터 설정을 읽어들여 모든 컨테이너 서비스를 실행시키는 것이 가능하다.

Docker Compose 사용 주요 단계

  • 각각 컨테이너의 Dockerfile을 작성한다.(기존 이미지 사용시 불필요)
  • docker-compose.yml을 작성하고, 각각 독립된 컨테이너의 실행 정의를 실시한다.(경우에 따라 구축 정의도 포함)
  • docker-compose up 커맨드를 실행하여 docker-compose.yml으로 정의한 컨테이너를 개시한다.

Docker compose는 start, stop, status, 실행 중의 컨테이너의 로그 출력, 약간의 커맨드의 실행과 같은 기능도 가지고 있다.

docker-compose.yml 파일?

docker-compose.yml 파일은 아래와 같이 yaml으로 Docker 컨테이너에 관한 실행 옵션(build 옵션도 포함이 된 경우도 있다.)을 기재한 파일이다.

web:
	build:	.
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    links:
    - redis
redis:
	image: redis

이 파일에 기재되어 있는 내용은 기본적으로 docker build, docker run 커맨드 지정하는 것이 가능한 옵션이 되지만, Docker Compose의 yml 파일로써 기술하는 것으로 여러 개의 컨테이너로 부터 만들어진 서비스를 조감하여 보는 것도 가능해진다.

Docker Stack


Docker Stack이란?

Docker Compose가 여러 개의 컨테이너로 구성된 애플리케이션을 관리하기 위한 도구라면, Docker Stack은 여러 개의 서비스로 구성된 어플리케이션을 관리하기 위한 도구이다. 서비스를 관리하기 때문에 Docker Stack은 Swarm mode에서만 사용이 가능하다.

Docker Stack의 구조는 Docker Compose와 비슷하지만 지원하는 옵션이나 내부 로직에서 차이가 있다. Docker Compose는 기본 네트워크가 브릿지 네트워크로 생성되지만 Docker Stack은 Overlay 네트워크가 생성된다. 또한 links, devices, privileged 등등 Docker Compose에서는 지원하는 옵션들이 Docker Stack에서는 지원하지 않는다.

서비스 배포

docker stack deploy -c <yaml-file> <stack-name>

Docker Compose Vs. Stack


두 가지는 다르다. docker-compose는 container를 정의하는 것이고, docker-stack은 service를 정의한 것이다.

docker-compose는 컨테이너를 정의하는 것이기 때문에, docker-compose 명령이 실행되는 순간에만 컨테이너의 상태가 올바른지 확인 후, 컨테이너가 켜져 있지 않으면 컨테이너를 실행시키고 docker-compose의 몫은 끝난다. docker-compose는 상태를 지속적으로 모니터링 하지 않기 때문에 만약 컨테이너가 5분안에 예기치 않게 종료 되면, composer는 컨테이너를 다시 시작하지 못한다.

하지만 docker stack은 docker 엔진의 원하는 서비스 상태를 항상 알 수 있으며, 그렇기 때문에 엔진이 원하는 서비스 상태와 지금 서비스 상태가 다르다면 조치도 가능하다.

예로 컨테이너가 죽으면 다른 컨테이너를 호출 하거나, 전체 노드에서 컨테이너를 몇개 가져가면 엔진을 감지하여 컨테이너를 정상적인 노드로 다시 가져올 수 있다. 즉, docker stack은 docker-compose에서 지원하지 않는 모니터링과 그에 따른 조치 기능을 제공하는 것이 큰 차이점이다.

profile
멋쟁이 토마토

0개의 댓글