目录
一、docker pull 最新资源
二、启动mongo镜像
三、进入mongo容器
四、使用认证方式启动容器
五、总结
一、docker pull 最新资源
docker pull mongo
二、启动mongo镜像
- 启动命令
注:这里显示启动无异常。但其实并未成功,无法通过 docker exec 进入容器。
docker run -it --name mongo -p 27017:27017 -d mongo
- 查看日志
注:查看日志发现安装的mongo版本过高 命令: docker logs mongo
docker logs mongo
- 拉取低版本镜像
注:尝试安装低版本的mongo进行启动。使用mongo:4
- 成功启动
注:启动成功。
docker run -it --name mongo4 -p 27017:27017 -d mongo:4
三、进入mongo容器创建并维护数据
注:测试创建库、用户、文档内容,并进行增删改查操作
- 进入容器
docker exec -it mongo4 bash
- 进入mongo环境
> mongo
- 查询当前所在库
> db.getName()
- 切换库至admin
可查看当前有哪些库可以用。命令:show dbs;
use admin;
- 随意切换库 并 创建用户
> use tonight;
> db.createUser({user:"admin",pwd:"admin",roles:[{role:"readWrite",db:"tonight"}]});
- 登录用户
> db.auth({user:"admin",pwd:"admin"})
- 新增文档数据等
> db.stars.insert([{name:"moon",direct:"up"},{name:"cloud",direct:"down"}])
> db.stars.remove({_id:new ObjectId("65d4af1823fc7b96f27d1749")})
> db.stars.update({_id:new ObjectId("65d4aeb323fc7b96f27d1747")},{$set:{time:"2024-02-20 22:01:00"}})
> db.stars.find()
四、使用认证方式启动容器
注意:使用此方式登录用户时需要先use admin后进行登录才能操作其他数据库。如下
> use admin
> db.auth("账号","密码")
> use <你创建的库>
> db.collection.find()
> ....
- 启动命令
docker run -itd --name mongo4x2 --restart=on-failure:10 -p 27018:27017 -v /data/db:/data/db -v /var/log:/var/log mongo:4 --auth
- 需要创建用户才可使用db.users查看用户
注:进入docker容器
> mongo
> use admin
- 创建用户并登录用户
创建用户
这里创建用户使用的角色要使用
root
以便进入其他库创建用户选择角色使用
test> use admin
switched to db admin
admin> db.createUser({user:"li",pwd:"li",roles:["root"]})
{ ok: 1 }
切换库,创建用户(库名字 to, 创建用户li2)
admin> use to
to> db.createUser({user:"li2",pwd:"li2",roles:["dbOwner"]})
{ ok: 1 }
to> db.auth("li2","li2")
{ ok: 1 }
to> db.momo.insertOne({name:"-"})
{
acknowledged: true,
insertedId: ObjectId("65dfd2df0def8e93d53b04db")
}
to> db.momo.find()
[ { _id: ObjectId("65dfd2df0def8e93d53b04db"), name: '-' } ]
五、总结
- 版本兼容。mongo高版本docker容器的使用会对cpu有要求。若cpu不支持,可使用低版本镜像创建容器
- 可备份操作。对维护好的容器备份使用可通过这篇文章进行操作 >> docker之程序镜像的制作
- 启动方式不同。- - auth增强使用安全性。若不添加此参数时创建库和文档以及访问admin中的全局方法都是不受限制的的。