查看: 66|回覆: 1

centos7 在docker中安装mongodb

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-7-20
發表於 2020-9-15 23:41:00 | 顯示全部樓層 |閲讀模式

一、搜索docker的mongo镜像

docker search mongo

二、拉取mongo最新镜像

docker pull mongo

三、创建好mongo存储路径,便于后面做挂载

mkdir -p /data/mongo

四、运行镜像

docker run --restart=always --name mongo -v /data/mongo:/data/db -p 27017:27017 -d mongo --auth

返回dockerid说明执行成功

指令说明
--restart=always 表示重启自动运行
--name 设置容器名称
-v 挂载目录 宿主机目录/容器目录
-p 端口映射 宿主机/容器
-d 表示后台运行
--auth 表示链接需要认证,推荐加上,也可以不加

五、查看运行的容器

docker ps -a

六、创建mongo的用户及密码
首先进入容器

docker exec -it mongo bash

进入mongo

mongo

使用admin

use admin

创建一个账户密码.(注意:没有创建过用户才可以不需要auth直接创建,否则先登录db.auth('zhangsan','123456'))才能创建,也就是只要创建过一次用户了都需要先auth才能操作,或者也可以把/data/mongo目录全部清空创建新容器(会丢失数据)

db.createUser({user:"zhangsan",pwd:"123456",roles:[{role:'root',db:'admin'}]})

如果需要退出mongo,执行指令exit,图如下

MongoDB基本的角色
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root 这个角色的权限最大

七、配置mongo的远程访问,在mongo容器里修改配置文件
继续第六步骤不要退出容器,或者再重新进入容器docker exec -it mongo bash
先安装好vim

apt-get update
apt-get install vim -y

修改mongo配置文件,运行远程访问

vim /etc/mongod.conf.orig

将其中的 bindIp: 127.0.0.1 注释或者改为0.0.0.0,保存:wq并退出


然后exit 退出mongo容器回到宿主机,重启docker让配置生效

docker restart mongo

八、测试远程连接mongodb,下图用的navicat
1、如果不使用账号密码登陆的话会报错


2、使用正确的账号密码

九、测试常用的一些mongo指令
1、进入容器、mongo、授权认证

docker exec -it mongo bash
mongo
use admin
db.auth('zhangsan','123456')

返回1说明登录成功了


2、创建数据库,并插入和查询测试数据

use test
db.test.save({name: 'test', age: '18'})
db.test.find();


navicat中查看

其他指令:
show dbs 查看数据库
show collections 查看集合



来源:https://www.cnblogs.com/nickchou/p/13676111.html
回覆

使用道具 舉報

0

主題

720

回帖

4441

積分

琼殿精英

金币
3721
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-5-9 09:10:42 | 顯示全部樓層
顶一个!教程写得很详细,操作步骤一步一步都很清楚,对于新手来说非常友好。

补充几点小建议:

1. 关于数据持久化,LZ做得很好,用了-v参数挂载目录,这样容器删除后数据不会丢失。赞一个!

2. 远程访问那里,修改bindIp为0.0.0.0确实方便,但生产环境建议还是绑定到具体的内网IP比较安全,或者使用防火墙限制只允许特定IP访问27017端口。

3. 关于密码,建议LZ在生产环境中使用更复杂的密码,"123456"这种太简单了容易被暴力破解。

4. 另外也可以考虑使用docker-compose来部署,这样配置文件管理起来更方便,后期维护也简单。
另外请教一下:
如果后面想升级MongoDB版本,是不是直接重新pull新镜像然后用同样的挂载目录启动就可以了?数据能保留吧?

感谢楼主的分享,已收藏备用!希望能看到更多这样的实战教程~
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部