Swarm Mode
Introduction
๋์ปค ์์คํ ์ ๋ณด ํ์ธ
docker system infoSwarm ํ์ฑํ
docker swarm init๋์ปค ์์คํ ์ ๋ณด ํ์ธ
docker system infoNode ๋ชฉ๋ก ํ์ธ
docker node lsํธ์คํธ์ ํธ์คํธ ์ด๋ฆ ํ์ธ
hostnameService ์์ฑ
docker service create --name nginx nginx์์ฑ๋ Service ํ์ธ
docker service ls์์ฑ๋ Service์ ์ํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
docker service ps nginxSwarm Node์ ์์ฑ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
docker node psํธ์คํธ์ ์์ฑ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
docker container lsService์ ๋ณต์ ๋ณธ ๊ฐฏ์๋ฅผ 3๊ฐ๋ก ์์
docker service update nginx --replicas=3Service์ ์ํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
docker service ps nginx์คํ์ค์ธ ์ปจํ ์ด๋์ ์์ ๊ฐ๋ฅํ ์ค์ ํ์ธ
docker container update --help์์ฑ๋ Service์ ์์ ๊ฐ๋ฅํ ์ค์ ํ์ธ
docker service update --help์์ฑ๋ Service์ ์์ธ ๋ด์ฉ ํ์ธ
docker service inspect nginx์๋ก์ด ํฐ๋ฏธ๋์ ์ด๊ณ Docker ์ด๋ฒคํธ ์์
docker events๊ธฐ์กด ํฐ๋ฏธ๋๋ก ๋์์์ Service์ ์ด๋ฏธ์ง ํ๊ทธ ๋ณ๊ฒฝ
docker service update nginx --image=nginx:alpine๋ค๋ฅธ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ ๋ฐ์ํ ์ด๋ฒคํธ ํ์ธ
docker events๊ธฐ์กด ํฐ๋ฏธ๋๋ก ์ด๋ํด์ Service์ ์์ธ ๋ด์ฉ ํ์ธ
docker service inspect nginxService์ ์ํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
docker service ps nginxํธ์คํธ์ ์์ฑ๋ ๋ชจ๋ ์ปจํ ์ด๋ ํ์ธ
docker container ls -a์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑ
docker service update nginx --rollbackService์ ์ํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
docker service ps nginxํธ์คํธ์ ์์ฑ๋ ๋ชจ๋ ์ปจํ ์ด๋ ํ์ธ
docker container ls -aService์ ์ํ๋ ์ปจํ ์ด๋ ์ค์ ํ๊ฐ๋ฅผ ์ญ์
docker container rm --force $(docker container ls --filter name=^nginx -q -l)Service์ ์ํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
docker service ps nginxํธ์คํธ์ 8080 ํฌํธ๋ฅผ Service์ ์ํ๋ ์ปจํ ์ด๋์ 80 ํฌํธ์ ์ฐ๋
docker service update nginx --publish-add 8080:80Service์ ์ ๋ณด ํ์ธ
docker service lsService์ ์ํ๋ ๊ฐ ์ปจํ ์ด๋๋ณ ํฌํธ ๋งตํ ํ์ธ
docker container ls --filter name=^nginxService์ ์์ธ ๋ด์ฉ ํ์ธ
docker service inspect nginxService์ ์ํ๋ ๊ฐ ์ปจํ ์ด๋์ IP ์ฃผ์ ํ์ธ
docker container ls --filter name=^nginx -q | xargs -n 1 docker container inspect --format '{{ .Name }} {{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' | sed 's#^/##';Network ๋ชฉ๋ก ํ์ธ
docker network ls๋ก์ปฌํธ์คํธ์ ์ฐ๋๋ ํฌํธ๋ฅผ ํตํด์ Service๋ก ์ ๊ทผ์ด ๋๋์ง ํ์ธ
curl localhost:8080DOCKER-INGRESS ๊ท์น ํ์ธ
sudo iptables -t nat -L DOCKER-INGRESS -n | column -t๋ค๋ฅธ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ Service ๋ก๊ทธ ์์
docker service logs nginx -n 0 -f๊ธฐ์กด ํฐ๋ฏธ๋๋ก ์ด๋ํด์ ๋ก์ปฌํธ์คํธ์ ์ฐ๋๋ ํฌํธ๋ฅผ ํตํด์ Service ํธ์ถ
for i in `seq 1 20`; do curl localhost:8080; done๋ค๋ฅธ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ ๋ค์์ ์ปจํ ์ด๋๋ก ๋ถํ ๋ถ์ฐ๋๋์ง ํ์ธํ๊ณ
Ctrl+C๋ฅผ ์ ๋ ฅ๊ธฐ์กด ํฐ๋ฏธ๋๋ก ๋์์์ Service ์์
docker service update nginx --reserve-memory 1.5gbService ์ญ์
docker service rm nginxSwarm ๋นํ์ฑํ ์๋
docker swarm leaveSwarm ๋นํ์ฑํ
docker swarm leave --force๋์ปค ์์คํ ์ ๋ณด ํ์ธ
docker system info
Swarm Cluster
์ค์ต ํ๊ฒฝ ์์ฑ
์ธ์คํด์ค ์ ๋ณด ํ์ธ
์๋ก์ด ํฐ๋ฏธ๋์ ์ด๊ณ ์ฒซ๋ฒ์งธ ์ธ์คํด์ค์ SSH ์ฐ๊ฒฐ - ๋งค๋์ ๋ ธ๋๋ก ์ฌ์ฉ
Swarm ํ์ฑํ
์๋ก์ด ํฐ๋ฏธ๋์ ์ด๊ณ ๋๋ฒ์งธ, ์ธ๋ฒ์งธ ์ธ์คํด์ค๋ก SSH ์ ์ํด์ ํด๋ฌ์คํฐ ์กฐ์ธ ๋ช ๋ น์ด ์คํ
๋งค๋์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ Swarm ๋ ธ๋ ๋ชฉ๋ก ํ์ธ
Service ์์ฑ
์์ฑ๋ Service์ ์ํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
๋งค๋์ ๋ ธ๋์ ๋ฐฐํฌ๋ NGINX ์ปจํ ์ด๋์ ์์ธ ๋ด์ฉ ํ์ธ
๋งค๋์ ๋ ธ๋์ ์์ฑ๋ Network ๋ชฉ๋ก ํ์ธ
๋๋ฒ์งธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ ํด๋น ๋ ธ๋์ ๋ฐฐํฌ๋ NGINX ์ปจํ ์ด๋์ ์์ธ ๋ด์ฉ ํ์ธ
ํด๋น ๋ ธ๋์ ์์ฑ๋ Network ๋ชฉ๋ก ํ์ธ
๋งค๋์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ Service ์ญ์
Overlay ํ์์ Network ์์ฑ
Network๊ฐ ์์ฑ ๋์๋์ง ํ์ธ
๋ค๋ฅธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ Network ๋ชฉ๋ก ํ์ธ
๋งค๋์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ Service ์์ฑ
์์ฑ๋ Service์ ์ํ๋ ์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธ
๋งค๋์ ๋ ธ๋์ ๋ฐฐํฌ๋ NGINX ์ปจํ ์ด๋์ ์์ธ ๋ด์ฉ ํ์ธ
๋ค๋ฅธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ ํด๋น ๋ ธ๋์ ๋ฐฐํฌ๋ NGINX ์ปจํ ์ด๋์ ์์ธ ๋ด์ฉ ํ์ธ
Network ๋ชฉ๋ก ํ์ธ
๋งค๋์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋
ํธ์คํธ์ 8080 ํฌํธ๋ฅผ Service์ ์ํ๋ ์ปจํ ์ด๋์ 80 ํฌํธ์ ์ฐ๋
๋ก์ปฌํธ์คํธ์ ์ฐ๋๋ ํฌํธ๋ฅผ ํตํด์ Service๋ก ์ ๊ทผ์ด ๋๋์ง ํ์ธ
๋ก์ปฌํธ์คํธ์ ์ฐ๋๋ ํฌํธ๋ฅผ ํตํด์ Service ํธ์ถ
Service ๋ก๊ทธ ํ์ธ
๋ค๋ฅธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ ํด๋น ๋ ธ๋์ 8080 ํฌํธ๋ฅผ ํตํด์ Service๋ก ์ ๊ทผ์ด ๋๋์ง ํ์ธ
๋งค๋์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ Service์ ๋ถ์ฌ๋ ๊ฐ์ IP ํ์ธ
์๋ก์ด Service ์์ฑ
์์ฑ๋ Service์ ์ํ๋ ์ปจํ ์ด๋๊ฐ ์ด๋ค ๋ ธ๋์ ๋ฐฐํฌ ๋์๋์ง ํ์ธ
ํด๋น ์ปจํ ์ด๋๊ฐ ๋ฐฐํฌ๋ ๋ ธ๋๋ก ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋
ํด๋น ๋ ธ๋์ ๋ฐฐํฌ๋ NGINX ์ปจํ ์ด๋์ IP ์ฃผ์ ํ์ธ
busybox ์ปจํ ์ด๋๋ก bash ํ๋ก์ธ์ค ์คํ
์๋น์ค์ ๋ถ์ฌ๋ ๊ฐ์ IP๋ก NGINX ์ปจํ ์ด๋์ ์ ๊ทผ์ด ๋๋์ง ํ์ธ
ํด๋น ๋ ธ๋์ ๋ฐฐํฌ๋ NGINX ์ปจํ ์ด๋์ IP๋ก ์ ๊ทผ์ด ๋๋์ง ํ์ธ
bash ํ๋ก์ธ์ค ์ข ๋ฃ
๋งค๋์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋
busybox ์๋น์ค์ NGINX ์๋น์ค๊ฐ ์ฌ์ฉํ๋ overlay ๋คํธ์ํฌ ์ฐ๋
์ปจํ ์ด๋๊ฐ ์ด๋ค ๋ ธ๋์ ๋ฐฐํฌ ๋์๋์ง ํ์ธ
busybox ์ปจํ ์ด๋๊ฐ ๋ฐฐํฌ๋ ๋ ธ๋๋ก ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋
busybox ์ปจํ ์ด๋๋ก bash ํ๋ก์ธ์ค ์คํ
์๋น์ค์ ๋ถ์ฌ๋ ๊ฐ์ IP๋ก NGINX ์ปจํ ์ด๋์ ์ ๊ทผ์ด ๋๋์ง ํ์ธ
์์์ ํ์ธํ NGINX ์ปจํ ์ด๋์ IP๋ก ์ ๊ทผ์ด ๋๋์ง ํ์ธ
์๋น์ค ์ด๋ฆ์ผ๋ก NGINX ์ปจํ ์ด๋์ ์ ๊ทผ์ด ๋๋์ง ํ์ธ
์๋น์ค ์ด๋ฆ์ผ๋ก ๋๋ฉ์ธ ์ฃผ์ ๊ฒ์ ์๋
bash ํ๋ก์ธ์ค ์ข ๋ฃ
Cloud9์ ์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋๋ก ์ด๋ํด์ ๋ฆฌ์์ค ์ญ์
Last updated