我尝试在 Docker 容器中运行 ASP.NET Core 1.1 Web API,但无法从浏览器或curl
。为了进行故障排除,我还启动了标准 nginx 和 Apache httpd 容器,但也无法连接到这些容器,因此我相信这是 Docker/Docker Toolbox/配置问题,而不是我的应用程序的问题。
我将重点介绍我使用 nginx 和 Apache 所做的事情:
我在 Windows 7 Professional 上运行 Docker Toolbox,一切似乎都按我的预期运行。
- Docker 命令一切按预期工作
- 我可以访问底层 Windows 文件系统
- 我可以得到预期的结果
curl http://localhost
(如果我在Windows 7上启动默认的IIS网站)
所以现在我关闭 IIS 并在容器中运行 nginx:
$ docker run -d -p 80:80 nginx
45bb1f373c11b820d8431de3eb3bf222d57d412de53e8625f461b62c4279e644
Docker 现在显示 nginx 正在运行:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45bb1f373c11 nginx "nginx -g 'daemon off" 47 seconds ago Up 48 seconds 0.0.0.0:80->80/tcp, 443/tcp admiring_pike
但我无法连接curl
(在 Docker Toolbox 命令提示符中)或 Windows 中的 Web 浏览器:
$ curl http://localhost
curl: (7) Failed to connect to localhost port 80: Connection refused
如果我运行 Apache 2.4 (httpd) 容器,我会得到完全相同的结果。
有任何想法吗?谢谢!彼得
我在另一个问题中找到了答案here https://stackoverflow.com/questions/33022250/connection-refused-on-nginx-docker-container.
由于 Docker Toolbox 运行在轻量级 Linux VM 上,因此它有自己的 IP 地址。需要要么映射localhost
到虚拟机使用DOCKER_HOST
我通过使用以下命令找到的 IP 地址访问虚拟机:
docker-machine ip default
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)