▶︎ Docker Stack
Docker-Compose가 여러 개의 컨테이너로 구성된 애플리케이션을 관리하기 위한 도구라면,
Docker Stack
은 여러 개의 서비스로 구성된 애플리케이션을 관리하기 위한 도구이다.
서비스를 관리하기 때문에 Docker Stack
은 오직 Docker Swarm Mode에서만 사용할 수 있다.
docker stack의 구조는 Docker Compose와 비슷하지만 지원하는 옵션이나 내부 로직에서 차이점이 존재한다.
Docker Compose의 경우 기본 네트워크가 Bridge Network
로 생성되지만,
Docker Stack의 경우 Overlay
네트워크가 기본 네트워크로 생성된다.
또한 links
, container_name
, privileged
등 도커 컴포즈에서는 지원되던 속성들이
Docker Stack에서는 지원되지 않으므로 Docker stack에서 어떤 옵션을 지원하는지 잘 찾아봐야한다.
‣ 사용 방법
Docker Stack의 사용법은 매우 간단하다.
먼저 다음과 같이 Swarm Cluster를 구성해주자. (해당 실습에서는 매니저 노드 1개 - 워커노드 2개로 구성됨)
docker node ls
# output
dfdfgdfgdfgdfoorrewddsadf * master Ready Active Leader 20.10.13
gggorepvvbnmdsksdwqwerooq node1 Ready Active 20.10.13
dfoee34adfaffzdweeerrrwwg node 2 Ready Active 20.10.13
그리고 다음과 같이 YAML 파일로 서비스를 정의해주자.
services:
monitoring:
image: dockersamples/visualizer
ports:
- "4555:8080"
volumes:
- type: bind
source: /var/run/docker.sock
target: /var/run/docker.sock
deploy:
mode: global
placement:
constraints:
- node.role == manager
web:
image: xxxx/wtt-blog:1.05
ports:
- "3000:8888"
deploy:
mode: global
placement:
contraints:
- node.role == worker
워커 노드에는 django 기반의 WAS를 배포하고 매니저 노드에는 visualizer
를 배포해주도록 설정해주었다.
visualizer
는 swarm node에서 노드와 컨테이너의 분포 상태를 시각적으로 볼 수 있게 해주는 도구이다.
그 다음 docker stack deploy
명령어로 서비스를 배포해주자.
-c
옵션으로 배포할 서비스가 정의된 YAML 파일 지정이 가능하다.
docker stack deploy -c <yaml-file> <stack-name>
또한 docker stack ps
명령어로 스택이 관리하는 서비스의 상태 확인이 가능하다.
docker stack ps <stack-name>