使用docker service ls查看正在运行服务的列表:
[root@centos7-Master ~]# docker service ls ID NAME REPLICAS IMAGE COMMAND 50r6d8w4cwzi helloworld 1/1 alpine ping docker.com 3.2 查询Swarm中服务的信息在部署了服务之后,登录到manager节点,运行下面的命令来显示服务的信息。参数--pretty使命令输出格式化为可读的格式,不加--pretty可以输出更详细的信息:
[root@centos7-Master ~]# docker service inspect --pretty helloworld ID: 50r6d8w4cwzi45s8865p9pdn4 Name: helloworld Mode: Replicated Replicas: 1 Placement: UpdateConfig: Parallelism: 1 On failure: pause ContainerSpec: Image: alpine Args: ping docker.com Resources:使用命令docker service ps <SERVICE-ID>可以查询到哪个节点正在运行该服务:
[root@centos7-Master ~]$ docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR 541qk5jdrb71ypna9y5zw2l33 helloworld.1 alpine centos7-Master Running Running 12 minutes ago 3.3 在Swarm中动态扩展服务登录到manager节点,使用命令docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>来将服务扩展到指定的实例数:
[root@centos7 ~]# docker service scale helloworld=5 helloworld scaled to 5再次查询服务的状态列表:
[root@centos7-Master ~]$ docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR 541qk5jdrb71ypna9y5zw2l33 helloworld.1 alpine centos7-Master Running Running 16 minutes ago 96s46qpl3qd94ntw3n2bt81m8 helloworld.2 alpine centos7-WorkerB Running Running 17 seconds ago 6p1u8hj4y31i4pjmwh8zvvf2h helloworld.3 alpine centos7-WorkerA Running Running 8 seconds ago 02jn1fxkx8juwizk6fjgv9r9n helloworld.4 alpine centos7-WorkerA Running Running 9 seconds ago btbrvtnjjmgyb8emwmznziho9 helloworld.5 alpine centos7-Master Running Running 27 seconds ago可见Swarm集群创建了4个新的task来将整个服务的实例数扩展到5个。这些服务分布在不同的Swarm节点上。
3.4 删除Swarm集群中的服务在manager节点上运行docker service rm helloworld便可以将服务删除。删除服务时,会将服务在各个节点上创建的容器一同删除,而并不是将容器停止。
此外Swarm模式还提供了服务的滚动升级,将某个worker置为维护模式,及路由网等功能。在Docker将Swarm集成进Docker引擎后,可以使用原生的Docker CLI对容器集群进行各种操作,使集群的部署更加方便、快捷。
3.5 更新Swarm集群中的服务版本在前面的步骤中, 我们扩展了一个服务的多个实例, 如上所示, 我们扩展了基于Tomcat Server 8.5.8的Docker镜像。 假如,现在我们需要使用Tomcat Server 8.6.0版本做为Docker容器版本来替换原有的Tomcat Server 8.5.8版本。
在Swarm集群中的Manager节点上执行操作,用于完成服务版本的更新。
[root@centos7-Master ~]# docker service update --image tomcat:8.6.0 tomcat-service tomcat-service服务版本更新计划将按以下步骤执行:
停止第一个任务
计划对已停止任务的更新
启动已更新任务的容器
如果任务更新返回“RUNNING”状态,等待指定的延迟时间后,停止下一个任务
如果在任务更新时,任务返回“FAILED”状态,将会暂停更新。
重新启动一个暂停更新的服务, 可以使用docker service update <SERVICE-ID>命令, 例如:
[root@centos7-Master ~]# docker service update tomcat-service查看服务版本更新结果
[root@centos7-Master ~]# docker service ps tomcat-service 3.6 停用Swarm集群中的服务节点如���我们想要停止Swarm集群中某个服务的Worker节点, 我们可以使用docker node update --availability drain <Node-ID>来停止Worker节点上的服务。
[root@centos7-Master ~]# docker node update --availability drain centos7-WorkerA centos7-WorkerA在停止Worker节点上的服务后, 我们可以通过docker node inspect --pretty <Node-ID>查看节点状态。
[root@centos7-Master ~]# docker node inspect --pretty centos7-WorkerA ID: ayxx0k8p3hq04zjuemq6p43rq Hostname: centos7-WorkerA Joined at: 2016-12-26 07:07:13.422672934 +0000 utc Status: State: Ready Availability: Drain Platform: Operating System: linux Architecture: x86_64 Resources: CPUs: 4 Memory: 3.703 GiB Plugins: Network: bridge, host, null, overlay Volume: local Engine Version: 1.12.5