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 进程。

相关推荐
DigitalOcean3 小时前
DigitalOcean容器注册表推出多注册表支持功能
容器
江湖有缘5 小时前
Jump个人仪表盘Docker化部署教程:从0到 搭建专属导航页
运维·docker·容器
Lam㊣5 小时前
Centos 7 系统docker:更换镜像源
linux·docker·centos
挖土机_0086 小时前
Kubernetes 1.35 原地扩容(In-Place Pod Resize)完整解析:机制、差异与实战示例
docker·kubernetes
左直拳7 小时前
将c++程序部署到docker
开发语言·c++·docker
五仁火烧7 小时前
Vue3 项目的默认端口行为
服务器·vue.js·nginx·容器·vue
hexiekuaile8 小时前
mongodb8.2知识
mongodb
Anyexyz8 小时前
【更新】境内 Docker 镜像状态监控——配置生成,一键复制!
运维·docker·容器
释怀不想释怀9 小时前
Docker(网络)
运维·docker·容器
羊羊羊i10 小时前
使用Informer监听K8s资源
云原生·容器·kubernetes