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

连接测试

相关推荐
养生技术人4 小时前
Oracle OCP认证考试题目详解082系列第57题
运维·数据库·sql·oracle·开闭原则
XUE-52113145 小时前
路由策略与路由控制实验
运维·网络·网络协议·智能路由器
BullSmall6 小时前
linux zgrep命令介绍
linux·运维
emma羊羊7 小时前
【文件读写】图片木马
linux·运维·服务器·网络安全·靶场
你疯了抱抱我7 小时前
【SSH】同一局域网下windows使用Xshell SSH连接另一台 ubuntu 22.04 电脑
运维·ubuntu·ssh
2301_818411557 小时前
Ubuntu之apt更新源
linux·运维·ubuntu
CS Beginner8 小时前
【Linux】Mysql的基本文件组成和配置
linux·运维·mysql
iconball9 小时前
个人用云计算学习笔记 --20 (Nginx 服务器)
linux·运维·笔记·学习·云计算
Wang's Blog9 小时前
Linux小课堂: 在 VirtualBox 虚拟机中安装 CentOS 7 的完整流程与关键技术详解
linux·运维
一水鉴天10 小时前
整体设计 逻辑系统程序 之18 Source 容器(Docker)承载 C/P/D 三式的完整设计与双闭环验证 之2
docker·架构·认知科学·公共逻辑