Docker容器端口访问



我已经从一个可以在本地运行的现有dotnet应用程序中创建了一个映像。

在我的案卷里EXPOSE 5000

在docker compose中:ports: [5000:5000]

我使用以下命令启动容器:docker run -d -p 5000:5000 --name my-reports my-reports:latest

运行docker ps命令:

NAMES
106c4929c0d6   my-reports:latest   "dotnet my-reports"   8 minutes ago   Up 8 minutes   0.0.0.0:5000->5000/tcp   my-reports

入口点的输出:

info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:app

netstat显示:

C:app>netstat -a
Active Connections
Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:135            106c4929c0d6:0         LISTENING
TCP    0.0.0.0:5985           106c4929c0d6:0         LISTENING
TCP    0.0.0.0:47001          106c4929c0d6:0         LISTENING
TCP    0.0.0.0:49152          106c4929c0d6:0         LISTENING
TCP    0.0.0.0:49153          106c4929c0d6:0         LISTENING
TCP    0.0.0.0:49154          106c4929c0d6:0         LISTENING
TCP    0.0.0.0:49155          106c4929c0d6:0         LISTENING
TCP    0.0.0.0:49160          106c4929c0d6:0         LISTENING
TCP    127.0.0.1:5000         106c4929c0d6:0         LISTENING

但我在尝试通过localhost:5000 从我的机器访问端口时超时

您的问题是您的应用程序在localhost上侦听。这只在容器内可用。

你需要让你的应用程序在公共网络接口上监听。最容易实现的是使用0.0.0.0作为IP,这使它可以监听所有接口。

在您的情况下,让应用程序在0.0.0.0:5000上侦听。

您已经提供了flag--name my reports,但您的容器将名称报告为"vpi和谐报告";。一定要终止容器并重新运行docker命令。还要确保你没有防火墙阻止5000端口。

最新更新