# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://anida-huang.gitbook.io/cloud-communication/qi-mo/20201124-docker-swam-er.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
