作为尝试解决Hibernate OGM连接问题的一部分,我想查看是否从Robo 3T连接。
我构建MongoDB映像并开始运行。
docker ps:
MacBook-Pro:GoStopHandle NOTiFY $ docker ps容器ID图像
命令创建的状态端口 名称0375a68b9988 gostophandlemongodb:latest
“ docker-entrypoint.s…” 5秒前上了4秒
0.0.0.0:32844->27017/tcp goStopHandleMongo
容器的IP地址为:
docker inspect -f'{{范围 .NetworkSettings.Networks}} {{。IPAddress}} {{end}}'0375a68b9988 172.17.0.2
我进入了'mongo'外壳:
docker exec -it goStopHandleMongo mongo管理员
我添加了用户名和密码:
__mongometa__
然后我设置“身份验证”:
当我尝试连接时,我得到:
有什么建议吗?
答案 0 :(得分:1)
要进行连接,您只需在Robo3T上与localhost:27017
连接即可。
问题源于容器的内部IP与外部IP之间的混淆。内部IP是您在Docker网络中与您的主机网络隔离的容器的地址(除非明确桥接)。执行docker inspect
命令时,您在docker网络上获取了容器的IP。
您的容器正在docker网络中的0.0.0.0:32844
上侦听,并通过端口映射到端口27017暴露给主机。因此,如果您在docker网络中有另一个容器 ,则您应该使用172.17.0.2:32844
访问您的服务。但是,如果您在docker网络之外有任何东西,则应该使用localhost:27017
或[your host IP]:27017
访问mongodb。
希望这会有所帮助!
答案 1 :(得分:1)
直到我不得不重新启动Mac之后,我才意识到我仍然在运行MongoDB的本地实例,因此我没有连接到MongoDB的Docker实例,但是我的本地(已安装Brew)实例。
一旦我看到@Artjom Zabelin回答here并且“别忘了将端口映射到主机端口”
docker run --name some-mongo -p 27017:27017 -d mongo
它已连接到运行我的容器的MongoDB。
@Frank Yucheng Gu是正确的,我需要'localhost'。
答案 2 :(得分:0)
就我而言,我在Mac OSX上运行docker,而docker使用了我的主机IP地址,因此docker inspect CONTAINER_ID --format '{{ .NetworkSettings.IPAddress }}'
会给我一个空字符串。在Mac OSX和Windows上,Docker主机地址为host.docker.internal
。因此,在将robo 3t上的主机地址设置为host.docker.internal