如何从码头集装箱到达机器端口

时间:2019-03-28 17:02:59

标签: docker

我有docker个容器,正在运行node应用。其他node应用在计算机级别的7000端口上运行。我的目标是使用docker创建从machineaxios应用的请求。

docker始于:

docker run -p 3000:3000 -p 4000:4000 -i -t gepick_env:latest -d --network='host'

docker片段上的客户端:

 ....
 axios.post(                                                                                                           
    'http://localhost:7000/predict',                                                                                    
    matchesToPredict                                                                                                    
  ).then(res => {...})
...  

我尝试使用本地的curl test

➜  gepick-devenv git:(master) ✗ curl http://localhost:7000/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>

尝试从docker做同样的事情:

首先,我通过以下命令登录docker

docker exec -i -t 6c9036c76463 /bin/bash

并尝试:

[root@6c9036c76463 /]# curl http://localhost:7000/
curl: (7) Failed to connect to ::1: Network is unreachable

`

1 个答案:

答案 0 :(得分:1)

默认情况下,Docker为容器创建并使用网络172.17.0.0/16

在该网络中,地址172.17.0.1被分配给运行docker daemon的主机(即您的机器)。

因此指向该地址应该可以:

 curl http://172.18.0.1:7000/

您可以通过执行以下操作获取特定容器的网关地址:

docker inspect --format "{{range .NetworkSettings.Networks}}{{ .Gateway }}{{end}}" \
   <container-name>