用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 --auth
replaceentrypoint.sh中的exec "$@"
。
4)重启容器,mongod应该运行auth启用。
您应该真的考虑将数据存储在容器中的容器中。
- 无法从Docker Registry远程API获取有效的响应
- 与Sensu一起使用Docker
- 如何让Web服务器从Docker容器中正常工作?
- Docker“在docker-compose up”期间“优雅地停止”自己,而不是`docker-compose run –entrypoint`
- seccomp = unconfined在kubernetes pod中的容器? 或者:更改docker 1.10中的默认值?
- 在docker-compose中的不同docker服务之间进行通信
- 部署最新的docker集装箱
- 解决docker问题 – 编写不同的客户端服务器会导致新的错误,说明降级Docker SDK for Python的版本
- 在定义了卷(-v)的情况下,在Ubuntu上运行后,Docker percona(mysql mariadb)容器停止运行