소개
Docker Swarm 은 개발자가 여러 Docker 호스트를 통합되고 확장 가능한 인프라로 변환할 수 있는 강력한 컨테이너 오케스트레이션 솔루션입니다. 이 포괄적인 튜토리얼은 Docker Swarm 클러스터를 생성, 구성 및 관리하는 데 대한 심층적인 통찰력을 제공하며, 필수 개념, 노드 유형, 서비스 배포 전략 및 강력한 컨테이너화된 환경 구축을 위한 최상의 관행을 다룹니다.
Docker Swarm 은 개발자가 여러 Docker 호스트를 통합되고 확장 가능한 인프라로 변환할 수 있는 강력한 컨테이너 오케스트레이션 솔루션입니다. 이 포괄적인 튜토리얼은 Docker Swarm 클러스터를 생성, 구성 및 관리하는 데 대한 심층적인 통찰력을 제공하며, 필수 개념, 노드 유형, 서비스 배포 전략 및 강력한 컨테이너화된 환경 구축을 위한 최상의 관행을 다룹니다.
Docker Swarm 은 Docker 환경을 위한 네이티브 클러스터링 및 컨테이너 오케스트레이션 솔루션입니다. 개발자는 Docker 노드 클러스터를 생성 및 관리하여 여러 Docker 호스트를 하나의 가상 Docker 호스트로 변환할 수 있습니다.
| 노드 유형 | 설명 | 책임 |
|---|---|---|
| 매니저 노드 | 클러스터 상태를 제어 | 오케스트레이션, 스케줄링 |
| 워커 노드 | 컨테이너 작업을 실행 | 서비스 실행 |
## 기본 노드에서 Swarm 초기화
docker swarm init --advertise-addr 192.168.1.100
## 워커 노드 가입 토큰 생성
docker swarm join-token worker
## 워커 노드를 클러스터에 가입
docker swarm join --token < 토큰 > 192.168.1.100:2377
## 복제된 서비스 생성
docker service create --replicas 3 --name web nginx
## 서비스 확장
docker service scale web=5
## 서비스 업데이트
docker service update --image nginx:latest web
## 기본 매니저에서 Swarm 클러스터 초기화
docker swarm init --advertise-addr 192.168.1.100
## 클러스터 가입 토큰 보기
docker swarm join-token manager
docker swarm join-token worker
## 워커 노드를 클러스터에 가입
docker swarm join \
--token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
192.168.1.100:2377
| 매개변수 | 설명 | 기본값 |
|---|---|---|
| Advertise Address | 노드의 네트워크 인터페이스 | 기본 IP |
| Listen Port | Swarm 통신 포트 | 2377 |
| Node Labels | 노드 선택을 위한 메타데이터 | 없음 |
## 사용자 정의 노드 레이블 추가
docker node update --label-add type=frontend worker1
## 노드 가용성 설정
docker node update --availability drain worker2
## 오버레이 네트워크 생성
docker network create \
--driver overlay \
--subnet 10.0.0.0/24 \
my-network
## 3개의 복제본으로 nginx 서비스 배포
docker service create \
--name web-service \
--replicas 3 \
--publish 80:80 \
nginx:latest
| 옵션 | 설명 | 예시 |
|---|---|---|
| --replicas | 컨테이너 인스턴스 수 | 3 |
| --update-parallelism | 동시 업데이트 수 | 2 |
| --constraint | 노드 배치 규칙 | node.labels.type==frontend |
## 동적으로 서비스 확장
docker service scale web-service=5
## 수평 확장
docker service update \
--replicas-max-per-node 2 \
web-service
## 사용자 지정 로드 밸런싱으로 서비스 생성
docker service create \
--name api-service \
--replicas 4 \
--publish mode=host,target=8080,published=80 \
--update-delay 10s \
api-image:latest
## 롤링 업데이트 전략
docker service update \
--image nginx:latest \
--update-parallelism 2 \
--update-delay 10s \
web-service
## 활성 서비스 목록
docker service ls
## 특정 서비스 검사
docker service ps web-service
Docker Swarm 을 마스터함으로써 개발자 및 시스템 관리자는 분산 시스템에서 컨테이너화된 애플리케이션을 효과적으로 관리할 수 있습니다. 이 튜토리얼은 클러스터 초기화, 노드 토폴로지 구성, 서비스 배포, 서비스 디스커버리, 로드 밸런싱 및 안전한 통신과 같은 고급 기능 활용을 위한 주요 기술을 보여줍니다. 이러한 기본 원리를 이해하면 팀은 확장 가능하고 강력한 컨테이너 인프라를 향상된 운영 효율성으로 구축할 수 있습니다.