You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询运行中Docker容器或服务的生效--log-opt配置?

如何查看Docker服务生效的--log-opt配置

这个问题确实挺让人头疼的——明明用docker service update my_service --log-opt mode=non-blocking更新了日志配置,但常规的docker service inspect或docker container inspect好像找不到生效的参数。我给你几个可靠的方法:

1. 从服务的任务模板中查询

Docker服务的日志配置会存在服务的任务模板(TaskTemplate)里,你可以用jq工具直接提取这部分内容(如果没装jq也可以手动在inspect输出里找):

docker service inspect my_service | jq '.[0].Spec.TaskTemplate.ContainerSpec.LogConfig'

输出应该会包含你设置的mode=non-blocking参数,比如:

{
  "Type": "json-file",
  "Options": {
    "mode": "non-blocking"
  }
}

如果没有jq,也可以用grep配合--format参数简化输出:

docker service inspect --format '{{.Spec.TaskTemplate.ContainerSpec.LogConfig}}' my_service

2. 查询具体任务的运行时配置

服务的每个任务(task)会继承服务模板的配置,你可以先找到服务对应的任务ID,再查看任务的详细配置:

  • 第一步,获取任务ID(用--no-trunc避免ID被截断):
docker service ps my_service --no-trunc
  • 第二步,用任务ID查询配置:
docker inspect <task-id>

在输出里找到Spec -> ContainerSpec -> LogConfig -> Options,这里就能看到生效的日志参数了。

3. 验证容器的实际日志行为(可选)

如果想确认配置真的生效了,可以测试容器的日志阻塞行为:比如往容器里快速写入大量日志,看容器会不会因为日志阻塞而挂掉——如果mode=non-blocking生效,容器会丢弃超出缓存的日志而不是停止。

另外要注意:如果你的服务在更新配置后没有滚动重启容器,旧容器还是会用原来的日志配置,只有新启动的容器才会应用新配置。可以用docker service update my_service --force强制滚动更新所有容器,确保配置生效。

内容的提问来源于stack exchange,提问作者Tomcat Engineering

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:32:18