废话不多说,上才艺
mongo docker 链接:https://hub.docker.com/_/mongo?tab=description
1.拉取最新mongo镜像
docker pull mongo
2.创建相关的挂载目录
mkdir -p /home/config/docker/mongo
mkdir -p /home/config/docker/mongo/db
mkdir -p /home/config/docker/mongo/configdb
3. 启动mongo镜像
docker run --restart=always -d --name mongodb -p 27017:27017 -v /home/config/docker/mongo/configdb:/data/configdb/ -v /home/config/docker/mongo/db/:/data/db/ mongo --auth --wiredTigerCacheSizeGB 2
说明:默认情况下,wiredTigerCacheSizeGB
无论您对容器施加了多少内存限制,Mongo都会将其设置为与主机总内存成比例的值。在这种情况下,您需要将缓存大小设置为适当的值,同时考虑到您可能在容器中运行的任何其他进程也将占用内存。以上面的示例为例,您可以将缓存大小配置为使用2GB;--auth 开启权限验证;--restart=always是docker重启时镜像跟着重启
4. 查看启动镜像
docker ps
5. 创建mongo的管理员
#使用admin账号进入mongo
docker exec -it mongodb mongo admin
#创建mongo管理员,并且赋予权限
db.createUser({ user: 'admin', pwd: 'mongoAdmin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
#退出登录
exit
6. 创建普通mongo账户
docker exec -it mongodb mongo admin
# 校验身份信息
use admin
db.auth("admin","mongoAdmin")
# 创建账号,密码数,据库
use demo
db.createUser({ user: 'demo', pwd: 'demoPwd', roles: [ { role: "readWrite", db: "demo" } ] });
# 验证是否成功
db.auth("demo","demoPwd");
#退出
exit
7. 基础命令测试
docker exec -it mongodb mongo admin
use demo
db.auth("demo","demoPwd")
db.demo.insert({"_id":"001","name":"xiaohuahua"})
db.demo.find()
db.demo.find({_id:"001"})
exit
注意事项:
- too many users are authenticated 退出重新进入mongo
- Failed to acquire database information from privileges 退出重新登录