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

相关推荐
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS4 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心4 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing4 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)4 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang4 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特4 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe4 天前
docker常见命令
docker
正经教主4 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
忆~遂愿4 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器