创建宿主机目录
在你的宿主机上创建必要的目录来存储 MongoDB 的数据和配置文件。这样做可以保证即使容器被删除,数据也能得到保留。
mkdir -p /develop/mongo/data
mkdir -p /develop/mongo/config
创建 MongoDB 配置文件
创建一个名为 mongod.conf
的 MongoDB 配置文件,并保存在 /develop/mongo/config
目录中。这个文件可以用来设置 MongoDB 的运行参数,比如绑定的 IP 地址、端口号和安全设置等。
# /develop/mongo/config/mongod.conf
storage:
dbPath: /data/db
net:
bindIp: 0.0.0.0
port: 27017
security:
authorization: enabled
使用 Docker 运行 MongoDB
拉取社区版镜像:
docker pull mongodb/mongodb-community-server:latest
使用以下命令来启动 MongoDB 容器,映射数据和配置文件到宿主机指定的目录。
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:
sudo yum install -y mongodb-mongosh
进入 MongoDB 容器:
docker exec -it mongodb mongosh
然后,在 MongoDB 的命令行界面中,使用以下命令创建管理员用户:
use admin
db.createUser({
user: "admin",
pwd: "your_secure_password",
roles: [{ role: "root", db: "admin" }]
})
确保将 "your_secure_password"
替换成一个强密码。
配置外部访问和安全性
确保你的 mongod.conf
文件配置了安全选项(如上所述)。此外,为了增强安全性,你可以配置更复杂的认证选项,例如使用 X.509 证书等。
重新启动 MongoDB 容器
修改配置文件或创建用户后,需要重启 MongoDB 容器以应用更改:
docker restart mongodb
开启防火墙端口
防火墙设置:如果你的服务器有防火墙,请确保开放 27017 端口,以便可以远程访问 Mongo。
# 添加端口规则:
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
# 重新加载防火墙规则:
sudo firewall-cmd --reload
# 验证端口是否开启:
sudo firewall-cmd --zone=public --list-ports