使用Docker部署Mongo:7.0.0

第一步:拉取镜像
docker pull mongo:7.0.0
第二步:准备宿主机目录
# 1. 清理旧目录(谨慎操作!会删除原有数据)
rm -rf /opt/mongo

# 2. 创建数据目录
mkdir -p /opt/mongo/data/db

# 3. 设置目录权限(MongoDB 容器以 UID 999 运行)
chown -R 999:999 /opt/mongo/data/db
chmod -R 755 /opt/mongo/data/db
第三步:启动容器
docker run -d \
  --restart=always \      # 容器异常退出时自动重启
  -p 27017:27017 \       # 默认 MongoDB 端口
  --name mongo \         # 容器名称
  -v /opt/mongo/data/db:/data/db \  # 数据持久化挂载
  mongo:7.0.0
第四步:验证容器状态
# 1. 检查容器是否运行 
docker ps | grep mongo 

# 2. 查看启动日志(定位权限或端口问题) 
docker logs mongo 

# 3. 验证端口监听 
netstat -tuln | grep 27017
第五步:进入容器操作
# 方法1:直接进入 MongoDB Shell(推荐)
docker exec -it mongo mongosh

# 方法2:进入容器内部再启动 Shell
docker exec -it mongo /bin/bash
mongosh
第六步:基础配置
# 1. 创建管理员用户(在 MongoDB Shell 中执行)
use admin
db.createUser({
  user: "admin",
  pwd: "your_strong_password",
  roles: ["root"]
})

# 2. 启用认证(重启容器生效)
# 添加启动参数:--auth
docker run -d ... mongo:7.0.0 --auth
常见问题解决
1. 数据目录权限不足
# 错误现象:容器反复重启,日志报错 "Permission denied"
# 修复命令:
chown -R 999:999 /opt/mongo/data/db
2. 端口冲突
# 检查占用进程
lsof -i :27017

# 若端口被占用,更换端口(如 27018):
docker run ... -p 27018:27017 ...
3. 数据持久化验证
# 在容器内创建测试数据
use testdb
db.testcoll.insertOne({ name: "test" })

# 删除容器后重新挂载目录,检查数据是否存在
docker rm -f mongo
docker run ... -v /opt/mongo/data/db:/data/db ...
附:生产环境建议
  1. 启用认证:务必使用 --auth 参数启动容器。
  2. 备份策略
    # 定时备份示例
    docker exec mongo mongodump --uri="mongodb://admin:password@localhost:27017" --out=/data/backup
  3. 资源限制
    --memory 2g \          # 限制内存
    --cpus 1               # 限制 CPU

总结

通过以上步骤,MongoDB 7.0.0 已完成安装并支持数据持久化。若需进一步配置副本集或分片集群,请参考 MongoDB 官方文档

docker pull mongo:7.0.0 Trying to pull repository docker.io/library/mongo ... 7.0.0: Pulling from docker.io/library/mongo 44ba2882f8eb: Pull complete ed0ba5360de5: Pull complete a27add3570ee: Pull complete fcfb29d27eb4: Pull complete ebd1e00f8db0: Pull complete 09a8f7a63d00: Pull complete 4c432db3ad79: Pull complete a17c1a3b9bd0: Pull complete dffbd120a5fc: Pull complete Digest: sha256:3df5f8face3becc953225f3b449269b7aadc9cdea865047d75eef0ec34c119ed Status: Downloaded newer image for docker.io/mongo:7.0.0 [root@192 ~]# rm -rf /opt/mongo [root@192 ~]# mkdir -p /opt/mongo/data/db [root@192 ~]# docker run -d --restart=always -p 27017:27017 --name mongo -v /opt/mongo/data/db:/data/db mongo:7.0.0 b861f244e043030124168d767d00b4335620b127838508310f42d316463ea978 [root@192 ~]# docker exec -it mongo mongosh Error response from daemon: Container b861f244e043030124168d767d00b4335620b127838508310f42d316463ea978 is restarting, wait until the container is running [root@192 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b861f244e043 mongo:7.0.0 "docker-entrypoint..." About a minute ago Restarting (14) 29 seconds ago mongo 4de8cc10330b rabbitmq:3.12.0-management "docker-entrypoint..." About an hour ago Up 38 minutes 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp share_rabbitmq 4538821a151e bitnami/minio "/opt/bitnami/scri..." 3 days ago Up 5 hours 0.0.0.0:9000-9001->9000-9001/tcp share_minio f172d909e13
最新发布
03-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值