如何以全局模式(非复制)重新启动 Docker 服务?

How to restart a Docker service in global mode (non-replicated)?

在Docker Swarm模式下,如何重启单个全局服务?有可能吗?我知道您可以将复制的服务缩放到零,然后再缩放到 1+,但似乎没有任何文档说明如何对全局服务产生相同的效果。

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

文档只提到 you cannot scale global services:

The scale command enables you to scale one or more replicated services either up or down to the desired number of replicas. This command cannot be applied on services which are global mode.

您可以使用 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

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