从本机 Docker 主机连接时,使用主机发布端口 (published port);从共用网络 (Network) 的另一个容器 (Container) 连接时,使用服务名称 (Service name) 与容器端口 (target port)。内置“主机与容器的不同端口”示例中,database 声明 ports: 15432:5432,未指定主机绑定地址 (Host binding),api 与 database 共用 default 网络。从 api 出发的候选地址是 database:5432,从本机 Docker 主机出发则是 localhost:15432。这些地址根据本示例配置推导,未实际测试连接。
跨服务连接时,只有两个服务共用受支持的网络 (Network),诊断器才提供服务名称 (Service name) 的候选地址。容器 (Container) 内的 localhost 指向该容器自身。每个结果会列出配置路径,例如 services.database.ports[0] 与来源、目标服务的 networks;自行填入的监听端口 (Listening port) 则标记为 manual。若已声明网络没有交集,结果仅表示“两个服务没有共用的已声明网络”,不排除所有其他路径,也不实际测试 Docker 网络。
工具在浏览器 (Browser) 中分析单份 Compose YAML,不启动 Docker、不运行 curl,也不实际测试连接。输入上限为 1 MiB(1,048,576 个 UTF-8 字节 (Byte))、100 个服务,以及 ports/expose 合计 500 条项目。未解析变量 (Variable)、端口范围 (Port range)、外部网络 (External network)、network_mode、include 等不支持的配置会显示不支持或无法判断,不猜测结果。分析无法证明程序正在运行或监听。
关于这个主题的常见疑问与实用解答。
取决于连接起点。内置示例中,database 声明 15432:5432,未指定主机绑定地址 (Host binding),api 与 database 共用 default 网络 (Network)。从本机 Docker 主机出发,候选地址为 localhost:15432,使用主机发布端口 (published port);从 api 出发则为 database:5432,使用服务名称 (Service name) 与容器端口 (target port)。绑定地址或网络配置不同时,结果可能改变;两个候选都不代表已连通。
容器内的 localhost 指向该容器自身,不是另一个服务或 Docker 主机。来源与目标都在同一容器时,可以使用 localhost。要连接共用受支持网络 (Network) 的另一个服务,请使用服务名称 (Service name) 与容器端口 (target port),例如内置示例的 database:5432。工具仅指出这类配置不符,未测试程序是否接受连接。
只有 expose 不会发布主机端口。ports 若指定固定主机发布端口 (published port),工具才能推导固定主机候选地址;没有固定值时,无法根据 YAML 推出固定主机端口,Docker 可能在运行时 (Runtime) 动态分配,可用 docker compose port 查询。共用网络 (Network) 的服务不需要 expose 才能连接。若未声明端口,可填入你已确认的 TCP 监听端口 (Listening port);工具不会根据镜像 (Image) 名称推测。
在工具支持的配置模型中,来源与目标服务的已声明网络没有交集,因此无法提供两者之间直接使用服务名称 (Service name) 的候选地址。服务省略 networks 或使用空的 networks 集合时,Compose 会使用 default 网络。separate 结果不代表所有可能路径都被阻断,也不是完整连接测试;请核对列出的网络配置路径及其他明确配置的路径。
不代表。符合仅表示你填入的主机名称 (Hostname) 与端口 (Port) 和配置推导的候选相同。工具未检查程序是否启动、监听接口 (Listening interface) 或端口、协议 (Protocol) 处理、防火墙 (Firewall) 或身份验证 (Authentication),也不启动 Docker 或向服务发送网络请求 (Network request)。请另行确认这些运行时 (Runtime) 条件,才能判断服务是否可连接。
诊断器仅处理单份已解析的 Compose YAML,以及有限的普通 bridge 网络 (Bridge network) 与端口 (Port) 配置,未支持全部 Compose 功能。它不解析变量、端口范围 (Port range)、include、外部网络、profiles 或 network_mode;影响所选路径时,会显示无法判断或不支持,不编造地址。可先运行 docker compose config 解析变量、整合文件,再粘贴生成的 YAML;运行时 (Runtime) 依赖与剩余的不支持语义仍须另行确认。