Docker部署MongoDB容器内部可访问但MongoDB Compass连接失败求助
Docker运行MongoDB宿主机无法连接解决方案
getaddrinfo ENOTFOUND mongo.ks.local 报错的核心原因是:Docker内部的DNS服务仅在容器专属网络中生效,宿主机默认无法将mongo.ks.local这个容器名解析为正确的IP地址,因此无法通过该域名从外部访问容器内服务。
你可以根据需求选择以下任意一种方案解决:
方案1:直接使用localhost连接(最简单)
你的docker-compose已经配置了27017端口映射到宿主机,直接在MongoDB Compass中使用以下连接串即可:mongodb://<替换为你的用户名>:<替换为你的密码>@localhost:27017/?authSource=admin注意必须加
authSource=admin参数,因为MongoDB初始化的root用户默认存储在admin库中,不加该参数会默认从test库校验用户,会触发认证失败报错。方案2:配置本地hosts文件实现域名解析
如果你需要用mongo.ks.local域名连接,可以修改宿主机的hosts文件,手动绑定域名与本地IP:- Windows系统编辑
C:\Windows\System32\drivers\etc\hosts文件,Mac/Linux系统编辑/etc/hosts文件 - 在文件末尾新增一行:
127.0.0.1 mongo.ks.local保存后即可正常使用
mongo.ks.local作为连接地址访问MongoDB服务。- Windows系统编辑
方案3:端口占用排查
如果以上方案执行后仍然无法连接,先执行docker ps确认mongo.ks.local容器处于运行状态,再检查宿主机27017端口是否被其他程序占用:- Windows系统执行命令:
netstat -ano | findstr "27017" - Mac/Linux系统执行命令:
lsof -i:27017
如果查询到有其他进程占用27017端口,可以终止对应进程,或者修改docker-compose的端口映射配置,例如改为- 27018:27017,重启容器后使用对应端口连接即可。
- Windows系统执行命令:
内容的提问来源于stack exchange,提问作者Uzair
相关产品推荐
相关产品推荐

