【发布时间】:2017-12-04 16:27:45
【问题描述】:
我有两个 Docker 容器正在运行。一个是 MongoDB,一个是运行简单的 REST API 的容器,应该能够查询 MongoDB 容器。
端口映射
- 0.0.0.0:28001->27017/tcp (mongodb)
- 0.0.0.0:3000->3000/tcp (restapi)
用于 MongoDB 映像的命令
docker run -p 28001:27017 -v /home/ubuntu/docker/mongodb/mongod.conf:/etc/mongod.conf --name mongodb_container -d mongodb_image
我重写了 mongo.conf 添加 0.0.0.0 来绑定 IP
net:
port: 27017
bindIp: [127.0.0.1,0.0.0.0]
用于 API 的运行命令:
docker container run -it -v /home/ubuntu/docker/node_modules:/usr/lib/node_modules -p 3000:3000 --name rest_container rest_image /bin/bash
我可以查询其余的 api,但它挂起并超时(从不返回结果)。其余配置文件如下所示:
{ "db": {
'port': 28001,
'host': "192.168.123.191"
},
'server': {
'port': 3000,
'timeout': 120,
'address': "0.0.0.0"
},
'flavor': "regular",
'debug': true
};
rest api 容器的内部 IP:
172.17.0.4
mongodb容器的内部IP:
172.17.0.2
我知道 API 可以正常工作,因为我无需在 docker 上运行程序就可以进行查询。端口 27017 和 3000 都暴露在 Dockerfile 中。在 mongodb 容器中,我还可以看到每次执行查询时连接数都会增加。
【问题讨论】:
-
你使用哪个IP从容器中查询?
-
看看
docker-compose,我想这就是你所需要的。 -
@ChrisStryczynski 192.168.123.191:28001
-
你从哪里得到这个 IP?
-
@ChrisStryczynski 这是主机的 IP。如果我尝试使用容器内部 IP 连接失败。