我有docker
个容器,正在运行node
应用。其他node
应用在计算机级别的7000端口上运行。我的目标是使用docker
创建从machine
到axios
应用的请求。
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
`
答案 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>