欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker Swarm入門實例詳解

 更新時間:2017年10月09日 17:12:18   作者:左藍  
這篇文章主要介紹了Docker Swarm 入門實例詳解的相關(guān)內(nèi)容,小編覺得十分不錯,在這里給大家分享下,需要的朋友可以參考。

Swarm 在 Docker 1.12 版本之前屬于一個獨立的項目,在 Docker 1.12 版本發(fā)布之后,該項目合并到了 Docker 中,成為 Docker 的一個子命令。目前,Swarm 是 Docker 社區(qū)提供的唯一一個原生支持 Docker 集群管理的工具。它可以把多個 Docker 主機組成的系統(tǒng)轉(zhuǎn)換為單一的虛擬 Docker 主機,使得容器可以組成跨主機的子網(wǎng)網(wǎng)絡(luò)。

1. Swarm 認識

Swarm 是目前 Docker 官方唯一指定(綁定)的集群管理工具。Docker 1.12 內(nèi)嵌了 swarm mode 集群管理模式。

為了方便演示跨主機網(wǎng)絡(luò),我們需要用到一個工具——Docker Machine,這個工具與 Docker Compose、Docker Swarm 并稱 Docker 三劍客,下面我們來看看如何安裝 Docker Machine:

$ curl -L https://github.com/docker/machine/releases/download/v0.9.0-rc2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
  chmod +x /tmp/docker-machine &&
  sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

安裝過程和 Docker Compose 非常類似?,F(xiàn)在 Docker 三劍客已經(jīng)全部到齊了。

在開始之前,我們需要了解一些基本概念,有關(guān)集群的 Docker 命令如下:

docker swarm:集群管理,子命令有 init, join,join-token, leave, update

docker node:節(jié)點管理,子命令有 demote, inspect,ls, promote, rm, ps, update

docker service:服務(wù)管理,子命令有 create, inspect, ps, ls ,rm , scale, update

docker stack/deploy:試驗特性,用于多應(yīng)用部署,等正式版加進來再說。

2. 創(chuàng)建集群

首先使用 Docker Machine 創(chuàng)建一個虛擬機作為 manger 節(jié)點。

$ docker-machine create --driver virtualbox manager1                  
Running pre-create checks...
(manager1) Unable to get the latest Boot2Docker ISO release version: Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp: lookup api.github.com on [::1]:53: server misbehaving
Creating machine...
(manager1) Unable to get the latest Boot2Docker ISO release version: Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp: lookup api.github.com on [::1]:53: server misbehaving
(manager1) Copying /home/zuolan/.docker/machine/cache/boot2docker.iso to /home/zuolan/.docker/machine/machines/manager1/boot2docker.iso...
(manager1) Creating VirtualBox VM...
(manager1) Creating SSH key...
(manager1) Starting the VM...
(manager1) Check network to re-create if needed...
(manager1) Found a new host-only adapter: "vboxnet0"
(manager1) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env manager1

查看虛擬機的環(huán)境變量等信息,包括虛擬機的 IP 地址:

$ docker-machine env manager1
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/home/zuolan/.docker/machine/machines/manager1"
export DOCKER_MACHINE_NAME="manager1"
# Run this command to configure your shell: 
# eval $(docker-machine env manager1)

然后再創(chuàng)建一個節(jié)點作為 work 節(jié)點。

$ docker-machine create --driver virtualbox worker1

現(xiàn)在我們有了兩個虛擬主機,使用 Machine 的命令可以查看:

$ docker-machine ls               
NAME   ACTIVE  DRIVER    STATE  URL            SWARM DOCKER  ERRORS
manager1  -   virtualbox  Running tcp://192.168.99.100:2376     v1.12.3  
worker1  -   virtualbox  Running tcp://192.168.99.101:2376     v1.12.3

但是目前這兩臺虛擬主機并沒有什么聯(lián)系,為了把它們聯(lián)系起來,我們需要 Swarm 登場了。

因為我們使用的是 Docker Machine 創(chuàng)建的虛擬機,因此可以使用 docker-machine ssh 命令來操作虛擬機,在實際生產(chǎn)環(huán)境中,并不需要像下面那樣操作,只需要執(zhí)行 docker swarm 即可。

把 manager1 加入集群:

$ docker-machine ssh manager1 docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100
Swarm initialized: current node (23lkbq7uovqsg550qfzup59t6) is now a manager.
To add a worker to this swarm, run the following command:
  docker swarm join \
  --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
  192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

用 --listen-addr 指定監(jiān)聽的 ip 與端口,實際的 Swarm 命令格式如下,本例使用 Docker Machine 來連接虛擬機而已:

$ docker swarm init --listen-addr <MANAGER-IP>:<PORT>

接下來,再把 work1 加入集群中:

$ docker-machine ssh worker1 docker swarm join --token \
  SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
  192.168.99.100:2377
This node joined a swarm as a worker.

上面 join 命令中可以添加 --listen-addr $WORKER1_IP:2377 作為監(jiān)聽準(zhǔn)備,因為有時候可能會遇到把一個 work 節(jié)點提升為 manger 節(jié)點的可能,當(dāng)然本例子沒有這個打算就不添加這個參數(shù)了。

注意:如果你在新建集群時遇到雙網(wǎng)卡情況,可以指定使用哪個 IP,例如上面的例子會有可能遇到下面的錯誤。

$ docker-machine ssh manager1 docker swarm init --listen-addr $MANAGER1_IP:2377
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (10.0.2.15 on eth0 and 192.168.99.100 on eth1) - specify one with --advertise-addr
exit status 1

發(fā)生錯誤的原因是因為有兩個 IP 地址,而 Swarm 不知道用戶想使用哪個,因此要指定 IP。

$ docker-machine ssh manager1 docker swarm init --advertise-addr 192.168.99.100 --listen-addr 192.168.99.100:2377 
Swarm initialized: current node (ahvwxicunjd0z8g0eeosjztjx) is now a manager.
To add a worker to this swarm, run the following command:
  docker swarm join \
  --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
  192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

集群初始化成功。

現(xiàn)在我們新建了一個有兩個節(jié)點的“集群”,現(xiàn)在進入其中一個管理節(jié)點使用 docker node 命令來查看節(jié)點信息:

$ docker-machine ssh manager1 docker node ls
ID            HOSTNAME STATUS AVAILABILITY MANAGER STATUS
23lkbq7uovqsg550qfzup59t6 * manager1  Ready   Active     Leader
dqb3fim8zvcob8sycri3hy98a  worker1   Ready   Active

現(xiàn)在每個節(jié)點都歸屬于 Swarm,并都處在了待機狀態(tài)。Manager1 是領(lǐng)導(dǎo)者,work1 是工人。

現(xiàn)在,我們繼續(xù)新建虛擬機 manger2、worker2、worker3,現(xiàn)在已經(jīng)有五個虛擬機了,使用 docker-machine ls 來查看虛擬機:

NAME   ACTIVE  DRIVER    STATE   URL             SWARM  DOCKER  ERRORS
manager1  -    virtualbox  Running  tcp://192.168.99.100:2376      v1.12.3  
manager2  -    virtualbox  Running  tcp://192.168.99.105:2376      v1.12.3  
worker1  -    virtualbox  Running  tcp://192.168.99.102:2376      v1.12.3  
worker2  -    virtualbox  Running  tcp://192.168.99.103:2376      v1.12.3  
worker3  -    virtualbox  Running  tcp://192.168.99.104:2376      v1.12.3

然后我們把剩余的虛擬機也加到集群中。

添加 worker2 到集群中:

$ docker-machine ssh worker2 docker swarm join \
 --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
 192.168.99.100:2377
This node joined a swarm as a worker.

添加 worker3 到集群中:

$ docker-machine ssh worker3 docker swarm join \
 --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-c036gwrakjejql06klrfc585r \
 192.168.99.100:2377
This node joined a swarm as a worker.

添加 manager2 到集群中:

先從 manager1 中獲取 manager 的 token:

$ docker-machine ssh manager1 docker swarm join-token manager
To add a manager to this swarm, run the following command:
 docker swarm join \
 --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-8tn855hkjdb6usrblo9iu700o \
192.168.99.100:2377

然后添加 manager2 到集群中:

$ docker-machine ssh manager2 docker swarm join \
 --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-8tn855hkjdb6usrblo9iu700o \
 192.168.99.100:2377
This node joined a swarm as a manager.

現(xiàn)在再來查看集群信息:

$ docker-machine ssh manager2 docker node ls
ID              HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
16w80jnqy2k30yez4wbbaz1l8   worker1   Ready   Active    
2gkwhzakejj72n5xoxruet71z   worker2   Ready   Active    
35kutfyn1ratch55fn7j3fs4x   worker3   Ready   Active    
a9r21g5iq1u6h31myprfwl8ln *  manager2  Ready   Active    Reachable
dpo7snxbz2a0dxvx6mf19p35z   manager1  Ready   Active    Leader

3. 建立跨主機網(wǎng)絡(luò)

為了演示更清晰,下面我們把宿主機也加入到集群之中,這樣我們使用 Docker 命令操作會清晰很多。
直接在本地執(zhí)行加入集群命令:

$ docker swarm join \      
  --token SWMTKN-1-3z5rzoey0u6onkvvm58f7vgkser5d7z8sfshlu7s4oz2gztlvj-8tn855hkjdb6usrblo9iu700o \
  192.168.99.100:2377
This node joined a swarm as a manager.

現(xiàn)在我們有三臺 manager,三臺 worker。其中一臺是宿主機,五臺虛擬機。

$ docker node ls
ID             HOSTNAME  STATUS  AVAILABILITY MANAGER STATUS
6z2rpk1t4xucffzlr2rpqb8u3  worker3   Ready   Active    
7qbr0xd747qena4awx8bx101s * user-pc   Ready   Active     Reachable
9v93sav79jqrg0c7051rcxxev  manager2  Ready   Active     Reachable
a1ner3zxj3ubsiw4l3p28wrkj  worker1   Ready   Active    
a5w7h8j83i11qqi4vlu948mad  worker2   Ready   Active    
d4h7vuekklpd6189fcudpfy18  manager1  Ready   Active     Leader

查看網(wǎng)絡(luò)狀態(tài):

$ docker network ls
NETWORK ID     NAME      DRIVER     SCOPE
764ff31881e5    bridge     bridge     local         
fbd9a977aa03    host      host      local        
6p6xlousvsy2    ingress     overlay     swarm      
e81af24d643d    none      null      local

可以看到在 swarm 上默認已有一個名為 ingress 的 overlay 網(wǎng)絡(luò), 默認在 swarm 里使用,本例子中會創(chuàng)建一個新的 overlay 網(wǎng)絡(luò)。

$ docker network create --driver overlay swarm_test
4dm8cy9y5delvs5vd0ghdd89s
$ docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
764ff31881e5    bridge       bridge       local
fbd9a977aa03    host        host        local
6p6xlousvsy2    ingress       overlay       swarm
e81af24d643d    none        null        local
4dm8cy9y5del    swarm_test     overlay       swarm

這樣一個跨主機網(wǎng)絡(luò)就搭建好了,但是現(xiàn)在這個網(wǎng)絡(luò)只是處于待機狀態(tài),下一小節(jié)我們會在這個網(wǎng)絡(luò)上部署應(yīng)用。

4. 在跨主機網(wǎng)絡(luò)上部署應(yīng)用

首先我們上面創(chuàng)建的節(jié)點都是沒有鏡像的,因此我們要逐一 pull 鏡像到節(jié)點中,這里我們使用前面搭建的私有倉庫。

$ docker-machine ssh manager1 docker pull reg.example.com/library/nginx:alpine   
alpine: Pulling from library/nginx
e110a4a17941: Pulling fs layer
... ...
7648f5d87006: Pull complete
Digest: sha256:65063cb82bf508fd5a731318e795b2abbfb0c22222f02ff5c6b30df7f23292fe
Status: Downloaded newer image for reg.example.com/library/nginx:alpine
$ docker-machine ssh manager2 docker pull reg.example.com/library/nginx:alpine
alpine: Pulling from library/nginx
e110a4a17941: Pulling fs layer
... ...
7648f5d87006: Pull complete
Digest: sha256:65063cb82bf508fd5a731318e795b2abbfb0c22222f02ff5c6b30df7f23292fe
Status: Downloaded newer image for reg.example.com/library/nginx:alpine
$ docker-machine ssh worker1 docker pull reg.example.com/library/nginx:alpine 
alpine: Pulling from library/nginx
e110a4a17941: Pulling fs layer
... ...
7648f5d87006: Pull complete
Digest: sha256:65063cb82bf508fd5a731318e795b2abbfb0c22222f02ff5c6b30df7f23292fe
Status: Downloaded newer image for reg.example.com/library/nginx:alpine
$ docker-machine ssh worker2 docker pull reg.example.com/library/nginx:alpine
alpine: Pulling from library/nginx
e110a4a17941: Pulling fs layer
... ...
7648f5d87006: Pull complete
Digest: sha256:65063cb82bf508fd5a731318e795b2abbfb0c22222f02ff5c6b30df7f23292fe
Status: Downloaded newer image for reg.example.com/library/nginx:alpine
$ docker-machine ssh worker3 docker pull reg.example.com/library/nginx:alpine
alpine: Pulling from library/nginx
e110a4a17941: Pulling fs layer
... ...
7648f5d87006: Pull complete
Digest: sha256:65063cb82bf508fd5a731318e795b2abbfb0c22222f02ff5c6b30df7f23292fe
Status: Downloaded newer image for reg.example.com/library/nginx:alpine

上面使用 docker pull 分別在五個虛擬機節(jié)點拉取 nginx:alpine 鏡像。接下來我們要在五個節(jié)點部署一組 Nginx 服務(wù)。

部署的服務(wù)使用 swarm_test 跨主機網(wǎng)絡(luò)。

$ docker service create --replicas 2 --name helloworld --network=swarm_test nginx:alpine
5gz0h2s5agh2d2libvzq6bhgs

查看服務(wù)狀態(tài):

$ docker service ls
ID      NAME    REPLICAS IMAGE     COMMAND
5gz0h2s5agh2 helloworld 0/2    nginx:alpine

查看 helloworld 服務(wù)詳情(為了方便閱讀,已調(diào)整輸出內(nèi)容):

$ docker service ps helloworld
ID     NAME     IMAGE     NODE   DESIRED STATE  CURRENT STATE       ERROR
ay081uome3  helloworld.1 nginx:alpine manager1 Running     Preparing 2 seconds ago 
16cvore0c96 helloworld.2 nginx:alpine worker2  Running     Preparing 2 seconds ago

可以看到兩個實例分別運行在兩個節(jié)點上。
進入兩個節(jié)點,查看服務(wù)狀態(tài)(為了方便閱讀,已調(diào)整輸出內(nèi)容):

$ docker-machine ssh manager1 docker ps -a
CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS     PORTS      NAMES
119f787622c2  nginx:alpine "nginx -g ..."  4 minutes ago Up 4 minutes  80/tcp, 443/tcp hello ...
$ docker-machine ssh worker2 docker ps -a
CONTAINER ID  IMAGE     COMMAND     CREATED     STATUS    PORTS       NAMES
5db707401a06  nginx:alpine "nginx -g ..."  4 minutes ago  Up 4 minutes 80/tcp, 443/tcp  hello ...

上面輸出做了調(diào)整,實際的 NAMES 值為:

helloworld.1.ay081uome3eejeg4mspa8pdlx
helloworld.2.16cvore0c96rby1vp0sny3mvt

記住上面這兩個實例的名稱?,F(xiàn)在我們來看這兩個跨主機的容器是否能互通:

首先使用 Machine 進入 manager1 節(jié)點,然后使用 docker exec -i 命令進入 helloworld.1 容器中 ping 運行在 worker2 節(jié)點的 helloworld.2 容器。

$ docker-machine ssh manager1 docker exec -i helloworld.1.ay081uome3eejeg4mspa8pdlx \
  ping helloworld.2.16cvore0c96rby1vp0sny3mvt
PING helloworld.2.16cvore0c96rby1vp0sny3mvt (10.0.0.4): 56 data bytes
64 bytes from 10.0.0.4: seq=0 ttl=64 time=0.591 ms
64 bytes from 10.0.0.4: seq=1 ttl=64 time=0.594 ms
64 bytes from 10.0.0.4: seq=2 ttl=64 time=0.624 ms
64 bytes from 10.0.0.4: seq=3 ttl=64 time=0.612 ms
^C

然后使用 Machine 進入 worker2 節(jié)點,然后使用 docker exec -i 命令進入 helloworld.2 容器中 ping 運行在 manager1 節(jié)點的 helloworld.1 容器。

$ docker-machine ssh worker2 docker exec -i helloworld.2.16cvore0c96rby1vp0sny3mvt \
  ping helloworld.1.ay081uome3eejeg4mspa8pdlx 
PING helloworld.1.ay081uome3eejeg4mspa8pdlx (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=0.466 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.465 ms
64 bytes from 10.0.0.3: seq=2 ttl=64 time=0.548 ms
64 bytes from 10.0.0.3: seq=3 ttl=64 time=0.689 ms
^C

可以看到這兩個跨主機的服務(wù)集群里面各個容器是可以互相連接的。

為了體現(xiàn) Swarm 集群的優(yōu)勢,我們可以使用虛擬機的 ping 命令來測試對方虛擬機內(nèi)的容器。

$ docker-machine ssh worker2 ping helloworld.1.ay081uome3eejeg4mspa8pdlx
PING helloworld.1.ay081uome3eejeg4mspa8pdlx (221.179.46.190): 56 data bytes
64 bytes from 221.179.46.190: seq=0 ttl=63 time=48.651 ms
64 bytes from 221.179.46.190: seq=1 ttl=63 time=63.239 ms
64 bytes from 221.179.46.190: seq=2 ttl=63 time=47.686 ms
64 bytes from 221.179.46.190: seq=3 ttl=63 time=61.232 ms
^C
$ docker-machine ssh manager1 ping helloworld.2.16cvore0c96rby1vp0sny3mvt
PING helloworld.2.16cvore0c96rby1vp0sny3mvt (221.179.46.194): 56 data bytes
64 bytes from 221.179.46.194: seq=0 ttl=63 time=30.150 ms
64 bytes from 221.179.46.194: seq=1 ttl=63 time=54.455 ms
64 bytes from 221.179.46.194: seq=2 ttl=63 time=73.862 ms
64 bytes from 221.179.46.194: seq=3 ttl=63 time=53.171 ms
^C

上面我們使用了虛擬機內(nèi)部的 ping 去測試容器的延遲,可以看到延遲明顯比集群內(nèi)部的 ping 值要高。

5. Swarm 集群負載

現(xiàn)在我們已經(jīng)學(xué)會了 Swarm 集群的部署方法,現(xiàn)在來搭建一個可訪問的 Nginx 集群吧。體驗最新版的 Swarm 所提供的自動服務(wù)發(fā)現(xiàn)與集群負載功能。

首先刪掉上一節(jié)我們啟動的 helloworld 服務(wù):

$ docker service rm helloworld                 
helloworld

然后在新建一個服務(wù),提供端口映射參數(shù),使得外界可以訪問這些 Nginx 服務(wù):

$ docker service create --replicas 2 --name helloworld -p 7080:80 --network=swarm_test nginx:alpine
9gfziifbii7a6zdqt56kocyun

查看服務(wù)運行狀態(tài):

$ docker service ls                                        
ID      NAME     REPLICAS   IMAGE      COMMAND
9gfziifbii7a helloworld   2/2    nginx:alpine

不知你有沒有發(fā)現(xiàn),雖然我們使用 --replicas 參數(shù)的值都是一樣的,但是上一節(jié)中獲取服務(wù)狀態(tài)時,REPLICAS 返回的是 0/2,現(xiàn)在的 REPLICAS 返回的是 2/2。

同樣使用 docker service ps 查看服務(wù)詳細狀態(tài)時(下面輸出已經(jīng)手動調(diào)整為更易讀的格式),可以看到實例的 CURRENT STATE 中是 Running 狀態(tài)的,而上一節(jié)中的 CURRENT STATE 中全部是處于 Preparing 狀態(tài)。

$ docker service ps helloworld
ID     NAME   IMAGE   NODE  DESIRED STATE  CURRENT STATE  ERROR
9ikr3agyi...  helloworld.1 nginx:alpine user-pc  Running     Running 13 seconds ago 
7acmhj0u...  helloworld.2 nginx:alpine worker2  Running     Running 6 seconds ago

這就涉及到 Swarm 內(nèi)置的發(fā)現(xiàn)機制了,目前 Docker 1.12 中 Swarm 已經(jīng)內(nèi)置了服務(wù)發(fā)現(xiàn)工具,我們不再需要像以前使用 Etcd 或者 Consul 這些工具來配置服務(wù)發(fā)現(xiàn)。對于一個容器來說如果沒有外部通信但又是運行中的狀態(tài)會被服務(wù)發(fā)現(xiàn)工具認為是 Preparing 狀態(tài),本小節(jié)例子中因為映射了端口,因此有了 Running 狀態(tài)。

現(xiàn)在我們來看 Swarm 另一個有趣的功能,當(dāng)我們殺死其中一個節(jié)點時,會發(fā)生什么。

首先 kill 掉 worker2 的實例:

$ docker-machine ssh worker2 docker kill helloworld.2.7acmhj0udzusv1d7lu2tbuhu4
helloworld.2.7acmhj0udzusv1d7lu2tbuhu4

稍等幾秒,再來看服務(wù)狀態(tài):

$ docker service ps helloworld
ID     NAME     IMAGE   NODE  DESIRED STATE CURRENT STATE  ERROR
9ikr3agyi... helloworld.1   nginx:alpine zuolan-pc Running    Running 19 minutes ago 
8f866igpl... helloworld.2   nginx:alpine manager1 Running    Running 4 seconds ago  
7acmhj0u...  \_ helloworld.2 nginx:alpine worker2  Shutdown    Failed 11 seconds ago ...exit...
$ docker service ls      
ID      NAME    REPLICAS IMAGE     COMMAND
9gfziifbii7a helloworld 2/2    nginx:alpine

可以看到即使我們 kill 掉其中一個實例,Swarm 也會迅速把停止的容器撤下來,同時在節(jié)點中啟動一個新的實例頂上來。這樣服務(wù)依舊還是兩個實例在運行。

此時如果你想添加更多實例可以使用 scale 命令:

$ docker service scale helloworld=3
helloworld scaled to 3

查看服務(wù)詳情,可以看到有三個實例啟動了:

$ docker service ps helloworld
ID     NAME    IMAGE   NODE  DESIRED STATE CURRENT STATE  ERROR
9ikr3agyi... helloworld.1  nginx:alpine user-pc  Running    Running 30 minutes ago 8f866igpl... helloworld.2  nginx:alpine manager1 Running    Running 11 minutes ago 7acmhj0u... \_ helloworld.2 nginx:alpine worker2  Shutdown    Failed 11 minutes ago  exit137
1vexr1jm... helloworld.3  nginx:alpine  worker2  Running    Running 4 seconds ago

現(xiàn)在如果想減少實例數(shù)量,一樣可以使用 scale 命令:

$ docker service scale helloworld=2
helloworld scaled to 2

至此,Swarm的主要用法都已經(jīng)介紹完了,主要講述了 Swarm 集群網(wǎng)絡(luò)的創(chuàng)建與部署。介紹了 Swarm 的常規(guī)應(yīng)用,包括 Swarm 的服務(wù)發(fā)現(xiàn)、負載均衡等,然后使用 Swarm 來配置跨主機容器網(wǎng)絡(luò),并在上面部署應(yīng)用。

關(guān)于Swarm的更多實戰(zhàn)例子,以后有機會還會寫的,就這樣啦。

總結(jié)

以上就是本文關(guān)于Docker Swarm 入門實例詳解的全部內(nèi)容,希望對大家有所幫助,感興趣的朋友可以參閱:Windows使用docker打開新窗口error解決辦法詳解Docker使用Linux iptables 和 Interfaces管理容器網(wǎng)絡(luò)、淺談Docker安全機制內(nèi)核安全與容器之間的網(wǎng)絡(luò)安全等,有什么問題可以隨時留言,小編會及時回復(fù)大家的。

相關(guān)文章

  • docker-compose啟動mysql雙機熱備互為主從的方法實現(xiàn)

    docker-compose啟動mysql雙機熱備互為主從的方法實現(xiàn)

    本文主要介紹了docker-compose啟動mysql雙機熱備互為主從的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Linux下定時自動備份Docker中所有SqlServer數(shù)據(jù)庫的腳本

    Linux下定時自動備份Docker中所有SqlServer數(shù)據(jù)庫的腳本

    這篇文章主要介紹了Linux下定時自動備份Docker中所有SqlServer數(shù)據(jù)庫?,編寫shell文件給出一個備份的范例,在Linux添加定時任務(wù),通過下列命令來檢測并安裝這個服務(wù),需要的朋友可以參考下
    2022-09-09
  • 利用Dockerfile制作java運行環(huán)境的鏡像的方法步驟

    利用Dockerfile制作java運行環(huán)境的鏡像的方法步驟

    這篇文章主要介紹了利用Dockerfile制作java運行環(huán)境的鏡像的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • docker如何查看容器/刪除(所有)容器/刪除鏡像

    docker如何查看容器/刪除(所有)容器/刪除鏡像

    這篇文章主要介紹了docker如何查看容器/刪除(所有)容器/刪除鏡像問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Docker容器互訪的三種方法

    Docker容器互訪的三種方法

    這篇文章主要介紹了Docker容器互訪的三種方法,幫助大家更好的理解和使用docker容器,感興趣的朋友可以了解下。
    2020-09-09
  • docker中使用GPU+rocksdb的詳細教程

    docker中使用GPU+rocksdb的詳細教程

    這篇文章主要介紹了docker中使用GPU+rocksdb,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • 清理docker在var目錄下的大量空間占用問題

    清理docker在var目錄下的大量空間占用問題

    這篇文章主要介紹了如何清理docker在var目錄下的大量空間占用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Docker中的COPY指令和ADD指令詳解

    Docker中的COPY指令和ADD指令詳解

    COPY?和?ADD?都是?Dockerfile?中的指令,有著類似的作用。它們允許我們將文件從特定位置復(fù)制到?Docker?鏡像中,這篇文章主要介紹了Docker中的COPY指令和ADD指令,需要的朋友可以參考下
    2022-06-06
  • docker打包前端鏡像的超詳細步驟

    docker打包前端鏡像的超詳細步驟

    要打包前端項目可以使用 Docker 容器技術(shù),下面這篇文章主要給大家介紹了關(guān)于docker打包前端鏡像的超詳細步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 在Mac OS X安裝Docker教程

    在Mac OS X安裝Docker教程

    本篇文章主要介紹了在OS X安裝Docker教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論