Docker环境下K6写入InfluxDB1.8报connection refused如何解决
问题根因
你当前命令中配置的InfluxDB地址http://localhost:8086指向的是K6容器自身的回环地址,而非运行在Windows宿主或其他容器中的InfluxDB服务,因此触发连接拒绝错误。
解决方案
方案1:使用Docker桌面宿主域名(最快生效)
Windows下Docker Desktop默认支持容器内通过host.docker.internal域名访问宿主机器的端口,按以下操作即可快速修复:
- 先确认你启动InfluxDB容器时已经做了端口映射,启动命令需包含
-p 8086:8086参数,把容器的8086端口映射到Windows宿主的8086端口 - 修改K6启动命令为:
docker run -v //c/loadtesting:/src -i loadimpact/k6 run --out influxdb=http://host.docker.internal:8086/myk6db /src/K6-script.js
方案2:自定义Docker网络(适合整套监控栈长期使用)
如果你的InfluxDB、Grafana都用Docker部署,建议用自定义网络实现容器间的稳定通信,不用依赖宿主端口映射:
- 第一步:创建专用桥接网络
docker network create k6-monitor
- 第二步:重新启动InfluxDB容器,加入该网络并指定容器名(提前备份已有数据避免丢失)
docker run -d \ --name influxdb \ --network k6-monitor \ -p 8086:8086 \ -e INFLUXDB_DB=myk6db \ -v influxdb-data:/var/lib/influxdb \ influxdb:1.8
这里添加了INFLUXDB_DB环境变量,容器启动时会自动创建myk6db数据库,不需要手动进入容器创建。
- 第三步:启动K6时加入同一网络,直接用InfluxDB的容器名作为访问地址
docker run -v //c/loadtesting:/src \ --network k6-monitor \ -i loadimpact/k6 run \ --out influxdb=http://influxdb:8086/myk6db \ /src/K6-script.js
后续启动Grafana时也加入k6-monitor网络,配置InfluxDB数据源时直接填写地址http://influxdb:8086即可,不需要映射端口到宿主也能正常通信。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

