从Docker连接到本地主机

时间:2019-08-23 22:56:10

标签: node.js docker

我有一个基本上运行Athena Tool Kit进行PDF生成的docker容器。 docker中的服务依次在以下URL上调用NodeJs应用程序:-http://localhost:3005

但是我在Docker控制台上看到一条消息:-

[GIN] 2019/08/23 - 22:24:46 | 500 |    1.850464ms |    192.168.99.1 |  GET     /convert
Error #01: Get http://localhost:3005/presentations/d0161fed-0ade-40a5-8dff-26696e553e96?id=d0161fed-0ade-40a5-8dff-26696e553e96&type=box-upload&params=: dial tcp 127.0.0.1:3005: connect: connection refused
captured errors:
Error #01: Get http://localhost:3005/presentations/d0161fed-0ade-40a5-8dff-26696e553e96?id=d0161fed-0ade-40a5-8dff-26696e553e96&type=box-upload&params=: dial tcp 127.0.0.1:3005: connect: connection refused.

Docker服务在http://192.168.99.100:8080本地运行。它试图从该地址呼叫127.0.0.1:3005。当它出现时,我得到上面的错误。

我猜这一定是允许从其他IP访问本地主机。

请让我知道需要做什么。

1 个答案:

答案 0 :(得分:0)

如我所见,您正在运行应用程序,第一个是带有码头容器的patelsan/presentations-pdf-toolkit,第二个是主机中的nodejs应用程序。

  在这里您的问题是两个应用程序在两个不同的位置运行   网络,nodejs应用程序的主机网络和Docker桥   默认网络作为容器的默认网络。

否则,如Docker文档Docker network host中所述:

  

主机网络驱动程序仅适用于Linux主机,不适用于Linux主机。   适用于Mac的Docker桌面,适用于Windows的Docker桌面或   适用于Windows Server的Docker EE。

我有3种针对本地和产品环境的解决方案:

  1. 本地环境:

作为本地环境解决方案,您可以将patelsan/presentations-pdf-toolkit容器分配给Docker中的默认host网络,这样两个应用程序可以相互通信:

 - run the `patelsan/presentations-pdf-toolkit` container:
 - `docker network connect host container_name`
  1. 生产环境:

您可以使用weave net service创建虚拟网络。

NP:

如果您的主机是Windows或Mac,建议您也将nodejs应用程序容器化,这样您就可以创建一个新网络,并且您的2个容器可以与该网络进行通信。