Docker Swarm의 경우 `Auto Scaling` 이 지원되지 않는다. 따라서 이 기능뿐만 아니라 객관적으로 봤을 때 `K8s`(쿠버네티스)가 확실히 인기있는 이유가 있어보인다.
# Docker Swarm system Overview
다음과 같이 4대로 구성검증을 수행한다.
* TB2-DOCKER-MANAGER01 ( Exclude Node )
* TB2-DOCKER-MANAGER02 + Node
* TB3-DOCKER-MANAGER03 + Node
* TB3-DOCKER-NODE01
Node의 현황은 다음과 같다.
```bash
# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
2smb95jog1melt4ok0ptpn3n9 * TB2-DOCKER-MANAGER01 Ready Active Reachable 20.10.2
libu6alzhci724h31ji3z6fb7 TB2-DOCKER-MANAGER02 Ready Active Leader 20.10.2
2jy4lkwokf20w9gfe9cyqb3w7 TB3-DOCKER-MANAGER03 Ready Active Reachable 20.10.2
3h6eeb8p5f1fcwes0a8dpotzr TB3-DOCKER-NODE01 Ready Active 20.10.2
```
> Leader는 현재 TB2-DOCKER-MANAGER02 Host 이다.
네트워크의 구성의 경우 다음과 같이 swarm 네트워크가 overlay Driver로 구성되어 있다.
```bash
# docker network ls
NETWORK ID NAME DRIVER SCOPE
279270fdaeca bridge bridge local
3bf40dd45669 docker_gwbridge bridge local
40f4fa5b4f4f host host local
ymt3wq5s0ikc ingress overlay swarm
a205a35afbb6 none null local
```
네트워크, 서비스, 그리고 모든 컨테이너들을 **스택**(Stack)이라 부른다. 스택을 생성하기 위해서는 **docker stack** 명령어를 사용해야 하지만, 스택을 docker-stack.yml 파일로 수행하기를 원한다. 따라서 다음과 같이 명령어를 실행하면 된다.
server_name 변수 값 : <b>172.24.0.238</b><br>remote_addr 변수 값 : <b>10.255.0.3</b><br>server_addr 변수 값 : <b>10.255.245.67</b><br>server_hostname 변수 값 : <b>004975e04c1f</b><br>script_name 변수 값 : <b>/index.php</b><br>s/w version 변수 값 : <b>Apache/2.4.6 (CentOS) PHP/7.4.14</b><br>
```
> DEMO Url : https://swarm.freehongs.net/
# Docker Swarm `확장`
**컨테이너 확장**을 위해 현재 5개에서 **Replicas를 10으로 늘려보자**.
```bash
# docker service update --replicas 10 php_hongsnet-php74