在LAN

时间:2018-03-21 05:32:29

标签: node.js docker networking

我不确定这是网络问题还是Docker问题,但是我很难在LAN上的另一台机器上从服务器获得响应,该机器在端口3000上运行nodejs服务器在Docker容器中。我使用Mac计算机作为客户端,使用Linux计算机作为服务器。这些是我采取的步骤:

使用<name of computer>.local:<port>

测试与LAN上的独立计算机的连接
  • 在Linux机器上运行服务器(只使用没有容器的nod​​ejs)
  • 在Mac(客户端)计算机上运行curl <name of linux computer>.local:3000
  • 按预期工作

在Docker容器内部运行时测试localhost上与服务器的连接

  • 使用命令docker run -p 127.0.0.1:3000:3000 <name of image>
  • 在容器内的Linux机器上运行服务器
  • 在Linux机器上运行curl localhost:3000
  • 按预期工作

在Docker容器中运行服务器时测试与单独计算机的连接

  • 使用命令docker run -p 127.0.0.1:3000:3000 <name of image>
  • 在容器内的Linux机器上运行服务器
  • 在mac机器上运行curl <name of linux computer>.local:3000
  • 服务器无响应

1 个答案:

答案 0 :(得分:1)

127.0.0.1 / localhost上收听时,该容器无法在Linux主机外部访问。

要绑定到所有可用接口,请使用:

docker run -p 3000:3000 <image>

或者从ip address show

指定公开可用界面的地址
docker run -p <public_ip>:3000:3000 <image>