我有一段时间连接到一个Dockerized的MongoDB实例。 我能够在本地开发机器上按照这些指令configuration一个MongoDB容器,但是同样的步骤在生产中似乎不起作用。
我确切的步骤来创build,运行和连接到容器:
创build并运行容器
docker run --name prod-mongo -p 27017:27017 -d mongo --auth
添加了初始用户:
docker exec -it prod-mongo mongo admin
db.createUser({user:'skipper', pwd:'skipperspassword', roles:[{role:'userAdminAnyDatabase',db:'admin'}] });
成功连接到来自另一个Mongo容器的Docker容器:
docker run -it --rm --link prod-mongo:mongo mongo mongo -u skipper -p --authenticationDatabase admin prod-mongo/skippers-apps
未成功连接到Docker主机的Docker容器: mongo skippers-apps --authenticationDatabase admin -u skipper -p
这是我关心的最后一步。 它在我的本地开发环境中工作,但不是生产。
开发环境
生产环境
虽然我不确定为什么我之前使用的MongoDB版本(2.6.10)在Docker上运行得不好,但我能够通过升级MongoDB客户端的版本来解决这个问题。
我很想知道2.6.10客户端无法连接到默认Docker MongoDB映像中的MongoDB服务器的确切原因。
解决scheme :将MongoDB客户端从2.6.10升级到3.2.11