Docker中MongoDB使用容器IP连接MongoDB Compass超时
故障原因
你获取到的172.19.0.2是Docker自定义网桥分配给容器的内部私有IP,这个地址仅能在Docker网络内部的容器之间互相访问,宿主机外部(包括宿主机本机上运行的客户端、其他局域网/公网机器)都无法直接路由到这个地址,因此会出现连接超时。
正确连接方式
你已经在docker-compose.yml中配置了27017:27017的端口映射,同时给MongoDB加了--bind_ip 0.0.0.0参数允许所有来源访问,不需要使用容器内部IP连接,根据你的Compass所在环境选择对应连接地址即可:
- Compass运行在Docker所在的宿主机本地:直接使用连接串
mongodb://localhost:27017 - Compass运行在和宿主机同一局域网的其他设备上:将连接串中的IP替换为宿主机的局域网IP(通常是
192.168.x.x/10.x.x.x网段的网卡地址),同时确认宿主机防火墙放行了27017端口的入站规则 - Docker部署在公网云服务器上:将连接串中的IP替换为云服务器的公网IP,同时在云服务商控制台的安全组规则中放开27017端口的入站权限,确认服务器内部系统防火墙没有拦截该端口
额外注意
如果你后续给MongoDB开启了账号密码认证,需要在连接串中补充认证信息,格式为:mongodb://<你的数据库用户名>:<对应的密码>@<连接IP>:27017
未开启认证的场景下不需要加用户名密码参数,直接连接即可。
内容的提问来源于stack exchange,提问作者LowCool
相关产品推荐
相关产品推荐

