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

Docker Elastic日志插件报错:hosts参数缺失 求解决方案

Docker日志驱动连接Elastic Cloud报错:"A hosts flag is required"

环境信息

  • Ubuntu 22.04 Jammy
  • Docker 20.10.22
  • Elastic Logging插件版本:elastic/elastic-logging-plugin:8.5.3(已安装启用)

问题重现

无论是通过/etc/docker/daemon.json设置默认日志驱动,还是通过CLI参数单独配置容器日志,启动容器时均报错:

Error response from daemon: failed to initialize logging driver: error creating logger: LogDriver.StartLogging: error creating client config: A hosts flag is required

原daemon.json配置

{
  "log-driver": "elastic/elastic-logging-plugin:8.5.3",
  "log-opts": {
    "cloud_id": "...",
    "api_key": "...",
    "output.elasticsearch.index": "dockerlogs-wiki-%{+yyyy.ww}",
    "max-file": "10",
    "max-size": "4M"
  }
}

原CLI启动命令

docker create --name=container-name \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --restart=unless-stopped \
  -h container-name \
  --network=wikinet \
  --log-driver=elastic/elastic-logging-plugin:8.5.3 \
  --log-opt cloud_id="..." \
  --log-opt api_key="..." \
  --log-opt max-file=10 \
  --log-opt max-size=5M \
  ghcr.io/org/container-name:latest

解决方案与调试思路

1. 移除不兼容的日志选项

max-file和max-size是Docker默认json-file日志驱动的专属参数,Elastic Logging插件不支持这些配置,它们会干扰插件的配置解析流程,导致错误提示缺失hosts参数。

修改后的daemon.json:

{
  "log-driver": "elastic/elastic-logging-plugin:8.5.3",
  "log-opts": {
    "cloud_id": "你的Elastic Cloud ID",
    "api_key": "你的API密钥",
    "output.elasticsearch.index": "dockerlogs-wiki-%{+yyyy.ww}"
  }
}

修改后的CLI命令:

docker create --name=container-name \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --restart=unless-stopped \
  -h container-name \
  --network=wikinet \
  --log-driver=elastic/elastic-logging-plugin:8.5.3 \
  --log-opt cloud_id="你的Elastic Cloud ID" \
  --log-opt api_key="你的API密钥" \
  ghcr.io/org/container-name:latest

2. 验证Cloud ID与API Key有效性

  • 确认cloud_id是从Elastic Cloud控制台复制的完整字符串(格式类似deployment-name:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJ...)
  • 确认api_key拥有Elasticsearch的写入权限(可在Elastic Cloud控制台创建具有writer角色的API密钥)

3. 检查版本兼容性

确保Elastic Logging插件版本(8.5.3)与Elastic Cloud集群版本完全一致,版本不匹配会引发配置解析或通信问题。

4. 查看Docker守护进程日志定位细节

执行以下命令查看Docker重启后的详细日志,获取插件初始化时的具体错误:

journalctl -u docker.service -f

5. 用测试容器验证配置

先创建一个简单的测试容器,排除业务容器自身配置的干扰:

docker run -d --log-driver=elastic/elastic-logging-plugin:8.5.3 \
  --log-opt cloud_id="你的Elastic Cloud ID" \
  --log-opt api_key="你的API密钥" \
  alpine echo "test log"

如果测试容器能正常启动,再迁移配置到业务容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:21:36