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

我有一段时间连接到一个Dockerized的MongoDB实例。 我能够在本地开发机器上按照这些指令configuration一个MongoDB容器,但是同样的步骤在生产中似乎不起作用。

我确切的步骤来创build,运行和连接到容器:

  1. 创build并运行容器

    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

虽然我不确定为什么我之前使用的MongoDB版本(2.6.10)在Docker上运行得不好,但我能够通过升级MongoDB客户端的版本来解决这个问题。

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

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