Tunnel Doctor
cloudflared Docker localhost 排障
理解 Docker 网络命名空间,并从 cloudflared 容器内验证源站。
这通常表示什么
cloudflared 跑在容器里时,localhost 和 127.0.0.1 通常指 cloudflared 这个容器自己,不会自动指向 Docker 宿主机或另一个应用容器。
它不代表什么
把应用端口发布到 Docker 宿主机,并不会让 cloudflared 容器里的 localhost 自动指向该应用。不同容器仍然有独立网络命名空间。
典型脱敏日志
ERR Unable to reach the origin service: dial tcp 127.0.0.1:8080: connect: connection refused
按顺序检查
以下是基线命令示例。Windows Service 或 Kubernetes 请打开分析器并选择实际运行环境,分析器会改用平台原生命令。
docker inspect -f '{{json .NetworkSettings.Networks}}' <cloudflared-container>docker inspect -f '{{json .NetworkSettings.Networks}}' <origin-container>docker network inspect <shared-network>docker run --rm --network container:<cloudflared-container> curlimages/curl:8.12.1 -v <origin-url>常见误判
- 把容器内 localhost 当成宿主机。
- 容器之间网络不通,却继续给宿主机增加端口映射。
- 容器路由问题却去改 Cloudflare DNS 记录。
如何确认已经恢复
- cloudflared 和源站加入预期的共享 Docker 网络。
- 从 cloudflared 网络命名空间能通过服务名或容器名访问源站。
- 新的 Tunnel 请求不再出现 localhost 连接错误。
仍然不确定?
把相关 cloudflared 日志放进本地分析器。默认脱敏,不会把日志上传到 TRACER RECART 后端。
打开分析器