Docker Compose VS Docker Swarm ??
docker compose
-> 동일 호스트에서 두 개 이상의 컨테이너를 운영
docker swarm
-> 여러 호스트에서 다수의 컨테이너들을 운영(orchestrate), 필요에 따라 컨테이너의 수를 늘이고 줄이는 auto-scaling 기능을 수행
구체적으로 docker swarm이 무슨 일을 하는 걸까?
-> 컨테이너들을 cluster하고 schedule하여 전체 컨테이너 클러스터를 하나의 가상 단일 컨테이너로 관리하고, 각 컨테이너의 상태를 모니터링하여 컨테이너 수를 각 호스트에서 늘리거나 줄이며(auto-scaling) 운영하는 도구
But, 지금은 docker swarm 보다는 구글의 쿠버네티스가 더 많이 쓰인다고 한다.
[ Swarm의 동작 방식 ]
docker swarm에는 Leader라고 불리는 호스트와 Worker라고 불리는 host가 존재하며, Learder와 Worker는 모두 독립적인 호스트 기계이다.
docker swarm 사용 시에는 먼저,
- Leader로 사용할 호스트를 공표(advertise)한다.
- 공표한 Leader host에 join할 worker host를 추가한다.
auto-scaling 예시
ex)
15개의 컨테이너를 4개의 인스턴스에 나눠서 서비스 하는 경우 => 각각의 인스턴스마다 컨테이너를 4, 4, 4, 3개로 나눠준다.
if 인스턴스 하나가 다운될 경우 Leader host가 컨테이너를 5, 5, 5개로 재분배
[ Docker Swarm 실습 커맨드 ]
*swarm cluster 생성
docker swarm init --advertise-addr=<IP주소>
-> swarm cluster의 Leader가 될 노드 를 advertise(공표)
Leader advertise가 정상적으로 이루어지면 docker swarm join~~~ 으로 시작하는 명령어가 나오는데, 이 명령어를 복사해서 Worker 노드로 사용할 노드에 입력해준다.
-> Leader에서 사용할 것과 동일한 컨테이너 이미지가 Worker에서도 준비되어 있어야 하지만, Docker Hub에서 Dockerfile을 pull하여 run 하는 경우는 필요 없음.
*docker swarm을 사용한 서비스 배포
docker service create --name <제공할서비스이름> --replicas <컨테이너복제할개수> -p <포트맵핑> <이미지이름>
-> 여러 컨테이너 실행중일때 컨테이너를 제거하면 제거된 컨테이너 개수만큼 다시 새로운 컨테이너를 생성함 (auto-scaling)
swarm cluster에서 빠져나오기
docker swarm leave (Worker의 경우)
docker swarm leave --force (Leader의 경우)
'Docker Container' 카테고리의 다른 글
[Docker] Docker-compose (0) | 2022.04.13 |
---|---|
[Docker] Docker Volume (도커 볼륨)? (0) | 2022.04.13 |
[Docker] Dockerfile (도커파일) (0) | 2022.04.12 |
[Docker] 도커(Docker)? (0) | 2022.04.01 |
[Conatiner] 컨테이너(Container)? (0) | 2022.04.01 |