使用docker-hub的mongodb 4.0镜像
首先搜索并拉取4.0的镜像
~# docker search mongo
~# docker pull mongo:4.0
拉取完成后使用docker images查看发现镜像,然后使用docker run启动docker服务
~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo 4.0 1bc58f3232ec 5 weeks ago 413MB
~# docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo:4.0 --auth
~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
795627661c81 mongo:4.0 "docker-entrypoint.s…" 17 seconds ago Up 11 seconds 0.0.0.0:27017->27017/tcp loving_rubin
使用docker exec进入mongodb,然后创建admin用户,创建成功后执行exit退出docker虚拟机
~# docker exec -it 795627661c81 mongo admin
> db.createUser({ user: 'admin', pwd: 'adminpassword', roles: [ { role: "userAdminAnyDatabase", db: "admin" }]});
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
> exit
使用admin账户密码登录mongo,切换到指定db, 创建用户拥有当前db的读写权限,成功后exit退出
~# docker exec -it 795627661c81 mongo -u admin -p adminpassword --authenticationDatabase admin
> db
test
> db.createUser( { "user" : "user1",
"pwd": "user1pwd1",
"customData" : { employeeId: 12345 },
"roles" : [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
] },
{ w: "majority" , wtimeout: 5000 } )
> exit
使用刚才创建的用户登录指定db
~# docker exec -it 795627661c81 mongo -u user1 -p user1pwd1 --authenticationDatabase test
> db
test
> db.textcollections.insert({"node": "web"})
WriteResult({ "nInserted" : 1 })
> db.textcollections.find()
{ "_id" : ObjectId("5d8375d9273b5553825b9bd0"), "node" : "web" }
>