- 拉取最新版的mongodb镜像文件
sudo docker pull mongo
- 直接运行:
docker run -p 27017:27017 --name mongodb -d mongo
- 创建一个文件夹,用作mongodb的数据目录挂载,运行
sudo docker run -p 27017:27017 -v /data/mongo:/data/db --name mongodb -d mongo
在上面的命令中,几个命令参数的详细解释如下:
-p 映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务
-v 为设置容器的挂载目录,这里是将本机的“/data/mongo”目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
--name 为设置该容器的名称
-d 设置容器以守护进程方式运行
--auth是否开始鉴权,如果不想开启可以去掉
- 进入容器:
sudo docker exec -it mongodb bash
- 通过mongo命令连接到MongoDB的数据库服务
# 默认连接本地的27017端口的MongoDB
$ mongo
# 指定IP与端口进行连接
$ mongo 127.0.0.1:27017
# 指定用户名和密码连接到指定的MongoDB数据库
$ mongo 127.0.0.1:27017/admin -u user -p password
- 查看版本
- 通过linux命令
mongo --version
查询 - 连接上数据库后,通过
db.version()
查询
- 连上数据库后,我们先创建一个admin用户,用以管理其它用户:
> use admin
switched to db admin
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
- 创建具有读写权限的用户
> db.auth('admin','123456');
1
> db.createUser({ user:'user',pwd:'123456',roles:[ { role:'readWrite', db: 'testdb'}]});
Successfully added user: {
"user" : "user",
"roles" : [
{
"role" : "readWrite",
"db" : "testdb"
}
]
}
- 认证用户并操作
> db.auth('user','123456')
1
> use testdb
switched to db testdb
> db.person.insert({name:'Larry',age:18})
WriteResult({ "nInserted" : 1 })
> db.person.find({})
{ "_id" : ObjectId("5ddaa14edbbac3c4f844366c"), "name" : "Larry", "age" : 18 }
