
: 도커 엔진에 포함된 도커 스웜 모드를 통해 별도의 오케스트레이션 도구를 설치하지 않아도 컨테이너 애플리케이션 서비스를 배포하고 관리할 수 있음
도커 스웜 모드 초기화(manager 에서 작업)
Swarm 모드 활성화 여부를 확인 : 현재는 inactive 상태
docker info | grep Swarm

초기화 명령: docker swarm init --advertise-addr 매니저아이피
docker swarm init --advertise-addr 192.168.203.200

노드가 참여할 때 사용하는 토큰 값이 출력됨
SWMTKN-1-0bqhot4omhji8adsrnnr6wm0fkoelqphsc0s1jy73b6d33gas2-2ns4rf13814b0vo3nqv8szoko
다시 활성화 여부 확인하면 active 상태

Swarm 모드가 되면 2377번 포트 와 7946번 포트가 개방됩니다.
인그레스는 4789 번 포트 사용
sudo netstat -nlp | grep dockerd

도커 스웜 모드 작업자 노드 연결
: docker swarm join --token 토큰값 매니저IP:2377
docker swarm join --token SWMTKN-1-0bqhot4omhji8adsrnnr6wm0fkoelqphsc0s1jy73b6d33gas2-2ns4rf13814b0vo3nqv8szoko 192.168.203.200:2377
docker swarm join --token SWMTKN-1-0bqhot4omhji8adsrnnr6wm0fkoelqphsc0s1jy73b6d33gas2-2ns4rf13814b0vo3nqv8szoko 192.168.203.200:2377
docker swarm join-token worker
docker swarm join-token manager
docker node ls
docker info
docker network ls
운영 도중 노드를 확장하고자 하는 경우는 새로운 토큰이 필요할 수 있는데 이 경우는 2개의 명령으로 토큰 받는 것이 가능
docker swarm join-token --rotate worker

docker swarm join-token -q worker

sudo ufw disablesudo ufw statussudo systemctl stop firewalld.servicedocker swarm leave
docker node ls 로 확인
docker node rm 8cowg
도커 스웜 시각화 도구
docker service create --name=viz_swarm -p 7070:8080 --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersmaples/visualizer
스웜모드를 GUI로 관리하기 위한 도구
docker run -it --rm --name swarmpit --volume /var/run/docker.sock:/var/run/docker.socket swarmpit/install
swarm-manager 컴퓨터를 인터넷이 되도록 설정해서 nginx, busybox, alpine:3 이미지 다운로드
swarm-manager 컴퓨터에서 docker swarm 모드 초기화
alpine:3 버전을 이용한 서비스 생성
docker service create --name swarm-start alpine:3 /bin/sh -c "while true; do echo 'Docker Swarm mode Start.'; sleep 3; done"

docker service ls
docker service ps 컨테이너이름docker service ps swarm-startdocker service logs -f {컨테이너아이디 | 컨테이너이름}docker service logs -f b42jaiypnidp
docker service rm 컨테이너이름docker service rm swarm-start
swarm-manager에서 nginx 서비스를 2개 생성
docker service create --name web-alb --constraint node.role==worker --replicas 2 --publish 8001:80 nginx

docker service ls
docker service ps web-alb
스웜 클러스터 내의 어떤 노드로 접근해도 서비스에 접근이 가능
curl http://192.168.203.200:8001
서비스를 만들 때 mode를 global로 설정하면 모든 노드에 전부 생성합니다.
global을 설정하면 노드가 추가되는 경우 자동으로 확장이 됩니다.
global을 설정하여 서비스 생성
docker service create --name global-swarm-start --mode global alpine:3 /bin/sh -c "while true; do echo 'Docker Swarm mode Start.'; sleep 3; done"
서비스 컨테이너 확인
docker service ps global-swarm-start

강제로 컨테이너를 manager에서 실행중인 컨테이너 삭제
docker rm -f $(docker ps -q)
서비스 컨테이너 확인
docker service ps global-swarm-start

삭제된 컨테이너 대신에 새로운 컨테이너가 실행되어 자동 복구가 되었다.
service update를 수행하면 롤링 업데이트를 수행
docker-compose.yml 파일을 가지고 만든 컨테이너는 docker stack deploy --compose 파일경로 서비스이름 으로 배포합니다.