Docker部署mongodb:使用Docker部署
准备工作:确保 Docker 环境就绪
在开始 Docker 部署 MongoDB 之前,
先确认你的服务器已经安装并启动了 Docker。如果你还没装 Docker,
可以用下面的一键脚本(CentOS / Ubuntu 通用):
curl -fsSL https://get.docker.com | sh
sudo systemctl start docker
sudo systemctl enable docker
安装完成后运行 docker --version 看到版本号就算成功。
另外建议新建一个目录(比如 /data/mongo)用于存放 MongoDB 的数据文件,方便后续挂载。
拉取 MongoDB 镜像并启动基础容器
打开终端,先拉取官方 MongoDB 镜像(这里用 7.0 版本,稳定且常用):
docker pull mongo:7.0
拉到本地后,你可以用下面命令快速启动一个测试容器:
docker run -d --name my-mongo -p 27017:27017 mongo:7.0
-d表示后台运行--name my-mongo给容器起个名字-p 27017:27017把宿主机 27017 端口映射到容器内的 MongoDB 默认端口
现在用 docker ps 应该能看到容器正在运行。
但这样启动的数据会随着容器删除而丢失,对于生产环境必须做数据持久化,我们下一步就来处理。
配置数据持久化与用户认证
生产环境建议把 MongoDB 的数据目录挂载到宿主机,并且开启认证。
先创建挂载目录和日志目录:
mkdir -p /data/mongo/db
mkdir -p /data/mongo/log
然后停止并删除刚才测试的容器:
docker stop my-mongo && docker rm my-mongo
接下来重新启动容器,挂载目录并开启认证:
docker run -d \
--name mongo-prod \
-p 27017:27017 \
-v /data/mongo/db:/data/db \
-v /data/mongo/log:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=YourStrongPassword \
mongo:7.0 --auth
注意:--auth 参数必须写在镜像名后面,
表示启动时开启身份验证。MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD 会自动创建管理员用户。
启动后用下面命令测试能否通过认证连接:
docker exec -it mongo-prod mongosh -u admin -p YourStrongPassword --authenticationDatabase admin
如果进入 test> 提示符,说明连接成功。
避坑指南:常见问题与解决方法
- 容器启动后立马退出:检查端口是否已被占用(
lsof -i:27017),或者/data/mongo/db目录权限不足,可以用chown -R 999:999 /data/mongo/db修复(MongoDB 容器内用户 uid 为 999)。 - 认证失败:确认环境变量
MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD拼写正确,并且启动时加了--auth。如果需要修改密码,可以进入容器后使用db.changeUserPassword()。 - 数据丢失:删除容器前务必检查挂载路径是否正确。如果忘记挂载,数据会留在容器内部,删除容器后无法恢复。建议每次启动都用
-v指定宿主机目录。
效果验证:确认 Docker 部署的 MongoDB 正常工作
- 检查容器状态:
docker ps -a确认mongo-prod处于 Up 状态。 - 测试写入数据:进入容器 shell 后执行以下命令:
use testdb
db.testcol.insertOne({name: "hello", status: 1})
db.testcol.find()
如果返回刚插入的文档,则读写正常。
- 验证数据持久化:删除容器
docker rm -f mongo-prod,然后重新用同样的挂载卷启动新容器(不设用户密码的话需要先验证认证)。重新连接后执行db.testcol.find(),应该能看到之前的数据。 - 远程连接测试:用本机的 MongoDB Compass 或
mongo客户端连接服务器 IP:27017,输入刚才设置的用户名密码,能正常查看数据库就代表部署成功。
如果你正在处理 Docker 部署 MongoDB,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。