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 正常工作

  1. 检查容器状态:docker ps -a 确认 mongo-prod 处于 Up 状态。
  2. 测试写入数据:进入容器 shell 后执行以下命令:
use testdb
db.testcol.insertOne({name: "hello", status: 1})
db.testcol.find()

如果返回刚插入的文档,则读写正常。

  1. 验证数据持久化:删除容器 docker rm -f mongo-prod,然后重新用同样的挂载卷启动新容器(不设用户密码的话需要先验证认证)。重新连接后执行 db.testcol.find(),应该能看到之前的数据。
  2. 远程连接测试:用本机的 MongoDB Compass 或 mongo 客户端连接服务器 IP:27017,输入刚才设置的用户名密码,能正常查看数据库就代表部署成功。

如果你正在处理 Docker 部署 MongoDB,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
手把手教你查看Linux服务器用户登录日志,排查异常登录
下一篇
服务器数据库服务器优化:从零开始的性能提升指南
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意