如何在全局模式(非复制)下重启Docker服务?

时间:2018-10-15 15:44:33

标签: docker docker-swarm

在Docker Swarm模式下,如何重新启动单个全局服务?可能吗我知道您可以将复制的服务从零扩展到1+,但是似乎没有关于如何对全局服务产生相同影响的文档。

我正在更新SSL证书,因此只想重新启动反向代理,而不是重新启动整个应用程序(通过重新启动docker服务)。

文档仅提及you cannot scale global services

  

scale命令使您可以将一个或多个复制服务向上或向下扩展到所需的副本数。此命令不能应用于全局模式的服务。

1 个答案:

答案 0 :(得分:3)

您可以强制对服务进行滚动更新,该更新可以全局调度,也可以使用docker service update --force ${service_name}复制。这是一个示例撰写文件:

version: '3'

services:
  busybox-global:
    image: busybox
    command: tail -f /dev/null
    deploy:
      mode: global

  busybox-replicated:
    image: busybox
    command: tail -f /dev/null
    deploy:
      replicas: 2

验证它已经开始:

$ docker ps
CONTAINER ID        IMAGE                               COMMAND                  CREATED              STATUS      PORTS                            NAMES
917aefdc910b        busybox:latest                      "tail -f /dev/null"      50 seconds ago       Up 31 seconds                                       sched_busybox-global.q44zx0s2lvu1fdduk800e5ini.hzn6jnzh7x539timamphzzw8a
7187fbbde0da        busybox:latest                      "tail -f /dev/null"      About a minute ago   Up 31 seconds                                       sched_busybox-replicated.1.i4nm7lpr1spmf0aorh1dtcqrc
f04a0062b088        busybox:latest                      "tail -f /dev/null"      About a minute ago   Up 31 seconds                                       sched_busybox-replicated.2.oc6zn0ziqg9wyzofokek8eb24

$ docker service ls
ID                  NAME                       MODE                REPLICAS            IMAGE     PORTS
gto0d5a6betb        sched_busybox-global       global              1/1                 busybox:latest 
yfq5mne0qhtj        sched_busybox-replicated   replicated          2/2                 busybox:latest 

$ docker service ps sched_busybox-global
ID                  NAME                                             IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
hzn6jnzh7x53        sched_busybox-global.q44zx0s2lvu1fdduk800e5ini   busybox:latest      bmitch-asusr556l    Running           Running 49 seconds ago

强制进行滚动更新:

$ docker service update --force sched_busybox-global
sched_busybox-global
overall progress: 1 out of 1 tasks
q44zx0s2lvu1: running   [==================================================>]
verify: Service converged

$ docker service ps sched_busybox-global                                
ID                  NAME                                                 IMAGE               NODE                DESIRED STATE       CURRENT STATE             ERROR               PORTS
zcfocrfjvvux        sched_busybox-global.q44zx0s2lvu1fdduk800e5ini       busybox:latest      bmitch-asusr556l    Running             Running 7 seconds ago
hzn6jnzh7x53         \_ sched_busybox-global.q44zx0s2lvu1fdduk800e5ini   busybox:latest      bmitch-asusr556l    Shutdown            Shutdown 10 seconds ago

$ docker ps -a
CONTAINER ID        IMAGE                               COMMAND                  CREATED              STATUS                            PORTS                            NAMES
3c5fe0f79e3d        busybox:latest                      "tail -f /dev/null"      About a minute ago   Up About a minute                                                  sched_busybox-global.q44zx0s2lvu1fdduk800e5ini.zcfocrfjvvuxz6tkge0pn0bq2
917aefdc910b        busybox:latest                      "tail -f /dev/null"      3 minutes ago        Exited (137) About a minute ago                                    sched_busybox-global.q44zx0s2lvu1fdduk800e5ini.hzn6jnzh7x539timamphzzw8a
7187fbbde0da        busybox:latest                      "tail -f /dev/null"      3 minutes ago        Up 2 minutes                                                       sched_busybox-replicated.1.i4nm7lpr1spmf0aorh1dtcqrc
f04a0062b088        busybox:latest                      "tail -f /dev/null"      3 minutes ago        Up 2 minutes                                                       sched_busybox-replicated.2.oc6zn0ziqg9wyzofokek8eb24

如果我强制对复制的服务进行更新,则同样会起作用。