如何连接到 Docker Toolbox 中托管的容器?

How do I connect to a container hosted in Docker Toolbox?

我正在尝试 运行 我的 ASP.NET 核心 1.1 网络 API 在 Docker 容器中,但我无法连接到网络 API浏览器或 curl。为了排除故障,我还启动了标准的 nginx 和 Apache httpd 容器,但也无法连接到这些容器,所以我认为这是一个 Docker/Docker Toolbox/configuration 问题,而不是我的应用程序的问题。

我将重点介绍我使用 nginx 和 Apache 所做的工作:

我正在 运行ning Docker Toolbox Windows 7 Professional,一切似乎都如我所料。

所以现在我关闭了容器中的 IIS 和 运行 nginx:

$ docker run -d -p 80:80 nginx
45bb1f373c11b820d8431de3eb3bf222d57d412de53e8625f461b62c4279e644

Docker 现在显示 nginx 运行ning:

$ 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 工具箱命令提示符下)或 Windows 中的 Web 浏览器:

$ curl http://localhost
curl: (7) Failed to connect to localhost port 80: Connection refused

如果我 运行 Apache 2.4 (httpd) 容器,我会得到完全相同的结果。

有什么想法吗?谢谢!彼得

我在另一个问题中找到了答案

因为 Docker Toolbox 运行 在轻量级 Linux VM 上,它有自己的 IP 地址。需要使用 DOCKER_HOSTlocalhost 映射到 VM 或通过其 IP 地址访问 VM,使用以下命令找到:

docker-machine ip default

由于您运行正在使用 VM,因此您需要遵循 here 中的 docker 文档。

之后 运行 下面的命令检查你的 VM 的 IP 地址。

docker-machine ip default

启动nginx,在浏览器中点击[ip default address]:port。有用!