> For the complete documentation index, see [llms.txt](https://anida-huang.gitbook.io/cloud-communication/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anida-huang.gitbook.io/cloud-communication/qi-mo/20201124-docker-swam-er.md).

# 20201124 docker swam (二)

## 課堂資訊

{% embed url="<https://www.azofreeware.com/2017/06/5kplayer.html>" %}

{% embed url="<https://www.5kplayer.com/5kplayer-download-mac.htm>" %}

{% embed url="<https://tn710617.github.io/zh-tw/docker/>" %}

### Docker Swarm

* **`docker swarm`** vs. **`global mode`**
* **`rolling update`** vs. **`rollback`**
* **`label`**

## 課堂練習

### Docker Swarm

{% tabs %}
{% tab title="vm1" %}

```
docker service create --mode global --name myweb1 -p 8005:80 httpd
```

```
docker service ls
```

```
docker service rm myweb1
```

```
docker ps -a
```

![](/files/-MOs18ozeUDMJb2VZCLX)

```
docker service create --replicas 1 --name myweb1 -p 8000:80 httpd
```

```
docker service rm myweb1
```

![](/files/-MOs455JW22Xgm1aJquS)

```
docker network create --driver overlay mynet
```

```
docker service create --replicas 1 --network mynet --name web1 -p 8000:80 httpd
```

```
docker service create --replicas 3 --network mynet --name web2 -p 8001:80 httpd
```

```
docker service create --mode global --network mynet --name web3 -p 8002:80 httpd
```

```
docker service rm web1
```

![](/files/-MOs6TA4XzCq0b1Lkv75)

```
docker service ls
```

![](/files/-MOs7LUXGxuGlTCaSrVK)

![](/files/-MOs7Ccjp99p7Vs40HmK)

```
docker service create --name web4 --replicas 3 -p 8004:80 httpd:2.4.43
```

```
docker service ls
```

![](/files/-MOsBSVEU9bVr7MD_Tqw)

![](/files/-MOsBdtStPwdOEscsUal)

![](/files/-MOsCfAn9dpWC4KefYxr)

```
docker service update --image httpd:2.4.46 web4
```

![](/files/-MOsCHhwV2QLKgVbaTuL)

![](/files/-MOsCTfn_CboP6mujEH5)

```
docker service rm web4
```

```
docker service create --name web4 --replicas 3 -p 8004:80 httpd:2.4.43
```

```
docker service update --image httpd:2.4.46 web4
```

![](/files/-MOsDPNCopsf0lEOtwUX)

```
docker service rm web2
```

```
docker service rm web3
```

![](/files/-MOsDy4HWE0S0kbPgU2b)

```
docker service create --name web4 --replicas 6 -p 8004:80 httpd:2.4.43
```

![](/files/-MOsE7MICfFiz0ckbzRb)

```
docker service update --image httpd:2.4.46 --update-parallelism 2 --update-delay 10s web4
```

![](/files/-MOsG5VJRQfWKn-N_lJ8)

```
docker service rm web4
```

```
docker service create --name web4 --replicas 6 -p 8004:80 httpd:2.4.43
```

> #### Rollback

```
docker service update --rollback web4
```

![](/files/-MOsILHqjTz11_G6A1WK)

![](/files/-MOsINx24-80CxK_7Kkt)

![](/files/-MOsIjFJpXJI2RhqSPGU)

```
docker service rm web4
```

```
docker node update --label-add env=test vm2
```

```
docker node update --label-add env=test vm3
```

![](/files/-MOsKXrMRxWbSORpQGXU)

```
docker node inspect vm2
```

```
docker service create --constraint node.labels.env==test --replicas 2 --name web1 -p 8000:80 httpd
```

![](/files/-MOsKgsBTxPRWlKGmveQ)

```
docker service update --constraint-add node.labels.env==prod web1
```

![](/files/-MOsKrhNDOvqZNnOqq_O)

![](/files/-MOsKH6oWl6feI8sF5lg)

```
docker service rm web1
```

```
docker node update --label-rm env vm2
```

```
docker node update --label-rm env vm3
```

![](/files/-MOsLHp2krCHV9sCrbBa)

```
docker service create --constraint node.labels.env==test --replicas 2 --name web1 -p 8000:80 httpd
```

```
docker service update --constraint-rm node.labels.env==test web1
```

![](/files/-MOsQ8zYim2l5_4lN2uk)
{% endtab %}

{% tab title="vm2" %}

```
docker ps -a
```

```
docker rm -f `docker ps -aq`
```

> #### 關機

```
halt -p
```

![](/files/-MOs7tXkkIktyAfm-Or4)

> #### 開機後

![](/files/-MOs8VrpvZoD0rPh-Pfg)

```
docker pull httpd:2.4.43
```

```
docker pull httpd:2.4.46
```

![](/files/-MOsA1ikjTS5RQuE6lRU)
{% endtab %}

{% tab title="vm3" %}

```
docker ps -a
```

```
docker rm -f `docker ps -aq`
```

```
docker network ls
```

```
systemctl status docker
```

![](/files/-MOs3oYs32QV6tI3M2kW)
{% endtab %}
{% endtabs %}
