← 아티클 목록

Docker Compose vs Swarm 차이 — 언제 무엇을 쓰나

2028-04-03#docker#compose#swarm

도커로 컨테이너 여러 개를 묶어 쓰기 시작하면 docker compose를 만나고, 조금 더 찾아보면 docker swarm이라는 단어도 나옵니다. 둘 다 "여러 컨테이너를 다룬다"는 점이 비슷해서 헷갈립니다. 핵심 차이는 한 줄로 정리됩니다. Compose는 한 대(호스트)에서 컨테이너 묶음을 정의·실행하는 도구, Swarm은 여러 대(노드)에 그 묶음을 분산 운영하는 오케스트레이터입니다.

한눈에 비교

항목Docker ComposeDocker Swarm
대상 범위단일 호스트여러 노드(클러스터)
주 용도로컬 개발·테스트운영 배포·확장
스케일링수동(--scale)선언적 replicas + 자동 재배치
장애 복구없음(재시작 정책 정도)노드 죽으면 다른 노드로 재스케줄
설정 파일compose.yaml거의 같은 형식 + deploy
비밀 관리환경변수 위주docker secret 지원

같은 compose.yaml을 양쪽이 거의 그대로 쓴다는 점이 둘을 더 헷갈리게 합니다. 차이는 "어디서, 몇 대에 걸쳐 실행되느냐"입니다.

Compose — 내 PC에서 묶음 띄우기

여러 서비스(앱 + DB 등)를 한 파일로 정의하고 한 명령으로 올립니다. 개발 환경 재현에 최적입니다.

Docker
docker compose up -d
docker compose ps
docker compose down

compose.yamlservices: 아래에 컨테이너들을 적으면 같은 호스트, 같은 네트워크에서 함께 뜹니다.

Swarm — 여러 대에 분산 운영

여러 서버를 하나의 클러스터로 묶고, 서비스를 노드들에 펼칩니다. 노드가 죽으면 다른 노드에서 다시 띄워 줍니다.

로컬 터미널
docker swarm init
docker stack deploy -c compose.yaml myapp
docker service scale myapp_web=5

deploy.replicas: 3 같은 선언을 넣으면 Swarm이 그 개수를 유지하려 애씁니다.

언제 무엇을 쓰나

  • 로컬 개발·CI 테스트: Compose. 한 대에서 묶음을 빠르게 띄우고 내리면 충분합니다.
  • 소규모 운영(몇 대 안 되는 서버, 단순 구성): Swarm이 가볍게 맞습니다.
  • 대규모·복잡한 운영(오토스케일, 다양한 배포 전략, 풍부한 생태계): 대부분 쿠버네티스로 갑니다. Swarm은 학습 비용이 낮은 대신 기능·생태계가 제한적입니다.

요점 정리

  • Compose = 단일 호스트 묶음 실행, Swarm = 다중 노드 분산 운영.
  • 설정 파일 형식은 거의 같고, Swarm은 deploy 키로 복제·배치를 더한다.
  • 개발은 Compose, 가벼운 운영은 Swarm, 본격 운영은 보통 쿠버네티스.

Compose로 멀티 컨테이너를 직접 띄워 보고 Swarm으로 확장하는 흐름을 실습하려면 도커 트랙에서 할 수 있습니다 — 회원가입 없이 무료로.