【问题标题】:How do I connect to a container hosted in Docker Toolbox?如何连接到 Docker Toolbox 中托管的容器?
【发布时间】:2017-01-11 08:11:45
【问题描述】:

我正在尝试在 Docker 容器中运行我的 ASP.NET Core 1.1 Web API,但我无法从浏览器或curl 连接到 Web API。为了排除故障,我还启动了标准的 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 工具箱命令提示符内)或 Windows 中的网络浏览器:

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

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

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

【问题讨论】:

    标签: nginx asp.net-core .net-core docker-toolbox


    【解决方案1】:

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

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

    docker-machine ip default
    

    【讨论】:

      【解决方案2】:

      当您在 VM 上运行时,您需要遵循来自here 的此 docker 文档。

      然后运行以下命令来检查你的虚拟机的 IP 地址。

      docker-machine ip default
      

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

      【讨论】:

        猜你喜欢
        • 2021-06-05
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 2021-03-11
        • 1970-01-01
        • 2018-09-16
        • 2017-04-25
        • 2019-01-25
        相关资源
        最近更新 更多