1、创建service #-p 80:80 http端口映射到公网 --replicas 2 2个容器 --name 服务名称 dockercloud/hello-world 镜像名称 test@swarm-master:~$ docker service create -p 80:80 --replicas 2 --name myhelloworld2 dockercloud/hello-world 9ypnuj72zc2jufhkh7cfp413r 2、缩扩容器 2.1服务容器数量缩减少为1个 test@swarm-master:~$ docker service scale myhelloworld2=1 myhelloworld2 scaled to 1 如下图所示myhelloworld2 只有一个容器,并且在swarm-master(192.168.1.80)上面
访问swarm-master(192.168.1.80),swarm-node1(192.168.1.73),指向同一个容器(f52a4217f329)。 test@swarm-master:~$ curl http://192.168.1.80/|grep hostname % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 473 0 473 0 0 45245 0 --:--:-- --:--:-- --:--:-- 52555 <h3>My hostname is f52a4217f329</h3> </body> test@swarm-master:~$ curl http://192.168.1.73/|grep hostname % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 473 0 473 0 0 38234 0 --:--:-- --:--:-- --:--:-- 43000 <h3>My hostname is f52a4217f329</h3> </body> #疑问 容器在swarm-master(192.168.1.80)启动,但是在swarm-node1(192.168.1.73)仍能访问 #service 映射端口是在所有swarm节点映射相同端口,当访问的机器没有该端口对应的容器,会跳转到其他有容器的节点上面 2.2 服务器容器数量扩展为3 test@swarm-master:~$ docker service scale myhelloworld2=3 myhelloworld2 scaled to 3 #如下图3个容器,swarm-node1 2个容器,swarm-master 1个容器 #访问测试 3次请求,分别分配到3台容器上面,开来是平均分配的。 test@swarm-master:~$ curl http://192.168.1.80/|grep hostname % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 473 0 473 0 0 31349 0 --:--:-- --:--:-- --:--:-- 36384 <h3>My hostname is f52a4217f329</h3> </body> test@swarm-master:~$ curl http://192.168.1.80/|grep hostname % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 473 0 473 0 0 37743 0 --:--:-- --:--:-- --:--:-- 43000 <h3>My hostname is 6adf7d28c639</h3> </body> test@swarm-master:~$ curl http://192.168.1.80/|grep hostname % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 473 0 473 0 0 30660 0 --:--:-- --:--:-- --:--:-- 39416 <h3>My hostname is 58ab1ee1cce2</h3> </body> 3 服务升级 #懒得搭建registry服务器,就随便打个tag 作为升级image,还好swarm一个节点有镜像其他节点都可以用。 做个测试镜像mytest test@swarm-master:~$ docker image tag dockercloud/hello-world mytest 看下当前容器版本 test@swarm-master:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f52a4217f329 dockercloud/hello-world:latest "/bin/sh -c /run.sh" About an hour ago Up About an hour 80/tcp myhelloworld2.2.ia09q7zyok9vti8np47bpartw 升级容器版本 test@swarm-master:~$ docker service update --image mytest myhelloworld2 查看升级后版本 test@swarm-master:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dfca160c1097 mytest:latest "/bin/sh -c /run.sh" 22 seconds ago Up 10 seconds 80/tcp myhelloworld2.3.3vgw0u1fza6isoao9f8o6iadb 0b2b68c21ab4 mytest:latest "/bin/sh -c /run.sh" 37 seconds ago Up 25 seconds 80/tcp myhelloworld2.2.9x9lyv443tkk9b68pt11spmt0 4 查看服务 test@swarm-master:~$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS neljh6f52ziz myhelloworld2 replicated 2/2 mytest:latest *:80->80/tcp 5 删除服务 test@swarm-master:~$ docker service rm myhelloworld2
myhelloworld2
|
|