码头工人服务更新
描述
更新服务
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
标志与--mount
on上 的标志具有相同的参数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 create
service create
更新工作
在将服务创建为作业时,通过将其模式设置为replicated-job
或,global-job
当执行时service create
,用于更新该服务的选项受到限制。
更新作业会立即停止所有正在进行的任务。该操作将为作业创建一组新的任务,并有效地重置其完成状态。如果更新之前有任何任务在运行,它们将被停止,并创建新的任务。
作业无法推出或回滚。用于配置更新或回滚设置的所有标志均不适用于作业模式。
要使用与先前运行相同的参数再次运行作业,可以使用该--force
标志强制对其进行更新。
上级命令
命令 | 描述 |
---|---|
码头工人服务 | 管理服务 |
相关命令
命令 | 描述 |
docker服务创建 | 创建一个新服务 |
码头工人服务检查 | 显示一项或多项服务的详细信息 |
码头工人服务日志 | 提取服务或任务的日志 |
码头工人服务ls | 列出服务 |
码头工人服务ps | 列出一项或多项服务的任务 |
码头工人服务 | 删除一项或多项服务 |
docker服务回滚 | 将更改还原到服务的配置 |
码头工人服务规模 | 扩展一个或多个复制服务 |
码头工人服务更新 | 更新服务 |