码头工人服务更新

描述

更新服务

API 1.24+  客户端和守护程序API都必须至少为 1.24, 才能使用此命令。docker version在客户端上使用命令检查客户端和守护程序API版本。

Swarm此命令与Swarm协调器一起使用。

用法

$ docker service update [OPTIONS] SERVICE

扩展说明

如指定参数所述更新服务。参数与相同docker service create。有关更多信息,请参考那里的描述。

通常,如果对服务所做的更改要求重新创建任务以使其生效,则更新服务只会导致将服务的任务替换为新任务。例如,仅更改 --update-parallelism设置不会重新创建任务,因为单个任务不受此设置的影响。但是,该--force标志将导致无论如何重新创建任务。这可用于执行滚动重启,而无需更改服务参数。

笔记

这是集群管理命令,必须在集群管理器节点上执行。要了解管理人员和工作人员,请参阅文档中的“ 群集模式”部分

有关此命令的示例用法,请参阅下面的示例部分

选项

名称,简写 默认 描述
--args 服务命令参数
--cap-add API 1.41+
添加Linux功能
--cap-drop API 1.41+
Drop Linux功能
--config-add API 1.30+
在服务上添加或更新配置文件
--config-rm API 1.30+
删除配置文件
--constraint-add 添加或更新展示位置约束
--constraint-rm 删除约束
--container-label-add 添加或更新容器标签
--container-label-rm 通过其键删除容器标签
--credential-spec
适用于托管服务帐户的API 1.29+凭据规范(仅Windows)
--detach-d API 1.29+
立即退出,而不是等待服务收敛
--dns-add API 1.25+
添加或更新自定义DNS服务器
--dns-option-add API 1.25+
添加或更新DNS选项
--dns-option-rm API 1.25+
删除DNS选项
--dns-rm API 1.25+
删除自定义DNS服务器
--dns-search-add API 1.25+
添加或更新自定义DNS搜索域
--dns-search-rm API 1.25+
删除DNS搜索域
--endpoint-mode 端点模式(vip或dnsrr)
--entrypoint 覆盖图像的默认ENTRYPOINT
--env-add 添加或更新环境变量
--env-rm 删除环境变量
--force API 1.25+
即使没有任何更改也可以强制更新
--generic-resource-add 添加通用资源
--generic-resource-rm 删除通用资源
--group-add API 1.25+
将额外的补充用户组添加到容器
--group-rm API 1.25+
从容器中删除以前添加的补充用户组
--health-cmd API 1.25+
命令运行以检查运行状况
--health-interval API 1.25+
运行检查之间的时间(ms | s | m | h)
--health-retries
需要报告API 1.25以上的API 1.25+连续故障
--health-start-period API 1.29+
容器初始化的开始时间,然后计算对不稳定的重试次数(ms | s | m | h)
--health-timeout API 1.25+
允许执行一次检查的最长时间(ms | s | m | h)
--host-add API 1.32+
添加自定义的主机到IP映射(host:ip)
--host-rm API 1.25+
删除自定义的主机到IP映射(host:ip)
--hostname API 1.25+
容器主机名
--image 服务图片标签
--init API 1.37+
在每个服务容器中使用init来转发信号并获取进程
--isolation API 1.35+
服务容器隔离模式
--label-add 添加或更新服务标签
--label-rm 通过其键删除标签
--limit-cpu 限制CPU
--limit-memory 限制记忆
--limit-pids API 1.41+ Swarm
Limit最大进程数(默认0 =无限)
--log-driver 记录驱动程序以进行服务
--log-opt 记录驱动程序选项
--max-concurrent API 1.41+
要同时运行的作业任务数(默认等于--replicas)
--mount-add 添加或更新服务上的安装
--mount-rm 通过其目标路径除去安装座
--network-add API 1.29+
添加网络
--network-rm API 1.29+
删除网络
--no-healthcheck API 1.25+
禁用任何容器指定的健康检查
--no-resolve-image API 1.30+
请勿查询注册表来解析图像摘要和支持的平台
--placement-pref-add API 1.28+
添加展示位置偏好设置
--placement-pref-rm API 1.28+
移除展示位置偏好设置
--publish-add 添加或更新已发布的端口
--publish-rm 通过目标端口删除已发布的端口
--quiet-q 禁止进度输出
--read-only API 1.28+
将容器的根文件系统挂载为只读
--replicas 任务数
--replicas-max-per-node API 1.40+
每个节点的最大任务数(默认0 =无限)
--reserve-cpu 备用CPU
--reserve-memory 保留记忆
--restart-condition 满足条件时重新启动(“无” |“发生故障” |“任何”)
--restart-delay 重新启动尝试之间的延迟时间(ns | us | ms | s | m | h)
--restart-max-attempts 放弃之前的最大重新启动次数
--restart-window 用于评估重启策略的窗口(ns | us | ms | s | m | h)
--rollback API 1.25+
回滚到以前的规范
--rollback-delay API 1.28+
任务回滚之间的延迟(ns | us | ms | s | m | h)
--rollback-failure-action API 1.28+
对回滚失败的操作(“暂停” |“继续”)
--rollback-max-failure-ratio API 1.28+
在回滚期间可以容忍的故障率
--rollback-monitor API 1.28+
每个任务回滚后监视失败的持续时间(ns | us | ms | s | m | h)
--rollback-order API 1.29+
回滚顺序(“先启动” |“先停止”)
--rollback-parallelism API 1.28+
同时回滚的最大任务数(0一次回滚所有任务)
--secret-add API 1.25+
在服务上添加或更新机密
--secret-rm API 1.25+
删除机密
--stop-grace-period 强制杀死容器之前等待的时间(ns | us | ms | s | m | h)
--stop-signal API 1.28+
停止容器的信号
--sysctl-add API 1.40+
添加或更新Sysctl选项
--sysctl-rm API 1.40+
删除Sysctl选项
--tty-t API 1.25+
分配伪TTY
--ulimit-add API 1.41+
添加或更新ulimit选项
--ulimit-rm API 1.41+
删除ulimit选项
--update-delay 更新之间的延迟(ns | us | ms | s | m | h)
--update-failure-action 更新失败时采取的措施(“暂停” |“继续” |“回滚”)
--update-max-failure-ratio
更新期间可容忍的API 1.25+失败率
--update-monitor API 1.25+
每个任务更新后的持续时间,以监视失败(ns | us | ms | s | m | h)
--update-order API 1.29+
更新顺序(“先启动” |“先停止”)
--update-parallelism 同时更新的最大任务数(一次更新为0)
--user-u 用户名或UID(格式:<名称| uid> [:<组| gid>])
--with-registry-auth 将注册表身份验证详细信息发送给群集代理
--workdir-w 容器内的工作目录

例子

更新服务

$ docker service update --limit-cpu 2 redis

无需参数更改即可执行滚动重启

$ docker service update --force --update-parallelism 1 --update-delay 30s redis

在此示例中,该--force标志导致服务的任务被关闭并被新任务代替,即使其他参数通常不会导致该任务发生也是如此。该--update-parallelism 1设置可确保一次仅替换一项任务(这是默认行为)。该 --update-delay 30s设置在任务之间引入了30秒的延迟,因此滚动重启会逐渐发生。

添加或删除安装

使用--mount-add--mount-rm选项添加或删除服务的绑定装载或卷。

以下示例创建一个将test-data卷 安装到的服务/somewhere。下一步将更新服务,以将other-volume 卷也安装到/somewhere-else卷上。最后一步将卸载/somewhere安装点,从而有效地删除test-data卷。每个命令都返回服务名称。

  • --mount-add标志与--mounton上 的标志具有相同的参数service create。有关详细信息,请参考参考中的“卷和绑定安装” 部分service create

  • --mount-rm标志采用target安装的路径。

$ docker service create \
    --name=myservice \
    --mount type=volume,source=test-data,target=/somewhere \
    nginx:alpine

myservice

$ docker service update \
    --mount-add type=volume,source=other-volume,target=/somewhere-else \
    myservice

myservice

$ docker service update --mount-rm /somewhere myservice

myservice

添加或删除已发布的服务端口

使用--publish-add--publish-rm标志可以添加或删除服务的已发布端口。您可以使用docker服务create 参考中讨论的短语法或长语法 。

下面的示例将已发布的服务端口添加到现有服务。

$ docker service update \
  --publish-add published=8080,target=80 \
  myservice

添加或删除网络

使用--network-add--network-rm标志添加或删除服务的网络。您可以使用docker服务create 参考中讨论的短语法或长语法 。

以下示例将新的别名添加到已连接到网络my-network的现有服务中:

$ docker service update \
  --network-rm my-network \
  --network-add name=my-network,alias=web1 \
  myservice

回滚到服务的先前版本

使用该--rollback选项可回滚到该服务的先前版本。

这会将服务还原为最新docker service update命令之前的配置。

以下示例将服务的副本数从4更新为5,然后回滚到以前的配置。

$ docker service update --replicas=5 web

web

$ docker service ls

ID            NAME  MODE        REPLICAS  IMAGE
80bvrzp6vxf3  web   replicated  0/5       nginx:alpine

回滚web服务...

$ docker service update --rollback web

web

$ docker service ls

ID            NAME  MODE        REPLICAS  IMAGE
80bvrzp6vxf3  web   replicated  0/4       nginx:alpine

其他选项也可以结合使用--rollback,例如,--update-delay 0s执行回滚而任务之间没有延迟:

$ docker service update \
  --rollback \
  --update-delay 0s
  web

web

还可以将服务设置为在更新失败时自动回滚到以前的版本。要设置自动回滚服务,请使用 --update-failure-action=rollback。如果未能成功更新的任务部分超过赋予的值,将触发回滚 --update-max-failure-ratio

回滚操作的速率,并行度和其他参数由通过以下标志传递的值确定:

  • --rollback-delay
  • --rollback-failure-action
  • --rollback-max-failure-ratio
  • --rollback-monitor
  • --rollback-parallelism

例如,使用设置的服务--update-parallelism 1 --rollback-parallelism 3 将在正常更新期间一次更新一个任务,但是在回滚期间,一次将回滚3个任务。在自动回滚过程中以及使用手动启动的回滚过程中,都应遵循这些回滚参数--rollback

添加或删除机密

使用--secret-add--secret-rm选项添加或删除服务的机密。

以下示例添加一个名为的机密ssh-2并删除ssh-1

$ docker service update \
    --secret-add source=ssh-2,target=ssh-2 \
    --secret-rm ssh-1 \
    myservice

使用模板更新服务

一些标志service update支持使用模板。请参阅service create参考。

指定隔离模式(Windows)

service update支持与 See相同的--isolation标志以供参考。service createservice create

更新工作

在将服务创建为作业时,通过将其模式设置为replicated-job或,global-job当执行时service create,用于更新该服务的选项受到限制。

更新作业会立即停止所有正在进行的任务。该操作将为作业创建一组新的任务,并有效地重置其完成状态。如果更新之前有任何任务在运行,它们将被停止,并创建新的任务。

作业无法推出或回滚。用于配置更新或回滚设置的所有标志均不适用于作业模式。

要使用与先前运行相同的参数再次运行作业,可以使用该--force标志强制对其进行更新。

上级命令

命令 描述
码头工人服务 管理服务
命令 描述
docker服务创建 创建一个新服务
码头工人服务检查 显示一项或多项服务的详细信息
码头工人服务日志 提取服务或任务的日志
码头工人服务ls 列出服务
码头工人服务ps 列出一项或多项服务的任务
码头工人服务 删除一项或多项服务
docker服务回滚 将更改还原到服务的配置
码头工人服务规模 扩展一个或多个复制服务
码头工人服务更新 更新服务