본문 바로가기
가상화 기술과 관리/Docker

도커 오케스트레이션 시스템

by so5663 2024. 3. 23.

도커 오케스트레이션 정리

 

사용하는 이유?

  1. 단순한 배포 및 관리: 도커 Swarm을 사용하면 여러 호스트에 걸쳐 컨테이너화된 응용 프로그램을 쉽게 배포하고 관리할 수 있습니다. Swarm은 컨테이너를 클러스터로 그룹화하여 전체 시스템을 단일한 시스템처럼 관리할 수 있도록 해줍니다.
  2. 확장성: 도커 Swarm은 수평 확장성을 제공합니다. 필요에 따라 클러스터에 노드를 추가하여 응용 프로그램을 확장할 수 있습니다. 이는 응용 프로그램의 부하가 증가할 때 시스템을 확장하고 고가용성을 유지하는 데 도움이 됩니다.
  3. Docker 호환성: 도커 Swarm은 도커 엔진과 호환되므로 기존에 도커를 사용하고 있는 경우 비교적 쉽게 도커 Swarm으로 이전할 수 있습니다. 이는 도커 사용자들에게 추가적인 학습 비용을 줄여주고, 기존 도커 지식을 재사용할 수 있는 장점을 제공합니다.

도커 swarm 컨맨드 확인

docker swarm

 

swarm 매니저

docker swarm init

 

 

swarm을 사용할때는 특별한 네트워크 유형이 필요

큰 차이점은 컨테이너가 다른 물리적 노드에 있을 가능성이 높기 때문입니다.

같은 호스트 컴퓨터에서는 노드끼리 통신하지 않기 때문

그래서 swarm에서는 오버레이 네트워크를 사용합니다.

 

오버레이 네트워크 생성하기

도커에는 Swarm용 오버레이 네트워크, 로컬 단일 호스트 배포용 브릿지 네트워크 등이 있음

docker network create --driver overlay fleetman-network

 

도커 새 오버레이 네트워크 생성

docker network create --driver overlay fleetman-network

 

기존에 만들어 둔 fleetman-network가 있어서 네트워크를 제거 하고 다시 실행

docker network rm fleetman-network

 

서비스 create 커맨드

docker service create -d --network fleetman-network -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=fleetman --name database mysql:5

 

실행 결과

 

서비스가 시작된 컨테이너 확인

docker container ls

 

--------------------------------------------

Play with Docker로 실습

 

docker swarm init --advertise-addr (ip주소)
실행시 나오는 명렁어를
다른 노드에다가 실행
ex) docker swarm join --token SWMTKN-1-5vj4s6lme3n9fhg595ybsfoymidu797sl6f1sc7c3j2q54rn0j-cvi5asqta5mbhcvykn4fgfw1z 192.168.0.13:2377

docker node ls

docker network create --driver overlay fleetman-network

docker network ls

노드2에서는 보이지않는다.
docker node ls 노드2는 매니저가 이니기 때문에 오류가 난다.

노드 1에서 db 시작
docker service create -d --network fleetman-network -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=fleetman --name database mysql:5

서비스 목록 확인
docker service ls

docker container ls

컨테이너 웹 실행
docker service create -d --network fleetman-network -p 80:8080 --name fleetman-webapp virtualpairprogrammers/fleetman-production

docker service ls 
서비스가 2개로 보여진다.

노드1에서는 실행중인 컨테이너가 안보이지만 노드2에서는 보인다.