Docker 명령어의 제어 단위가 Container 라면
Swarm mode의 제어 단위는 Service이다.
Service
서비스는 같은 이미지에서 생성된 컨테이너의 집합으로,
서비스를 제어하면 해당 서비스 내의 모든 컨테이너에 같은 명령이 실행된다.
서비스 내에 컨테이너는 한 개 이상 할당 될 수 있으며, 컨테이너들은 각 워커 노드와 매니저 노드에 할당된다.
각 노드에 할당된 컨테이너들을 Task 라고 부른다.
이제 서비스를 생성해보자.
docker service create ubuntu:18.04 bin/sh -c "while true; do echo hello world; sleep 1; done"
서비스를 자세히 조회해보면,
docker service ps unruffled_shannon
컨테이너가 할당 된 노드의 위치를 확인할 수 있다.
삭제하는 방법은 역시 rm을 이용한다.
서비스는 docker rm과 달리 서비스의 실행 상태 여부에 관계 없이 바로 삭제할 수 있다.
이번에는 nginx를 웹서버로 올린 서비스를 생성해보겠다.
참고로 서비스 모드에는 두 가지 모드가 있다.
1) replicated mode
replicated 모드는 레플리카셋의 수를 지정해 그 만큼의 동일한 컨테이너를 생성한다.
2) global mode
스웜 클러스터에서 사용할 수 있는 모든 노드에 컨테이너를 반드시 하나씩 생성한다.
레플리카 셋을 따로 지정하지는 않으며, 스웜 클러스터를 모니터링하기 위한 에이전트 컨테이너 등을 생성하기에 좋다.
docker service create --name myweb --replicas 2 -p 80:80 nginx
replica를 통해 두 개의 같은 컨테이너를 생성했음을 확인할 수 있다.
동일한 컨테이너를 생성했기 때문에 스웜 클러스터 내에 어떤 노드로 접근해도 서비스에 접근이 가능하며,
nginx가 없는 노드로 접근해도 서비스에 접근이 가능하다.
레플리카셋은 확장 또한 가능하다.
docker service scale myweb=4
scale을 통해 레플리카 수를 4개로 확장하였다.
global 모드로 서비스를 생성하는 것 또한 간단하다.
docker service create --name global_web --mode global nginx
각각의 노드에 하나씩 서비스가 생성된 것을 확인할 수 있다.
'Cloud Computing > Docker' 카테고리의 다른 글
Docker Swarm Network (0) | 2021.01.07 |
---|---|
Swarm mode의 서비스 장애 복구 (0) | 2021.01.06 |
Docker Swarm 구성 (0) | 2021.01.06 |
Docker Swarm Cluster를 구성하기에 앞서 (0) | 2021.01.06 |
Docker Compose 이용하기 (0) | 2021.01.05 |