docker安装mongodb

一、前期准备

1.在服务器上面创建三个目录做为挂载到docker (/mongo/data,/mongo/logs,/mongo/conf )

由于我们要把宿主的配置文件同步容器中,所以要在/mogo/conf创建mogodb的配置文件

mongod.conf ,内容如下:

复制代码
# 系统日志
systemLog:
  destination: file                      # 输出到文件
  path: /var/log/mongodb/mongod.log      # 必须与挂载卷对应
  logAppend: true                        # 重启时追加,不截断
  verbosity: 0                             # 日志级别 0-5,数字越大越详细

# 数据存储
storage:
  dbPath: /data/db                       # 数据目录,必须与挂载卷对应                   # 64 位系统默认开,崩溃可恢复
  wiredTiger:                            # 3.2+ 默认引擎
    engineConfig:
      cacheSizeGB: 2                     # WT 缓存,≈(物理内存-1GB)/2,最小 256M
      directoryForIndexes: false         # 索引与数据放同目录
    collectionConfig:
      blockCompressor: snappy            # 集合压缩算法 snappy/zstd/zlib
    indexConfig:
      prefixCompression: true            # 索引前缀压缩

# 进程管理
processManagement:
  fork: false                            # 容器里必须 false,前台运行
  pidFilePath: /tmp/mongod.pid           # 容器内路径即可

# 网络
net:
  port: 27017
  bindIp: 0.0.0.0                        # 允许所有网卡访问,配合 -p 27017:27017
  maxIncomingConnections: 65536          # 最大并发连接,默认 65536

# 安全(第一次建完管理员后再开)
security:
  authorization: disabled                 # 开启鉴权,第一次启动前可先 disabled 建用户
  # keyFile: /data/mongodb-keyfile       # 副本集/分片时再加

# 复制集(单节点可省略)
# replication:
#   replSetName: rs0

# 分片(单节点可省略)
# sharding:
#   clusterRole: shardsvr

# 审计、SNMP、setParameter 等按需再补

注意点:由于我们新建mongodb没有账号所以在配置时,为disabled ,如果创建的用户可以改为【enabled】

安全(第一次建完管理员后再开)

security:

authorization: disabled

2.容器里 MongoDB 进程以 UID 999(mongodb) 身份运行,往 /var/log/mongodb/mongod.log 写文件时没有写权限 ,所以依旧报 FileNotOpen

复制代码
# 方案 B:生产环境推荐(把属主直接给容器内的 mongodb 用户)
chown -R 999:999 /mongo/logs

二、使用命令

复制代码
docker run -d  --name mongo-prod --restart=unless-stopped -p 27017:27017 -v /mongo/data:/data/db -v /mongo/logs:/var/log/mongodb -v /mongo/conf/mongod.conf:/etc/mongod.conf:ro mongo:7.0.14 mongod --config /etc/mongod.conf

解读说明:

  1. docker run -d
    -d = detached,容器在后台运行。

  2. --name mongo-prod

    给容器起个名字叫 mongo-prod,方便后续 docker stop/start/logs 直接引用。

  3. --restart=unless-stopped

    只要 Docker 服务活着,容器退出就自动重启;手动 stop 才不重启。

  4. -p 27017:27017

    把宿主机的 27017 端口映射到容器内的 27017 (MongoDB 默认端口)。

    外部连接串写 mongodb://宿主机IP:16017

  5. 三个 -v 挂载(核心)

    a) -v /mongo/data:/data/db

    宿主机真实数据目录 → 容器内 MongoDB 数据路径。

    容器删了数据也在。

    b) -v /mongo/logs:/var/log/mongodb

    宿主机日志目录 → 容器内日志路径。

    保证 mongod.log 落在宿主机,方便查日志。

    c) -v /mongo/conf/mongod.conf:/etc/mongod.conf:ro

    宿主机配置文件 → 容器内 /etc/mongod.conf只读 (:ro),防止容器内误改。

  6. mongo:7.0.14

    使用的镜像版本号,固定 7.0.14,不会自动升级。

  7. mongod --config /etc/mongod.conf

    容器启动后执行的命令:

    用刚才挂进去的配置文件启动 mongod 进程。

相关推荐
无名-CODING几秒前
从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(上):环境搭建与数据库容器化
数据库·spring boot·docker
向往着的青绿色1 分钟前
雷池(SafeLine)社区版免费部署教程|从环境检查到防护实操全流程
网络·计算机网络·nginx·网络安全·容器·网络攻击模型·信息与通信
爬山算法37 分钟前
MongoDB(50)副本集中的角色有哪些?
数据库·mongodb
Sst的头号粉丝1 小时前
Kubernetes——介绍
云原生·容器·kubernetes
木二_1 小时前
057.Kubernetes cert-manager ACME方案介绍
云原生·容器·kubernetes·证书·cert-manager·证书管理
危笑ioi2 小时前
基于Kubeconfig实现K8s节点免密登录
云原生·容器·kubernetes
木二_2 小时前
058.Kubernetes cert-manager 申请证书及ingress注解介绍
云原生·容器·kubernetes·cert-manager·证书管理
kabu_Charlie2 小时前
使用Docker运行python程序
运维·docker·容器
包饭厅咸鱼3 小时前
小龙虾openclaw----Windows+Wsl+Docker 安装openclaw 并接入飞书
windows·docker·openclaw·小龙虾
骥龙3 小时前
第五篇:运行时安全——Docker沙箱与命令审批机制
安全·docker·容器