连接到 MongoDB 的 Dockerized 实例时身份验证失败

连接到 MongoDB 的 Dockerized 实例时身份验证失败

我已经花了很长时间连接到 Dockerized MongoDB 实例。我能够为每个 MongoDB 容器配置一个这些说明在我的本地开发机器上,但相同的步骤似乎在生产中不起作用。

我创建、运行和连接容器的具体步骤:

  1. 创建并运行容器

    docker run --name prod-mongo -p 27017:27017 -d mongo --auth

  2. 添加了初始用户:

    docker exec -it prod-mongo mongo admin

    db.createUser({user:'skipper', pwd:'skipperspassword', roles:[{role:'userAdminAnyDatabase',db:'admin'}] });

  3. 从另一个 Mongo 容器成功连接到 Docker 容器:

    docker run -it --rm --link prod-mongo:mongo mongo mongo -u skipper -p --authenticationDatabase admin prod-mongo/skippers-apps

  4. 不成功从 Docker 主机连接到 Docker 容器: mongo skippers-apps --authenticationDatabase admin -u skipper -p

我关心的是最后一步。它在我的本地开发环境中有效,但不能在生产环境中使用。

开发环境

  • 操作系统:Mac OS El Capitan
  • 内核版本 15.6.0
  • MongoDB Shell 版本:3.2.7
  • Docker 版本:1.12.3

生产环境

  • 操作系统:Ubuntu 16.04.1 LTS
  • 内核版本:4.4.0
  • MongoDB Shell 版本:2.6.10
  • Docker 版本:1.12.3

答案1

虽然我不确定为什么我之前使用的 MongoDB 版本(2.6.10)不能与 Docker 很好地兼容,但我能够通过升级 MongoDB 客户端的版本来解决问题。

我很好奇想知道 2.6.10 客户端无法连接到默认 Docker MongoDB 映像中的 MongoDB 服务器的确切原因。

解决方案:将 MongoDB 客户端从 2.6.10 升级到 3.2.11

相关内容