我正在运行 docker for mac 1.12.0 并尝试连接到在我的 mac 上运行的 mongo 副本集。我在 ruby 中使用 mongo gem 进行连接,并且在执行 docker run
时还提到了 --net="host"
选项。我收到这样的错误:
Mongo::ConnectionFailure: Cannot connect to a replica set using seeds 127.0.0.1:27017, 127.0.0.1:27018 /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:272:in
get_valid_seed_node' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:178:in
connect_to_members' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:70:inblock in connect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:65:in
synchronize' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:65:inconnect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:210:in
block in connect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:199:insynchronize' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:199:in
connect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_client.rb:656:insetup' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:524:in
setup' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:176:ininitialize
我以守护进程模式运行容器并尝试 ping 我的主机 ip,它成功了。所以从技术上讲,它应该可以工作,但事实并非如此。还有其他人遇到过类似情况吗?
最佳答案
根据您收到的错误,您的应用程序正在尝试在本地连接 MongoDB (127.0.0.1
),这意味着在 docker 容器内。获取您的 mac 主机(运行 MongoDB 的地方)的 IP 地址并将其设置在您的应用程序配置中。
考虑在 docker compose
的帮助下在另一个 docker 容器中运行 MongoDB .
关于ruby - Docker for mac - 无法从容器内部连接到主机上运行的 mongo 副本集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39445321/