본문 바로가기

Study/도커씨와쿠버씨

Docker Compose vs Docker Swarm

Docker Compose vs Docker Swarm

도커 컴포즈와 도커 스웜의 차이점?

 

요약

Docker Compose는 단일 노드에서 애플리케이션을 실행하고 Docker Swarm은 둘 이상의 서버로 확장이 가능함

Docker Compose는 단일 노드에서 실행되기 때문에  애플리케이션을 계속 확장해 나가도 단일 노드에서 실행되지만,

Docker Swarm을 사용하면 고가용성 및 내결함성이란 장점을 가지고 애플리케이션을 빠르게 확장할 수 있음


Docker-compose?

  • 컨테이너 그룹 구성 및 관리하는 명령어 or 복수 개의 컨테이너를 실행시키는 도커 애플리케이션을 정의하기 위한 도구
  • YAML 파일에 애플리케이션 서비스를 정의함. 복수 개 컨테이너에 대한 정의 파일

왜 docker-compose를 써야함?

  • 만약 사용을 하지 않고 실행하길 원하는 컴포넌트가 10개 있다고 가정하면,
    아마도 docker run.. 을 10번 입력하는 자신을 보게 될 것임

Docker-Swarm?

  • 오케스트레이션 툴(like 쿠버네티스) 
  • 여러 호스트 서버 컨테이너들을 배포 및 관리하기 위한 도구
  • Docker Swarm에는 2 종류(Swarm Classic, Swarm Mode)가 있는데  Swarm Mode가 더 자주 사용된다고 함

Stack(스택)?

  • Swarm 내의 하나 이상의 서비스로 구성된 다중 컨테이너 애플리케이션
  • Docker Compose와 동일하게 YAML 파일을 사용해 정의할 수 있음

Service(서비스)?

  • 도커의 기본 배포 단위가 컨테이너라면, 도커 스웜의 기본 배포 단위는 서비스임
  • docker run 명령은 독립 실행형 컨테이너를 생성하고 service create는 노드의 클러스터(swarm)에서 실행되는 해당 서비스의 인스턴스(task)를 생성함
  • 동일한 이미지 기반으로 생성된 컨테이너 집합

동일한 이미지 기반?

  • 예를 들어 보스 몬스터를 때려 잡기 위해 야구 방망이 Image로 야구 방망이(컨테이너)를 10개로 확장해서 매우 빠르게 잡고 다시 일반몬스터를 잡을 때 2개로 축소해서 사용할 수 있음
  • 여기서 야구 방망이는 동일한 이미지를 사용해 생성되었고 여러 개의 방망이(컨테이너)의 집합을 관리하는 도구가 docker service임

Docker Stack vs Docker Service(스택과 서비스 차이점)

  • Stack은 여러 개의 서비스로 구성된 애플리케이션을 관리하기 위한 도구, 즉 상호 연결된 일련의 서비스를 단일 단위로 배포하고 관리하는 데 사용
  • 반면에 Service는 클러스터(Swarm) 내에서 컨테이너화된 단일 애플리케이션을 정의하고 관리하는 데 사용

Docker Compose vs Docker Stack?

  • Compose는 기본 네트워크로 브리지 네트워크(bridge network) 사용
  • Stack은 기본 네트워크로 오버레이 네트워크(overlay network) 사용

Bridge network? Overlay Network?

브리지 네트워크는 도커의 기본 네트워크임

  • 본인 로컬 컴퓨터에서 컨테이너 여러 개 사용해도 같은 IP 쓰는 것을 본 적이 있을 것임
  • 컨테이너 여러 개 써도 결국 내 로컬 IP 쓰던데?라고 의문점을 가졌다면 -> 결국에 브리지 네트워크란 NAT을 통해 호스트가 연결된 물리적 네트워크로 모든 컨테이너가 이 네트워크에 물려있음

오버레이 네트워크

  • Swarm을 쓴다는 건 노드가 여러 개 -> 그럼 각각의 호스트끼리 통신을 해야 함
  • 그때 사용하는 것이 Overlay Network임