連接到 MongoDB 的 Dockerized 實例時身份驗證失敗
我已經有很長一段時間連接到 MongoDB 的 Dockerized 實例。我能夠在本地開發機器上按照這些說明配置 MongoDB 容器,但相同的步驟似乎在生產中不起作用。
我創建、執行和連接到容器的具體步驟:
- 創建並執行容器
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 外殼版本:3.2.7
- 碼頭工人版本:1.12.3
生產環境
- 作業系統:Ubuntu 16.04.1 LTS
- 核心版本:4.4.0
- MongoDB 外殼版本:2.6.10
- 碼頭工人版本:1.12.3
雖然我不確定為什麼我以前使用的 MongoDB 版本(2.6.10)不能很好地與 Docker 配合使用,但我能夠通過升級 MongoDB 客戶端的版本來解決這個問題。
我很想知道 2.6.10 客戶端無法連接到預設 Docker MongoDB 映像中的 MongoDB 伺服器的確切原因。
解決方案:將 MongoDB 客戶端從 2.6.10 升級到 3.2.11