Docker 安装 Mongo

创建宿主机目录

在你的宿主机上创建必要的目录来存储 MongoDB 的数据和配置文件。这样做可以保证即使容器被删除,数据也能得到保留。

bash 复制代码
mkdir -p /develop/mongo/data
mkdir -p /develop/mongo/config

创建 MongoDB 配置文件

创建一个名为 mongod.conf 的 MongoDB 配置文件,并保存在 /develop/mongo/config 目录中。这个文件可以用来设置 MongoDB 的运行参数,比如绑定的 IP 地址、端口号和安全设置等。

yaml 复制代码
# /develop/mongo/config/mongod.conf
storage:
  dbPath: /data/db
net:
  bindIp: 0.0.0.0
  port: 27017
security:
  authorization: enabled

使用 Docker 运行 MongoDB

拉取社区版镜像:

bash 复制代码
docker pull mongodb/mongodb-community-server:latest

使用以下命令来启动 MongoDB 容器,映射数据和配置文件到宿主机指定的目录。

bash 复制代码
docker run --name mongodb \
  -v /develop/mongo/data:/data/db \
  -v /develop/mongo/config/mongod.conf:/etc/mongo/mongod.conf \
  -p 27017:27017 \
  -d mongo \
  --config /etc/mongo/mongod.conf

命令参数解释:

  • --name mongodb:设置 Docker 容器的名称为 mongodb。
  • -v /develop/mongo/data:/data/db:将宿主机的 /develop/mongo/data 目录映射到容器的 MongoDB 数据目录 /data/db。
  • -v /develop/mongo/config/mongod.conf:/etc/mongo/mongod.conf:将宿主机的配置文件 mongod.conf 映射到容器的 /etc/mongo/mongod.conf。
  • -p 27017:27017:将容器的 27017 端口映射到宿主机的 27017 端口,这允许从宿主机访问 MongoDB。
  • -d mongo:以 detached(后台)模式运行 mongo 镜像。
  • --config /etc/mongo/mongod.conf:启动时使用指定的配置文件。

创建超级管理员用户

安装 mongo shell:

bash 复制代码
sudo yum install -y mongodb-mongosh

进入 MongoDB 容器:

bash 复制代码
docker exec -it mongodb mongosh

然后,在 MongoDB 的命令行界面中,使用以下命令创建管理员用户:

sql 复制代码
use admin
db.createUser({
  user: "admin",
  pwd: "your_secure_password",
  roles: [{ role: "root", db: "admin" }]
})

确保将 "your_secure_password" 替换成一个强密码。

配置外部访问和安全性

确保你的 mongod.conf 文件配置了安全选项(如上所述)。此外,为了增强安全性,你可以配置更复杂的认证选项,例如使用 X.509 证书等。

重新启动 MongoDB 容器

修改配置文件或创建用户后,需要重启 MongoDB 容器以应用更改:

bash 复制代码
docker restart mongodb

开启防火墙端口

防火墙设置:如果你的服务器有防火墙,请确保开放 27017 端口,以便可以远程访问 Mongo。

bash 复制代码
# 添加端口规则:
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent

# 重新加载防火墙规则:
sudo firewall-cmd --reload

# 验证端口是否开启:
sudo firewall-cmd --zone=public --list-ports

连接测试

相关推荐
真好啊又活了一天3 小时前
服务器和虚机配置IPV6
运维·服务器·github
zixu_star4 小时前
定时任务是什么?从日常自动化到 AI 应用,软件如何自动执行任务?
运维·人工智能·自动化
AR-26710-4 小时前
Linux Day33——定时任务+lvm
linux·运维
润滑卫士5 小时前
液压系统工作粘度窗口等级选型:泵允许粘度范围与油温-粘度匹配计算
运维
每月一号准时摆烂7 小时前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记
时间售卖铺8 小时前
Chrony与SSH实战:精准时间同步与安全远程登录
运维·安全·云原生·ssh
微订校园外卖系统9 小时前
校园代取快递系统选型:现成系统与定制开发的技术核对项
大数据·运维·人工智能·外卖系统·本地生活·微订
QXWZ_IA9 小时前
管道GIS测绘如何实现自动化成图:三种成图方式怎么选
运维·人工智能·安全·自动化
一条破秋裤9 小时前
【1112】Linux中断【整理】
linux·运维·服务器
分布式存储与RustFS9 小时前
OpenObserve 的日志别堆本地盘:用 RustFS 当它的对象存储底座
运维·云原生·开源·对象存储·分布式存储·s3·性能基准