执行docker service update时如何查看被截断的完整警告内容
解决方法
查看完整警告内容的3种方案
- 捕获实时事件日志:在执行服务更新命令前,先新开一个终端运行以下命令,即可捕获到未截断的完整警告信息:
docker events --filter 'type=service' --filter 'event=update' - 查看服务更新历史详情:更新完成后执行以下命令,
UpdateStatus字段会留存更新过程中的完整警告记录:docker service inspect captain-captain --pretty - 直接对比调度约束与节点配置:如果确定是调度相关报错,可以分别查看服务配置的调度规则和所有节点的标签,直接定位不匹配项:
- 查看服务调度约束:
docker service inspect captain-captain | grep Constraints- 查看所有节点的标签配置:
docker node ls -q | xargs docker node inspect --format '{{ .Description.Hostname }}: {{ .Spec.Labels }}'
警告产生的原因
该警告属于Docker Swarm服务更新过程中的临时调度提示:
- 你使用
--force参数强制更新服务时,Swarm默认会先尝试启动新副本,再关停旧版本副本,更新初始阶段如果节点的可用资源暂时被占满、或者服务配置的节点标签约束/亲和性规则暂时没有节点满足,就会抛出该提示。 - 后续服务更新能正常完成,是因为旧副本关停后释放了对应的资源、调度位置,新副本即可匹配到符合要求的节点,所以该警告仅反映初始调度的临时状态,不属于致命错误。
内容的提问来源于stack exchange,提问作者drmrbrewer
相关产品推荐
相关产品推荐

