1. 정의

도커 스웜은 도커에서 만든 컨테이너 오케스트레이션 툴이다. 여러 도커 호스트를 하나의 클러스터로 묶어 단일 시스템처럼 관리할 수 있게 해준다. 도커 CLI와 도커 API를 그대로 활용할 수 있어 도커 환경에 익숙한 사용자에게 특히 유리하며, 도커 엔진에 기본적으로 내장되어 있어 간단하게 활성화 및 사용이 가능하다.
2. 도커 스웜이 필요한 이유
운영 중인 서비스의 규모가 커져 서버 자원이 부족할 때, 여러 서버를 하나의 클러스터로 묶어 자원을 병렬로 확장하도록 도와주는 역할을 한다. 즉, 서로 다른 호스트의 여러 컨테이너를 하나로 묶어 마치 하나의 호스트처럼 사용할 수 있도록 한다.
클러스터 : 공통의 목표를 위해 작동하는 컴퓨터 또는 애플리케이션들의 그룹
3. 도커 스웜의 종류

(1) 스웜 클래식
- 특징 : 도커 스웜의 초기 버전으로, 여러 도커 서버를 단일 접근점에서 제어할 수 있도록 설계되었다.
- 제약 : 별도의 분산 코디네이터와 에이전트를 설치 및 관리해야 하며, 복잡한 설정이 요구된다.
- 사용 사례 : 초기 테스트 환경 또는 단순한 클러스터 관리에 적합하다.
(2) 스웜 모드
- 특징 : 도커 엔진에 내장된 최신 클러스터링 및 오케스트레이션 기능으로, 도커 CLI만으로 클러스터를 쉽게 설정할 수 있다.
- 장점 : 내장 로드 밸런싱 및 오토 스케일링 기능을 제공하며, 별도의 외부 도구 없이 클러스터를 구축할 수 있다.
- 사용 사례 : 마이크로서비스 아키텍처를 기반으로 한 복잡한 애플리케이션 관리에 적합하다.
4. 도커 스웜의 구성

분류 | 설명 |
분산 코디네이터 | 여러 개의 도커 서버를 하나의 클러스터로 구성하기 위해 각종 정보를 저장 및 동기화 |
에이전트 | 각 서버를 제어함 |
매니저 노드 | - 클러스터 내의 워커 노드를 관리 - 무조건 1개 이상 존재해야 함 - 워커 노드의 역할을 포함하고 있음 |
워커 노드 | 컨테이너가 생성되고 관리되는 실제 도커 서버 |
5. 도커 스웜이 사용하는 포트
- 2377/TCP - 클러스터 관리 포트
- 7946/TCP|UDP - 노드 간 통신 포트
- 4789/UDP - 클러스터에서 사용되는 Ingress 오버레이 네트워크 트래픽 포트

6. 도커 스웜의 주요 기능
(1) 서비스 관리
도커 스웜은 서비스를 단일 또는 다중 컨테이너로 구성할 수 있으며, 이를 클러스터의 여러 노드에 걸쳐 배포하고 관리할 수 있다.
(2) 부하 분산
클러스터에 속한 워커 노드로 트래픽을 자동으로 분배하며, 각 노드의 과부하를 방지한다.
(3) 셀프 힐링(Self-healing)
장애가 발생한 컨테이너를 자동으로 재배치하거나 재시작하여 서비스 중단을 최소화한다.
(4) 롤링 업데이트(Rolling Update)
서비스의 새로운 버전을 점진적으로 배포하여, 배포 중 발생할 수 있는 문제를 최소화한다.
참고자료
https://jojaeng2.tistory.com/46
[Docker] Docker Swarm Cluster 생성
Docker Swarm을 사용하는 이유 일반적인 도커 사용법은 대부분 하나의 호스트를 기준으로 한다. 예를 들어 docker ps 명령어는 하나의 도커 엔진에 존재하는 컨테이너의 목록을 출력하며 create, run 명
jojaeng2.tistory.com
https://golf-dev.tistory.com/56
[Docker 4주차] Docker Swarm
도커 스웜을 사용하는 이유 보통 현업에서는 지금까지 한 것 처럼 호스트 하나로만 이루어져 있지 않습니다. 이유는 간단합니다. CPU나 메모리, 디스크 용량같이 자원이 부족한 경우에 스케일 아
golf-dev.tistory.com
https://devinn.dev/blog/detail/216
Blog | Dev.Inn | 컨테이너 오케스트레이션 비교 : Kubernetes VS Docker Swarm
대표적인 컨테이너 오케스트레이터인 Kubernetes와 Docker Swarm에 대해 알아봅니다 :)
devinn.dev
'Backend > Infra' 카테고리의 다른 글
[Infra] 컨테이너 오케스트레이션 (0) | 2025.01.07 |
---|---|
[Infra] Docker란?(feat. Docker, Docker File, Docker Compose) (0) | 2025.01.03 |
[Infra] 무중단 배포 적용하기(feat. Blud-Green Deployment) (1) | 2024.12.28 |
[Infra] 배포한 서버에 CI/CD 적용하기(feat. Jenkins) (0) | 2024.12.28 |
[Infra] WAS 서버를 배포하며 겪은 에러 해결 방법 (1) | 2024.12.28 |