用auth重启mongodb docker

我有一个名为hi_mongo和id 123456789的mongoDB泊坞窗我有一些数据已经存储在数据库中。 我已经停止它,并重新启动命令:
docker restart 123456789

但是现在我想要启用授权重新启动此泊坞窗。 如何做到这一点,而不需要新build一个mongoDB docker。

我到目前为止所尝试的是 – 使用以下命令进入这个mongoDB容器:
docker exec -it 123456789 /bin/bash
并尝试编辑/etc/mongo.conf.orig file并设置authorization:'enabled' ,认为当我从主机mongod重新启动/etc/mongo.conf.orig file时将会启用auth重启,但情况并非如此。

我正在使用MongoDB 3.4,它看起来很好。 我做的是那个

  • 停止正在运行的容器。 (docker stop your_container_name)
  • db.createUser({“user”:“admin”,“pwd”:“password”,“roles”:[{role:“root”,db:“admin”}]});
  • 编辑你的mongodbconfiguration。 (在我的情况下/etc/mongod.conf)
  • 重新启动你的容器。 (docker restart your_container_name)

当您尝试在login后创build新用户时,您将遇到错误。

db.createUser({“user”:“demo”,“pwd”:“password”,“roles”:[{role:“read”,db:“admin”}]}); 2016-12-24T14:17:43.949 + 0000 E QUERY
[main]错误:无法添加用户:未授权pipe理员执行命令{createUser:“demo”,pw d:“xxx”,roles:[{role:“read”,db:“admin”}] digestPassword:false,writeConcern:{w:“majority”,wtimeout:300000.0}}:_getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.createUser@src/mongo/shell/db.js: 1290:15

希望这可以帮助你。

将能够通过修改容器中的entrypoint.sh来启用auth。 尝试以下步骤:

1)docker执行者 – 你的容器bash

2)找出运行中的mongoconfiguration。 它可能只是执行mongod。 但为了安全起见,先找出来。

sed -i 's/exec "$@"/echo "new entrypoint $@" > \/tmp\/echo.txt/g' entrypoint.sh

再次停止并启动容器。 附加到容器并检查/tmp/echo.txt。

3)用类似于exec mongod --authreplaceentrypoint.sh中的exec "$@"

4)重启容器,mongod应该运行auth启用。

您应该真的考虑将数据存储在容器中的容器中。