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

连接测试

相关推荐
桌面运维家21 分钟前
Windows VHD虚拟磁盘技术详解与应用指南
linux·运维·服务器
GAOJ_K1 小时前
滚柱导轨安装后如精度偏差对机械设备有影响吗?
运维·人工智能·科技·自动化·制造
大黄说说1 小时前
Spring Boot 项目优雅上线:日志、监控、异常处理最佳实践
运维·jenkins
桌面运维家1 小时前
云桌面vDisk解决方案:Windows/Linux高效部署与优化
linux·运维·服务器
Adorable老犀牛2 小时前
给运维同行的一个小提议:一起做「不费力的周复盘」,让经验不白费
运维·周报·复盘·反人性·为自己
xlq223222 小时前
26(下).库的理解与加载
linux·运维·服务器
爱学习的小囧2 小时前
零门槛!VCF 自动化环境登录 vSphere Supervisor 全教程
运维·服务器·算法·自动化·vmware·虚拟化
wbs_scy2 小时前
Linux 动静态库完全指南:制作、使用、原理与实战
linux·运维·服务器
沃和莱特2 小时前
Copy as fetch + Skill:自动化问题记录分析的实践与思考
运维·ai·自动化·编程·skills
就叫飞六吧2 小时前
K8s 端口暴露:集群统一暴露 vs 单 Pod 暴露
云原生·容器·kubernetes