【问题标题】:Docker for mac - Not able to connect to a mongo replica set running on host from inside the containerDocker for mac - 无法从容器内部连接到主机上运行的 mongo 副本集
【发布时间】:2016-09-12 07:30:15
【问题描述】:

我正在运行 docker for mac 1.12.0 并尝试连接到我的 mac 上运行的 mongo 副本集。我在 ruby​​ 中使用 mongo gem 进行连接,并且在执行docker run 时还提到了--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: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 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: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:in setup' /home/ubuntu/.rvm/gems/ruby-2.1.8@automator/gems/mongo-1.12.5/lib/mongo/mongo_replica_set_client.rb:176:in initialize

我在守护程序模式下运行容器并尝试 ping 我的主机 ip,它成功了。所以从技术上讲,它应该可以工作,但事实并非如此。还有其他人遇到过类似的情况吗?

【问题讨论】:

  • 你是如何运行每个 mongo 容器的?

标签: ruby mongodb docker


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    不要使用不可移植的 mac 主机 IP(不同的开发人员,不同的网络,如办公室/家庭),请使用以下方法:https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c

    因此,您在 Mac 上为您的环回设备创建了一个别名 IP。然后,不要连接到容器中的 127.0.0.1,而是使用 10.254.254.254。

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

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 2022-06-20
      • 1970-01-01
      • 2019-11-29
      • 2023-03-07
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2019-06-02
      相关资源
      最近更新 更多