Docker for mac – 无法连接到容器内主机上运行的mongo副本集

我运行docker为Mac 1.12.0,并试图连接到我的Mac上运行的mongo副本集。 我正在使用ruby的mongo gem连接,并且在执行--net="host"也提到了--net="host"选项。 我得到这样的错误:

Mongo :: ConnectionFailure:无法使用种子连接到副本集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 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 block in connect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:65:in同步'/home/ubuntu/.rvm/gems/ ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/connection/pool_manager.rb:65:in connect' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:210:in在连接区块中/home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/ mongo / mongo_replica_set_client.rb:199: synchronize' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:199:in synchronize' /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:in setup'/home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:524 setup' /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: initialize

我运行在守护进程模式的容器,并试图ping我的主机IP,它是成功的。 所以技术上它应该工作,但事实并非如此。 其他人面临类似的情况?

根据错误,您的应用程序试图在本地连接MongoDB( 127.0.0.1 ),这意味着在Docker容器中。 获取您的mac主机的IP地址(MongoDB运行的地方),并将其设置在您的应用程序configuration中。

考虑在docker compose帮助下在另一个docker容器中运行MongoDB。

而不是使用你的MAC主机IP,这将不是可移植的(不同的开发人员,像办公室/家庭不同的networking),使用这种方法: https : //gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c

所以你在你的mac上为你的环回设备创build一个别名ip。 然后,而不是连接到您的容器中的127.0.0.1,使用10.254.254.254。

一个非常类似的问题,在这里更简单的回答https://stackoverflow.com/a/38985163/3625317