使用Docker创建MongoDb服务
使用Docker创建MongoDb服务
1、先拉mongodb镜像
docker pull mongodb:4.2.5
2、创建映射目录
创建mongo映射目录,用于存放后面的相关东西。
mkdir /home/mongodb
mkdir /home/mongodb/db
3、创建容器
我这里创建了两个容器,其余都一样。只有--auth的区别。
--auth是用来使mongodb服务需要验证的指令,如果不需要验证,则不加。默认mongodb是不使用用户认证。
# 先执行这个,用这个容器创建用户
docker run -di --name=mongo-2 -p 27017:27017 -v /home/mongodb/db:/data/db mongo:4.2.5
# 这个是真正要使用的容器,先不执行下面这条命令,等用户创建好了,再创建容器
# docker run -di --name=mongo-1 -p 27017:27017 -v /home/mongodb/db:/data/db mongo:4.2.5 --auth
这里创建的两个容器,一个是需要验证的mongo,一个是不需要验证的mongo。
进入不需要验证的容器创建用户,用户数据会同步到两个容器共同的映射目录——宿主机的/home/mongodb/db
中。
>: docker exec -it mongo-2 /bin/bash
root@7164425a200c:/# mongo
MongoDB shell version v4.2.5
...
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> use admin
switched to db admin
# 创建用户
> db.createUser(
... {
... user: "root",
... pwd: "密码(自己设置)",
... roles: [ { role: "root", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
> ^C
# 然后这个容器就可以关了,删了。
# 然后创建另一个容器:要验证的,真正拿来用的容器
>: docker run -di --name=mongo-1 -p 27017:27017 -v /home/mongodb/db:/data/db mongo:4.2.5 --auth
# 进入查看是否创建成功
>: docker exec -it mongo-1 /bin/bash
root@e0059afd01d9:/# mongo
MongoDB shell version v4.2.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("35163006-a66a-414a-82c6-188cd6f51c6f") }
MongoDB server version: 4.2.5
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
> show dbs
>
# 这里可以看到,show dbs已经无法查看所有数据库了,只有用root登录才可以访问所有数据库
>: mongo -uroot -p
MongoDB shell version v4.2.5
Enter password:
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("13ab0e54-0baa-4764-9423-7772ef38c489") }
MongoDB server version: 4.2.5
Server has startup warnings:
2020-04-07T13:35:03.210+0000 I STORAGE [initandlisten]
2020-04-07T13:35:03.210+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
...
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
>
# 发现所有都可以访问,OK了。
至此,另一个需要验证的容器,就完成了注册。有账号可以登陆了。
这样就可以外网访问这个mongo数据库了,而且需要root用户登录,保证了安全性。