Я запускаю на своей машине докер-контейнер mongodb 1002 *, и я хочу, чтобы он запускался при запуске компьютера.Тем не менее, каждый раз, когда я загружаю свой компьютер, мне приходится делать docker restart
контейнера, потому что «автоматически запускаемый» контейнер дает мне Authentication failed
, когда я даю ему действительные учетные данные.Ручной перезапуск контейнера-нарушителя немедленно решает проблему.
Я использую систему Ubuntu 18.04 , на зашифрованном разделе , с последним докером и MongoDB 4.0.2 (хотя у меня была эта проблема с каждой версией, которую я пробовал).Как ни странно, эта проблема не возникает в незашифрованном разделе.
Я хотел бы знать, может ли это быть possibly
вызвано шифрованием раздела (Во время установки Ubuntu у вас есть выбор шифрования).Кроме того, я глубоко заинтригован этой проблемой, и любой выстрел в нее очень ценится.Наконец, я не уверен, где открыть отчет об ошибке, является ли это проблемой с mongo, docker, Ubuntu или шифрованием, которое использует Ubuntu.
Если кому-то нравится копировать проблему:
Запустите незащищенный контейнер монго.
docker run --volume ~/test-data:/data/db --publish --name mongo-unauthenticated 27017:27017 mongo:4.0.2
Подключитесь к нему и создайте несколько пользователей:
mongo
use admin
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
use test
db.createUser(
{
user: "tester",
pwd: "password",
roles: [ { role: "readWrite", db: "test" } ]
}
)
exit
Теперь переведите незащищенный монго в автономный режим:
docker stop mongo-unauthenticated
И поставить защищенную версию на место.Обратите внимание на флаг --restart always
, который приводит к автоматическому запуску контейнера.
docker run --restart always --publish 27017:27017 --name test-mongo -v ~/test-data:/data/db mongo:4.0.2 --auth
Убедитесь, что вы можете подключиться с действительными учетными данными:
mongo --port 27017 -u "tester" -p "password" --authenticationDatabase "test"
Произведите чистое завершение работы:
docker stop mongo-unauthenticated
Перезагрузите компьютер.
reboot
Убедитесь, что --restart always
работает.
docker ps
И получите ошибку аутентификации с нетронутыми учетными данными.
mongo --port 27017 -u "tester" -p "password" --authenticationDatabase "test"