클라우드 인프라를 운영할 때 서비스 중단 없이 애플리케이션을 업데이트하는 기술이 필요하다.
도커 스웜은 이를 위해 롤링 업데이트(Rolling Update) 기능을 제공한다.
또한 문제가 발생했을 때 이전 상태로 되돌리는 롤백(RollBack) 기능도 지원한다.
MariaDB 서비스를 예시로 롤링 업데이트와 롤백 기능의 동작 원리를 살펴보자.
1. 롤링 업데이트(Rolling Update)란?
롤링 업데이트는 서비스의 전체 컨테이너를 한꺼번에 교체하는 것이 아니라, 일정 수(Parallelism)의 컨테이너를 순차적으로 업데이트하는 방식이다.
이 방식을 통해 업데이트 도중에도 서비스는 항상 일정 수 이상의 가동 중인 컨테이너를 유지할 수 있어 무중단 배포(Zero-downtime Deployment)가 가능해진다.

- 롤아웃(RollOut): 기존 버전의 이미지를 새로운 버전으로 교체하여 배포하는 과정.
- 롤백(RollBack): 업데이트 이후 예상치 못한 오류가 발생했을 때, 즉시 이전의 버전으로 되돌리는 과정.
2. 구현 단계 및 명령어 분석
1️⃣ 이미지 준비 (Pre-fetching)
업데이트에 사용할 서로 다른 버전의 이미지를 로컬 저장소에 미리 확보한다.
docker pull mariadb:10.11
docker pull mariadb:11.4
각 노드가 업데이트 시점에 이미지를 다운로드하느라 지연되는 것을 방지하기 위해 미리 pull을 수행한다.
2️⃣ 초기 서비스 생성 및 배포
복제 모드(Replicated Mode)를 사용하여 4개의 컨테이너를 가진 서비스를 생성한다.
docker service create --name mariadb1 --with-registry-auth --replicas 4 -e MARIADB_ROOT_PASSWORD=rootoor mariadb:10.11
- --replicas 4: 서비스의 가용성을 위해 4개의 컨테이너(Task)를 유지한다.
- --with-registry-auth: 스웜 노드들이 이미지 레지스트리 인증 정보를 공유하도록 한다.
상태 확인:
docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
9k787soeynjy mariadb1 replicated 4/4 mariadb:10.11
docker service ps mariadb1
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
yx6m03p0heai mariadb1.1 mariadb:10.11 slave1 Running Running 2 minutes ago
yorlmngu296q mariadb1.2 mariadb:10.11 master Running Running 2 minutes ago
b5cc8jdijztv mariadb1.3 mariadb:10.11 slave2 Running Running 2 minutes ago
lvky0a6yebl4 mariadb1.4 mariadb:10.11 slave2 Running Running 2 minutes ago
docker service ps를 통해 4개의 태스크가 master, slave1, slave2 등 여러 노드에 분산 배치된 것을 확인할 수 있다.
3️⃣ 롤아웃(RollOut) 실행
운영 중인 서비스의 이미지를 mariadb:10.11에서 mariadb:11.4로 업데이트한다.
docker service update --image mariadb:11.4 mariadb1
- 스웜 매니저는 설정된 업데이트 정책(Parallelism, Update Order)에 따라 순차적으로 컨테이너를 중지하고 새 버전으로 교체한다.
- 업데이트 설정 확인: docker service inspect --pretty mariadb1 명령어로 확인하면 기본적으로 Parallelism: 1(한 번에 하나씩), Update order: stop-first(이전 것 중단 후 새 것 실행) 설정이 적용되어 있음을 알 수 있다.

4️⃣ 롤백(RollBack) 실행
업데이트 된 버전에서 문제가 발견되었다고 가정하고 이전 상태(10.11 버전)로 복구해보자.
docker service rollback mariadb1
서비스의 ContainerSpec 기록을 바탕으로 직전의 설정으로 되돌린다.
이 과정 역시 롤링 업데이트와 동일한 메커니즘으로 순차 진행된다.
다시 docker service inspect --pretty mariadb1 명령어로 인스펙트를 해보면,

'AI Journey > 클라우드' 카테고리의 다른 글
| [Docker Swarm] 도커 스택(Stack)을 배포해보자 (0) | 2026.01.16 |
|---|---|
| [Docker Swarm] 데이터 관리: 시크릿(secret)과 컨피그(config) (0) | 2026.01.16 |
| [Docker Swarm] 컨테이너 및 노드 장애 복구 메커니즘 (0) | 2026.01.15 |
| [Docker Swarm] 서비스와 레플리카, 스케일링 및 글로벌 모드 이해하기 (0) | 2026.01.14 |
| [Docker Swarm] 도커 스웜으로 만드는 컨테이너 클러스터 (0) | 2026.01.14 |