본문 바로가기
AI Journey/클라우드

[Docker Swarm] Rolling Update - 서비스 업데이트와 복구

by 보눔비스타 2026. 1. 15.

클라우드 인프라를 운영할 때 서비스 중단 없이 애플리케이션을 업데이트하는 기술이 필요하다.

도커 스웜은 이를 위해 롤링 업데이트(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 명령어로 인스펙트를 해보면,