我有VS2017。Dotnet core 2.1 我的是Windows 10和安装了Windows的Docker。 Windows版本是10.0.16299.904 Docker版本是客户端和服务器的社区18.09.0
我只是创建了一个新的File-> New-> Project-> .Net Core-> Asp.net Core Web Application->启用了Docker复选框的Api。
我没有进行任何更改,而是尝试在IIS Express和Docker中运行它,并且在默认情况下将/ api / values控制器响应显示为Values。
现在在ps提示符下,我可以看到图像,因此创建了相应的容器。
在docker ps -a命令上,它列出了端口1598-> 80 / tcp的正在运行的容器
我用docker inspect列出了json,显示的IP是172.22.74.213。
我使用http://172.22.74.213:1598/api/values访问我的api,但出现以下错误:
使用docker inspect表示容器正在运行。 我使用错误的URL来访问我的api吗?
答案 0 :(得分:2)
这与VS 2017
构建的图像有关。
尝试通过
建立自己的图像D:\xx\TestPro>docker build -f DockerTestPro/dockerfile -t docker0115 .
然后通过
运行容器docker run -it -p 8066:80 docker0115
然后,通过http://localhost:8066/
答案 1 :(得分:0)
是的,您使用的IP错误。只需按http://localhost:1598/api/values
,因为Docker for Windows不会(默认)为暴露的端口绑定到其他IP。
此外,请确保在运行容器时实际上公开了端口。另请查看有关允许任何主机名从this answer to a similar question连接的dotnet API的详细信息:
检查是否也在启动映像时打开了端口:
docker run -it -p 5000:5000 <imagename>
这会将实例内部的端口5000打开到您的端口
5000
上 本地计算机,然后应该可以在127.0.0.1:5000
上访问,或者localhost:5000
。您还应该确保您接受以下主机名
Main()
中的Program.cs
与您的.UseUrls("http://*:5000/")
WebHostBuilder
。
在您的情况下,您将需要以下端口绑定:1598:80
。