我已经从一个可以在本地运行的现有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端口。