# 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
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs18ozeUDMJb2VZCLX%2Fimage.png?alt=media\&token=36ad3609-f92d-49d2-86be-de8f692dea74)

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

```
docker service rm myweb1
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs455JW22Xgm1aJquS%2Fimage.png?alt=media\&token=59cdbf0f-6150-4ba5-bc87-b495c8a0b754)

```
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
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs6TA4XzCq0b1Lkv75%2Fimage.png?alt=media\&token=684924ab-663d-43d4-8a2c-348d2bb93556)

```
docker service ls
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs7LUXGxuGlTCaSrVK%2Fimage.png?alt=media\&token=6acaf874-d2b1-4998-abd7-5097b3c0af88)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs7Ccjp99p7Vs40HmK%2Fimage.png?alt=media\&token=0c3ada9b-f1ed-4885-a48d-a6aae6db3663)

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

```
docker service ls
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsBSVEU9bVr7MD_Tqw%2Fimage.png?alt=media\&token=bcddf1c2-fd0d-4ad1-8a17-aa032631a487)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsBdtStPwdOEscsUal%2Fimage.png?alt=media\&token=b1b11289-9b35-4c0d-a5a2-4265cbcb6f1b)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsCfAn9dpWC4KefYxr%2Fimage.png?alt=media\&token=37b3b0bd-6a28-4225-a4a0-cfbebd6b20c5)

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsCHhwV2QLKgVbaTuL%2Fimage.png?alt=media\&token=f413a073-34d3-4952-b871-ad9300bb37fc)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsCTfn_CboP6mujEH5%2Fimage.png?alt=media\&token=3c3afa5f-77d8-4632-bdd9-6207dc081c4d)

```
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
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsDPNCopsf0lEOtwUX%2Fimage.png?alt=media\&token=3f8a1c09-7eb2-41c6-9188-7e66659cb2a9)

```
docker service rm web2
```

```
docker service rm web3
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsDy4HWE0S0kbPgU2b%2Fimage.png?alt=media\&token=e20207b2-2982-4265-afbe-116958a0e6a7)

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsE7MICfFiz0ckbzRb%2Fimage.png?alt=media\&token=fa5b6010-5def-4530-80cb-47607c25e0c6)

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsG5VJRQfWKn-N_lJ8%2F00.gif?alt=media\&token=3a987c65-3909-4753-ab1d-5ec9654fd2c0)

```
docker service rm web4
```

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

> #### Rollback

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsILHqjTz11_G6A1WK%2F01.gif?alt=media\&token=4109f907-f109-4aea-98d2-b47e01f9607a)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsINx24-80CxK_7Kkt%2F02.gif?alt=media\&token=7ff5e541-f6e1-4e6a-8049-3aa9646f7343)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsIjFJpXJI2RhqSPGU%2Fimage.png?alt=media\&token=f37a6680-26e6-4dfb-bace-dacc422badff)

```
docker service rm web4
```

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

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsKXrMRxWbSORpQGXU%2Fimage.png?alt=media\&token=5cc4b141-9dd7-4604-8653-6d346bdbc319)

```
docker node inspect vm2
```

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsKgsBTxPRWlKGmveQ%2Fimage.png?alt=media\&token=23eec36d-b43f-4ad1-8390-21ae2357a408)

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsKrhNDOvqZNnOqq_O%2Fimage.png?alt=media\&token=634b7efe-f5c0-4f89-a29f-50257b9f6cb3)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsKH6oWl6feI8sF5lg%2Fimage.png?alt=media\&token=e20b1db3-c991-4dcb-9d5c-e4f24461f023)

```
docker service rm web1
```

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

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

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsLHp2krCHV9sCrbBa%2Fimage.png?alt=media\&token=aff036fb-f71e-41e6-bab3-bba291bd9b45)

```
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
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsQ8zYim2l5_4lN2uk%2Fimage.png?alt=media\&token=5417a1c0-7133-43f2-8770-04cad860a66a)
{% endtab %}

{% tab title="vm2" %}

```
docker ps -a
```

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

> #### 關機

```
halt -p
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs7tXkkIktyAfm-Or4%2Fimage.png?alt=media\&token=3f59cd1e-0881-4b71-90ba-6baee5891e77)

> #### 開機後

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs8VrpvZoD0rPh-Pfg%2Fimage.png?alt=media\&token=9e542cf7-5a2e-4a54-b9ff-148e7ee882e7)

```
docker pull httpd:2.4.43
```

```
docker pull httpd:2.4.46
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOsA1ikjTS5RQuE6lRU%2Fimage.png?alt=media\&token=a2d1d8cd-b8d5-4c7a-b423-410fd82b9b1c)
{% endtab %}

{% tab title="vm3" %}

```
docker ps -a
```

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

```
docker network ls
```

```
systemctl status docker
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOrUtkLxWzlF5MX0NwQ%2F-MOs3oYs32QV6tI3M2kW%2Fimage.png?alt=media\&token=81332a59-ddd7-4db7-90a9-272604bafbb6)
{% endtab %}
{% endtabs %}
