Docker部署MongoDB

百度已收录

文章最后更新时间:2025-01-01 13:02:23

简介:

MongoDB 是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

说明:

Docker如果想安装软件 , 必须先到Docker镜像仓库下载镜像。

Docker官方镜像

1、寻找Mongo镜像

Docker部署MongoDB-氯化钠资源网站

Docker部署MongoDB-氯化钠资源网站

2、下载Mongo镜像

 # 下载镜像
 docker pull mongo
 ​
 #查看镜像
 docker images

命令描述
docker pull mongo下载最新版mongo镜像 (其实此命令就等同于 :docker pull mongo:latest )
docker pull mongo:4.4.27-rc0-windowsservercore-ltsc2022下载指定版本的mongo镜像 (xxx指具体版本号)

Docker部署MongoDB-氯化钠资源网站

3、创建目录

一个用来存放配置,一个用来存储上传文件的目录,还有一个存放日志

启动前需要先创建Minio外部挂载的配置文件( /opt/mongo/config),和存储上传文件的目录( /opt/mongo/data),与日志目录(/opt/mongo/logs)

 mkdir -p /opt/mongo/config
 ​
 mkdir -p /opt/mongo/data
 ​
 mkdir -p /opt/mongo/logs
 ​
 touch /opt/mongo/config/mongod.conf

Docker部署MongoDB-氯化钠资源网站

4、创建Redis容器并启动

4.1、运行前缀

 # 先随便创建一个mongo容器,待会删除,主要为了获取mongod.conf文件内容
 docker run --name mongo -d mongo
 ​
 # 复制文件内容
 docker cp mongo:/etc/mongod.conf.orig /opt/mongo/config/mongod.conf
 ​
 #查询是否复制成功
 cat /opt/mongo/config/mongod.conf

Docker部署MongoDB-氯化钠资源网站

 # 删除这个mongo容器
 docker rm -f mongo
 ​
 # 查询所有容器
 docker ps -a

Docker部署MongoDB-氯化钠资源网站

 # 修改mongod.conf文件内容,让其可以实现远程访问
 vim /opt/mongo/config/mongod.conf
 ​
 # 内容如下
 # mongod.conf
 ​
 # for documentation of all options, see:
 #   http://docs.mongodb.org/manual/reference/configuration-options/
 ​
 # Where and how to store data.
 storage:
   dbPath: /var/lib/mongodb
   journal:
     enabled: true
 #  engine:
 #  wiredTiger:
 ​
 # where to write logging data.
 systemLog:
   destination: file
   logAppend: true
   path: /var/log/mongodb/mongod.log
 ​
 # network interfaces
 net:
   port: 27017
   bindIp: 0.0.0.0
 ​
 ​
 # how the process runs
 processManagement:
   timeZoneInfo: /usr/share/zoneinfo
 ​
 #security:
 ​
 #operationProfiling:
 ​
 #replication:
 ​
 #sharding:
 ​
 ## Enterprise-Only Options:
 ​
 #auditLog:

Docker部署MongoDB-氯化钠资源网站

4.2、开始部署

 docker run -dit --name mongo \
 -p 27017:27017 \
 -v /opt/mongo/config/mongod.conf:/etc/mongod.conf.orig \
 -v /opt/mongo/data:/data/db \
 -v /opt/mongo/logs:/var/log/mongodb \
 -e MONGO_INITDB_ROOT_USERNAME=admin \
 -e MONGO_INITDB_ROOT_PASSWORD=123456 \
 --restart=always  \
 --privileged=true \
 mongo --auth
 ​
 docker run --name mongodb -p 27017:27017 -v /opt/mongo/data:/data/db/ -v /opt/mongo/config/mongod.conf:/etc/mongod.conf.orig -v /opt/mongo/logs:/var/log/mongodb -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=123456 --privileged=true --restart=always -td mongo

命令描述
docker run这是Docker的基本命令,用于从镜像启动一个新的容器。
-d这个选项使得容器在后台运行,并且进入分离模式。
-i这个选项使得容器在运行时保持交互式。
-t为容器分配一个伪终端或终端。
–name mongo为新创建的容器指定一个名字,这里是“mongo”。
-p 27017:27017将宿主机的27017端口映射到容器的27017端口,这是MongoDB的默认端口。
-v /opt/mongo/config/mongod.conf:/etc/mongod.conf.orig将宿主机器上的 /opt/mongo/config/mongod.conf 文件挂载到容器的 /etc/mongod.conf.orig 位置。
-v /opt/mongo/data:/data/db将宿主机器上的/opt/mongo/data目录挂载到容器的/data/db目录。这是MongoDB的数据目录。
-v /opt/mongo/logs:/var/log/mongodb将宿主机器上的/opt/mongo/logs目录挂载到容器的/var/log/mongodb目录,用于存放MongoDB的日志文件。
-e MONGO_INITDB_ROOT_USERNAME=admin指定容器内的环境变量 初始化容器账号
-e MONGO_INITDB_ROOT_PASSWORD=123456指定容器内的环境变量 初始化容器密码
–restart=always当容器退出时,系统会自动重启。
–privileged=true给予容器所有特权,这个选项可能会引起安全隐患。
–auth这个参数是MongoDB的参数,用于启动访问控制,即启用身份验证。

4.3、进入容器内部

 # 如果MongoDB6.0及以上使用:
 docker exec -it mongo /bin/mongosh
 # 如果是6.0以下的版本使用:
 docker exec -it mongo /bin/mongo 

Docker部署MongoDB-氯化钠资源网站

5、创建MongoDB用户

5.1、mongo中各个角色对应的权限

权限说明
read允许用户读取指定数据库
readWrite允许用户读写指定数据库
dbAdmin允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root只在admin数据库中可用。超级账号,超级权限

5.2、创建一个用户,赋予用户root权限

注意:在createUser之前先use admin切换一下

Docker部署MongoDB-氯化钠资源网站

5.2.1、然后执行创建用户命令

Docker部署MongoDB-氯化钠资源网站

5.2.2、其他相关命令

# 更新用户角色,修改用户权限,不会覆盖原权限信息,只新增权限:
db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})
 
# 更新用户密码
db.changeUserPassword("admin","123456")
 
# 删除用户
db.dropUser({'admin'})
 
# 查看所有用户
show users
 
# 查看数据库(非admin数据库的用户不能使用数据库命令)
show dbs

6、连接 MongoDB

使用Navicat 连接mongoDB

Docker部署MongoDB-氯化钠资源网站

Docker部署MongoDB-氯化钠资源网站

7、解决Navicat连接Mongodb不显示数据库

7.1、问题由来

本以为连接上Navicat后就可以大展宏图了,结果没想到空空如也啊,心都凉了! 后面看到最下面有句提示:已隐藏3个系统项目:

Docker部署MongoDB-氯化钠资源网站

7.2、解决方法

解决方法很简单,点击查看—勾选显示隐藏的项目:

Docker部署MongoDB-氯化钠资源网站

然后就大功告成了

本文链接:https://lzphy.top/1457/
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容