Docker 1.12 版本 Docker Swarm 集群(3)

[root@swarm-manager ~]#docker service tasks nginx ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE 56er48j3hin9ysdi3sb1chbn1 nginx.1 nginx nginx Preparing 2 minutes Running swarm-node-1 e7vtvpkbstznoi8ogihaao1f5 nginx.2 nginx nginx Running 2 minutes Running swarm-manager

这里 显示 swarm-node-1 节点中 last state 的状态为 preparing .

原因是 swarm-node-1 节点并没有 nginx 的镜像

在 node-1 节点pull nginx 镜像。

[root@swarm-node-1 ~]#docker pull nginx

node-1 节点pull 完毕以后,在使用 service ls 查看, 服务已经自动 启动了。

Swarm模式下的引擎拥有自组织与自修复特性,意味着它们能够识别我们定义的应用,并在出现差错时持续检查并修复环境。

举例来说,如果大家关闭某台运行有Nginx实例的设备,则另一节点上会自动启动一套新的容器。

如果关闭Swarm内半数设备所使用的网络交换机,则另外一半设备会顶替而上,接管对应工作负载。

[root@swarm-manager ~]#docker service ls ID NAME REPLICAS IMAGE COMMAND 1b9a58mlz330 nginx 2/2 nginx

[root@swarm-manager ~]#docker service tasks nginx ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE 56er48j3hin9ysdi3sb1chbn1 nginx.1 nginx nginx Running 32 minutes Running swarm-node-1 e7vtvpkbstznoi8ogihaao1f5 nginx.2 nginx nginx Running 32 minutes Running swarm-manager

2. docker service scale 命令, 这个命令是批量生成已有容器。

直接对 nginx=10 既可让 nginx 的容器生成10个。

[root@swarm-manager ~]#docker service scale nginx=10 nginx scaled to 10

使用 tasks 可以看到,已经在 2个 节点中生成了10个 nginx 容器

[root@swarm-manager ~]#docker service tasks nginx ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE 56er48j3hin9ysdi3sb1chbn1 nginx.1 nginx nginx Running 43 minutes Running swarm-node-1 e7vtvpkbstznoi8ogihaao1f5 nginx.2 nginx nginx Running 43 minutes Running swarm-manager 9vqxcmskj1nawo8wl0fqr32j2 nginx.3 nginx nginx Preparing 20 seconds Running swarm-manager 0vbqoyestm7ob6r1zq9jwj6il nginx.4 nginx nginx Running 20 seconds Running swarm-node-1 13jf9mkl4k5e57pq4hoeb68ru nginx.5 nginx nginx Running 20 seconds Running swarm-node-1 a0tk6ni6a02diuo5u3t870qk7 nginx.6 nginx nginx Running 20 seconds Running swarm-manager cwplvo5wfqp3rn5ynvxv9wv90 nginx.7 nginx nginx Running 20 seconds Running swarm-manager 7feil5xqc5hdkseasthkq2nyx nginx.8 nginx nginx Running 20 seconds Running swarm-node-1 8jt5yovxoz7t89edinb9ydao1 nginx.9 nginx nginx Starting 20 seconds Running swarm-node-1 dst4ydun1upham0o7e8a9hj3w nginx.10 nginx nginx Running 20 seconds Running swarm-manager

当我们想 缩容 时间, 也可以使用 scale nginx=2 让容器变成2个。

[root@swarm-manager ~]#docker service scale nginx=2 nginx scaled to 2

在运行 nginx=2 时可以看到 容器已经缩小为 2个 。

当我们使用 docker ps 查看,会发现容器被 stop 而非 rm 。

当我们使用 docker service rm nginx 的时候,所有的容器都会被 删除,请注意。

[root@swarm-manager ~]#docker service tasks nginx ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE 0vbqoyestm7ob6r1zq9jwj6il nginx.4 nginx nginx Running 12 minutes Running swarm-node-1 13jf9mkl4k5e57pq4hoeb68ru nginx.5 nginx nginx Running 12 minutes Running swarm-node-1

3. docker service update 命令。 可对 服务的启动 参数 进行 更新/修改。

上面我们新建了一个服务,命令为:

[root@swarm-manager ~]#docker service create --name nginx --replicas 2 -p 80:80/tcp nginx

如果我们先新加入了一个 node 想让 nginx 分布在 3个 node 上面, 我们可以使用 update 命令。

[root@swarm-manager ~]#docker service update --replicas 3 nginx nginx

更新完毕以后 我们可以查看到 REPLICAS 已经变成 3/3

[root@swarm-manager ~]#docker service ls ID NAME REPLICAS IMAGE COMMAND 1b9a58mlz330 nginx 3/3 nginx

docker service update 命令,也可用于直接 升级 镜像等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/163d9f6e5ece38e97dbc170f36dc2820.html