使用Docker创建MongoDb服务

Posted 纳福川Donner

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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用户登录,保证了安全性。

以上是关于使用Docker创建MongoDb服务的主要内容,如果未能解决你的问题,请参考以下文章

使用 Docker 部署 MongoDB 分片

docker安装DoClever

云原生之使用docker部署mongodb数据库

为啥当我将 Meteor 应用程序转换为使用 Docker 时,我的 MongoDB 数据会消失?

异常打开套接字 - MongoDB,Docker

Docker入门在docker使用MongoDB