本仓库包含适用于通用场景和OpenShift的MongoDB镜像Dockerfile,用户可选择基于RHEL或CentOS的镜像。其中CentOS镜像可在Docker Hub获取,镜像名为centos/mongodb-30-upg-centos7。
注意:此镜像仅支持从MongoDB 2.6升级到3.2。
该容器镜像提供MongoDB mongod守护进程和客户端应用的容器化打包。mongod服务器守护进程接受客户端连接,并代表客户端提供对MongoDB数据库内容的访问。更多关于MongoDB项目的信息可访问其网站([]
适用于需要将MongoDB 2.6数据库升级到3.2版本的用户,提供安全、便捷的容器化升级环境,支持单机部署场景下的数据迁移和版本升级。
以下示例基于centos/mongodb-30-upg-centos7镜像。若只需设置必填环境变量并将数据库存储在主机文件系统的/home/user/database目录,执行以下命令:
bash$ docker run -d -e MONGODB_USER=<用户> -e MONGODB_PASSWORD=<密码> -e MONGODB_DATABASE=<数据库名> -e MONGODB_ADMIN_PASSWORD=<管理员密码> -v /home/user/database:/var/lib/mongodb/data centos/mongodb-30-upg-centos7
首次使用指定的共享卷初始化数据库时,将创建两个用户:admin(管理员)和MONGODB_USER(普通用户),随后启动MongoDB守护进程。若将卷重新挂载到其他容器,将跳过数据库用户创建步骤,仅更新用户密码并启动MongoDB守护进程。
通过-e VAR=VALUE参数可设置以下环境变量:
必填环境变量
MONGODB_ADMIN_PASSWORD:管理员用户密码MONGODB_USER:普通用户名(需与以下两个变量同时指定)MONGODB_PASSWORD:普通用户密码(需与上述变量同时指定)MONGODB_DATABASE:数据库名(需与上述变量同时指定)可选环境变量(影响MongoDB配置)
MONGODB_PREALLOC(默认:false):启用数据文件预分配MONGODB_NOPREALLOC(已弃用):禁用数据文件预分配,建议使用MONGODB_PREALLOCMONGODB_SMALLFILES(默认:true):设置MongoDB使用较小的默认数据文件大小MONGODB_QUIET(默认:true):以静默模式运行,限制输出信息量通过-v /host:/container参数可挂载以下目录:
/var/lib/mongodb/data:MongoDB数据目录注意:从主机挂载目录到容器时,需确保挂载目录具有适当权限,且目录的所有者和组与容器内运行的用户UID或名称匹配。
管理员用户名为admin,密码需通过MONGODB_ADMIN_PASSWORD环境变量指定。该用户拥有dbAdminAnyDatabase、userAdminAnyDatabase、readWriteAnyDatabase、clusterAdmin角色(更多信息参见MongoDB***文档)。
普通用户名为$MONGODB_USER,在数据库$MONGODB_DATABASE中创建,密码通过MONGODB_PASSWORD环境变量指定。该用户仅拥有数据库的readWrite角色。
由于密码属于镜像配置的一部分,修改数据库用户(MONGODB_USER)和管理员用户密码的唯一支持方式是分别更新环境变量MONGODB_PASSWORD和MONGODB_ADMIN_PASSWORD。直接在MongoDB中修改密码会导致环境变量值与实际密码不匹配,容器启动时将重置密码为环境变量中的值。
可使用source-to-image扩展本镜像。例如,使用~/image-configuration/目录中的配置构建自定义MongoDB镜像my-mongodb-centos7:
bash$ s2i build ~/image-configuration/ centos/mongodb-32-centos7 my-mongodb-centos7
传递给s2i build的目录可包含以下一个或多个子目录:
mongodb-cfg/包含的mongod.conf文件将用于run-mongod或run-mongod-replication命令的mongod配置:
envsubst命令,支持通过环境变量自定义配置MONGODB_REPLICA_NAME环境变量设置mongodb-pre-init/包含的shell脚本(*.sh)将在mongod服务器启动前执行
mongodb-init/包含的shell脚本(*.sh)将在mongod服务器首次启动(数据目录为空)时执行:
run-mongod命令在此阶段不启用认证run-mongod-replication命令在此阶段启用认证mongodb-start/与mongodb-init/语义相同,但始终执行(若mongodb-init/脚本存在则在其后执行);使用run-mongod-replication命令且数据目录已初始化时,将跳过这些脚本
mongo_common_args:包含mongod服务器的参数(修改可能破坏现有自定义脚本,如默认脚本)$MEMBER_ID:仅在副本集脚本(run-mongod-replication命令)中定义,表示容器ID,副本集中每个容器的值不同,可用于编写仅部分容器执行的脚本s2i build会将所有提供的文件复制到新镜像的/opt/app-root/src目录。若目标目录已存在配置文件,同名文件将被覆盖。用户提供的文件优先于/usr/share/container-scripts/mongodb/中的默认文件,可覆盖默认文件。
每次使用docker run启动镜像时,也可通过挂载目录自定义镜像:将配置目录挂载到容器的/opt/app-root/src/(-v ./image-configuration/:/opt/app-root/src/),这会覆盖镜像中内置的自定义配置。
容器中的mongod守护进程日志输出到标准输出,可通过以下命令查看容器日志:
bashdocker logs <容器ID>
本容器镜像的Dockerfile及其他源码可在[***]Dockerfile,RHEL的Dockerfile名为Dockerfile.rhel7。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429