Docker 容器端口访问
Docker Container port access
我已经从现有的 dotnet 应用程序创建了一个图像,我可以在本地 运行。
在我的 docker 文件中
EXPOSE 5000
在 docker 中撰写:
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
从我的机器访问端口时超时
您已经提供标志 --name my-reports,但您的容器将名称报告为“vpi-harmony-reports”。一定要杀死容器和 re-run docker 命令。还要确保你没有防火墙阻止 5000 端口。
您的问题是您的应用在 localhost
上侦听。这仅在容器内可用。
您需要让您的应用在 public 网络接口上进行侦听。通过使用 0.0.0.0
作为 IP 最容易实现,这使得它在所有接口上侦听。
在您的情况下,让应用在 0.0.0.0:5000
上侦听。
我已经从现有的 dotnet 应用程序创建了一个图像,我可以在本地 运行。
在我的 docker 文件中
EXPOSE 5000
在 docker 中撰写:
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
从我的机器访问端口时超时您已经提供标志 --name my-reports,但您的容器将名称报告为“vpi-harmony-reports”。一定要杀死容器和 re-run docker 命令。还要确保你没有防火墙阻止 5000 端口。
您的问题是您的应用在 localhost
上侦听。这仅在容器内可用。
您需要让您的应用在 public 网络接口上进行侦听。通过使用 0.0.0.0
作为 IP 最容易实现,这使得它在所有接口上侦听。
在您的情况下,让应用在 0.0.0.0:5000
上侦听。