Swarm은 무리, 군중이라는 의미를 가지고 있습니다. Docker Swarm은 여러 컨테이너를 클러스터로 만들어 관리해줍니다.
Docker개발자들이 Swarm을 개발하였기 때문에 이미 Docker 핵심 기능으로 포함되어있습니다. 따라서, Docker를 사용한 orchestration infra를 구축할 때 가장 호환성이 좋습니다.
Node
클러스터에 속한 도커 서버 단위입니다. 보통 한 서버에 하나의 도커 데몬을 실행하기 때문에 노드는 곧 서버라고 이해할 수 있습니다. 1 Node = 1 server
Manager
매니저는 클러스터의 상태를 관리합니다. 명령어는 매니저 노드에서만 실행할 수 있습니다. 아키텍쳐상에서 매니저는 High Availability를 위하여 여러대 실행되어야 합니다. 일반적으로 노드마다 매니저가 배포됩니다.
Worker
매니저의 명령을 받아 컨테이너를 생성하고 상태를 체크합니다.
서비스 규모에 맞게 많이 실행하고, 요청이 많아 지면 Worker를 스케일아웃 합니다.
Service Discovery
서비스 디스커버리는 컨테이너가 실행 위치와 상태를 제공해줍니다. 이를 위하여 자체 DNS 서버
를 가지고 있습니다. 컨테이너를 생성하면 서비스명과 동일한 도메인을 등록하고, 반대로 멈추면 도메인을 제거합니다.Consul
, etcd
, zookeeper
와 같은 외부 서비스를 사용하지 않아도 되고, Swarm이 내부에서 자체적으로 처리해줍니다. OpenStack의 Keystone과 AWS의 IAM과 비교할 수 있습니다.
Service
기본적인 배포 단위 입니다. 하나의 서비스는 하나의 이미지를 기반으로 생성하고 동일한 컨테이너를 한개 이상 실행할 수 있습니다. 최종적으로 배포되는 서비스는 여러 개의 task로 구성됩니다.
Task
컨테이너 배포 단위 입니다. 각각의 테스크가 컨테이너를 관리합니다. 보통 개별 도커 컨테이너를 의미하지만, 컨테이너를 실행할 때 명령어도 포함합니다
참고
- loomsystems
- subicura
- 최종 배포되는 서비스는 여러 개의 task로 구성됩니다.
- Task
- 컨테이너 배포 단위 입니다. 각각의 테스크가 컨테이너를 관리합니다.
- 보통 개별 도커 컨테이너를 의미하지만, 컨테이너를 실행할 때 명령어도 포함합니다.