首页 > 解决方案 > 使用 docker 内部 IP 地址时没有得到输出

问题描述

我正在为我的 asp.net 核心 Web api 应用程序使用 docker 容器,并且容器已启动并正在运行。

现在我正在使用以下命令获取 docker 内部 IP 地址,

docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" d986472784cb并将 IP 地址获取为172.20.0.2.

现在在浏览器中点击以下网址时我没有得到任何结果

http://172.20.0.2/WeatherForecast,看到ERR_CONNECTION_TIMED_OUT错误。

本地地址https://localhost:32772/weatherforecast工作正常。

可能是什么问题?

标签: dockercontainersasp.net-core-3.1

解决方案


容器私有 IP 在多种常见情况下根本不起作用:

  • 如果您不是从同一主机调用,则根本无法访问容器专用 IP
  • 如果完全涉及 VM(Windows 上的 Docker Toolbox、Windows 或 Mac 上的 Docker Desktop),则根本无法访问容器专用 IP
  • 如果您不在同一个 Docker 内部网络上,您可能无法访问容器专用 IP

由于它在很多环境中都不起作用,因此我根本不建议查找此 IP 地址:忘记docker inspect存在特定命令。在浏览器中,使用您主机的 IP 地址或 DNS 名称(或者localhost如果容器和浏览器在同一系统上,但如果涉及 Docker Toolbox,则不使用)和发布的端口号(docker run -p选项,Docker Composeports:选项,第一个端口号来自那对)。


推荐阅读