MongoDB® 是一个关系型开源 NoSQL 数据库。它易于使用,以类 JSON 文档格式存储数据,具备自动化扩展能力和高性能,非常适合开发云原生应用。
MongoDB® 概述 免责声明:本产品中提及的相关商标归各自公司所有。我们不提供任何这些产品的商业许可。本列表使用开源许可。MongoDB(R) 由 MongoDB 公司运营和维护,是与 Bitnami 完全独立的项目。
consoledocker run --name mongodb REGISTRY_NAME/bitnami/mongodb:latest
这些是由 Bitnami 构建和维护的加固型、最小化 CVE 镜像。Bitnami 安全镜像基于云优化、安全加固的企业级 OS Photon Linux。为什么选择 BSI 镜像?
每个镜像都附带有价值的安全元数据。您可以在 我们的公共目录 中查看元数据。注意:某些数据仅对 BSI 商业订阅 可用。
!应用详情 !打包报告
如果您正在寻找基于 Debian Linux 的上一代镜像,请参阅 Bitnami Legacy 仓库。
将 Bitnami 应用部署为 Helm Charts 是在 Kubernetes 上开始使用我们应用的最简单方法。在 Bitnami MongoDB® Chart GitHub 仓库 中了解更多安装信息。
非 root 容器镜像增加了额外的安全层,通常推荐用于生产环境。但是,由于它们以非 root 用户运行,特权任务通常受到限制。在 我们的文档 中了解更多关于非 root 容器的信息。
Dockerfile 链接在 我们的文档页面 中了解更多关于 Bitnami 标签策略以及滚动标签和不可变标签之间的区别。
您可以通过查看分支文件夹中存在的 tags-info.yaml 文件(即 bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml)来了解不同标签之间的对应关系。
通过关注 bitnami/containers GitHub 仓库 订阅项目更新。
获取 Bitnami MongoDB® Docker 镜像的推荐方法是从 Docker Hub 仓库 拉取预构建镜像。
consoledocker pull REGISTRY_NAME/bitnami/mongodb:latest
要使用特定版本,您可以拉取带版本的标签。您可以在 Docker Hub 仓库中查看 可用版本列表。
consoledocker pull REGISTRY_NAME/bitnami/mongodb:[TAG]
如果您愿意,也可以通过克隆仓库、切换到包含 Dockerfile 的目录并执行 docker build 命令来自行构建镜像。请记住在下面的示例命令中用正确的值替换 APP、VERSION 和 OPERATING-SYSTEM 路径占位符。
consolegit clone [***] cd bitnami/APP/VERSION/OPERATING-SYSTEM docker build -t REGISTRY_NAME/bitnami/APP:latest .
如果您删除容器,所有数据都将丢失,下次运行镜像时数据库将重新初始化。为避免数据丢失,您应该挂载一个即使在容器被删除后也会保留的卷。
为实现持久化,您应该在 /bitnami/mongodb 路径挂载一个目录。如果挂载的目录为空,将在首次运行时初始化。
consoledocker run \ -v /path/to/mongodb-persistence:/bitnami/mongodb \ REGISTRY_NAME/bitnami/mongodb:latest
或者通过修改此仓库中存在的 docker-compose.yml 文件:
diff... services: mongodb: ... volumes: - - mongodb_data:/bitnami/mongodb + - /path/to/mongodb-persistence:/bitnami/mongodb ...
注意:由于这是一个非 root 容器,挂载的文件和目录必须对 UID
1001具有适当的权限。
使用 Docker 容器网络,在容器内运行的 MongoDB® 服务器可以轻松被您的应用容器访问。
连接到同一网络的容器可以使用容器名称作为主机名相互通信。
在此示例中,我们将创建一个 MongoDB® 客户端实例,该实例将连接到与客户端在同一 docker 网络上运行的服务器实例。
consoledocker network create app-tier --driver bridge
使用 --network app-tier 参数作为 docker run 命令的参数,将 MongoDB® 容器附加到 app-tier 网络。
consoledocker run -d --name mongodb-server \ --network app-tier \ REGISTRY_NAME/bitnami/mongodb:latest
最后,我们创建一个新的容器实例来启动 MongoDB® 客户端并连接到上一步创建的服务器:
consoledocker run -it --rm \ --network app-tier \ REGISTRY_NAME/bitnami/mongodb:latest mongo --host mongodb-server
如果未指定,Docker Compose 会自动设置一个新网络并将所有部署的服务附加到该网络。但是,我们将显式定义一个名为 app-tier 的新 bridge 网络。在此示例中,我们假设您希望从自己的自定义应用镜像(在以下代码段中由服务名称 myapp 标识)连接到 MongoDB® 服务器。
yamlversion: '2' networks: app-tier: driver: bridge services: mongodb: image: REGISTRY_NAME/bitnami/mongodb:latest networks: - app-tier myapp: image: YOUR_APPLICATION_IMAGE networks: - app-tier
重要提示:
- 请将上述代码段中的 YOUR_APPLICATION_IMAGE 占位符更新为您的应用镜像
- 在您的应用容器中,使用主机名
mongodb连接到 MongoDB® 服务器
使用以下命令启动容器:
consoledocker-compose up -d
| 名称 | 描述 | 默认值 |
|---|---|---|
MONGODB_MOUNTED_CONF_DIR | 用于包含自定义配置文件(覆盖默认生成的配置文件)的目录 | ${MONGODB_VOLUME_DIR}/conf |
MONGODB_INIT_RETRY_ATTEMPTS | 检查服务初始化状态的最大重试次数 | 7 |
MONGODB_INIT_RETRY_DELAY | 检查服务初始化状态的重试间隔时间(秒) | 5 |
MONGODB_PORT_NUMBER | MongoDB 端口 | $MONGODB_DEFAULT_PORT_NUMBER |
MONGODB_EXTRA_FLAGS | MongoDB 初始化的额外标志 | nil |
MONGODB_ENABLE_NUMACTL | 使用 numactl 执行命令 | false |
MONGODB_SHELL_EXTRA_FLAGS | 初始化期间使用 mongodb 客户端时的额外标志(挂载初始化脚本时有用) | nil |
MONGODB_ADVERTISED_HOSTNAME | 用于公布 MongoDB 服务的主机名 | nil |
MONGODB_ADVERTISE_IP | 是否将公布的主机名设置为容器 IP | false |
MONGODB_ADVERTISED_PORT_NUMBER | MongoDB 公布的端口号。如果您有代理端口转发请求到容器,建议传递此环境变量 | nil |
MONGODB_DISABLE_JAVASCRIPT | 禁用 MongoDB 服务器端 JavaScript 执行 | no |
MONGODB_ENABLE_JOURNAL | 启用 MongoDB 日志 | nil |
MONGODB_DISABLE_SYSTEM_LOG | 禁用 MongoDB 守护进程系统日志 | nil |
MONGODB_ENABLE_DIRECTORY_PER_DB | 使用单独的文件夹存储每个数据库数据 | nil |
MONGODB_ENABLE_IPV6 | 使用 IPv6 进行数据库连接 | nil |
MONGODB_SYSTEM_LOG_VERBOSITY | MongoDB 守护进程日志级别 | nil |
MONGODB_ROOT_USER | MongoDB 根用户用户名 | root |
MONGODB_ROOT_PASSWORD | MongoDB 根用户密码 | nil |
MONGODB_USERNAME | 初始化时生成的用户 | nil |
MONGODB_PASSWORD | MONGODB_USERNAME 中指定的非根用户的密码 | nil |
MONGODB_DATABASE | 初始化时创建的数据库名称 | nil |
MONGODB_METRICS_USERNAME | 用于指标收集的用户,例如与 mongodb_exporter 一起使用 | nil |
MONGODB_METRICS_PASSWORD | MONGODB_METRICS_USERNAME 中指定的非根用户的密码 | nil |
MONGODB_EXTRA_USERNAMES | 要创建的额外用户的逗号或分号分隔列表 | nil |
MONGODB_EXTRA_PASSWORDS | MONGODB_EXTRA_USERNAMES 中指定的用户的密码的逗号或分号分隔列表 | nil |
MONGODB_EXTRA_DATABASES | 初始化时为 MONGODB_EXTRA_USERNAMES 中指定的用户创建的数据库的逗号或分号分隔列表 | nil |
ALLOW_EMPTY_PASSWORD | 允许无需设置任何密码访问 MongoDB | no |
MONGODB_REPLICA_SET_MODE | MongoDB 副本集模式。可以是 primary、secondary 或 arbiter 之一 | nil |
MONGODB_REPLICA_SET_NAME | MongoDB 副本集名称 | $MONGODB_DEFAULT_REPLICA_SET_NAME |
MONGODB_REPLICA_SET_KEY | MongoDB 副本集密钥 | nil |
MONGODB_INITIAL_PRIMARY_HOST | 副本集主节点的主机名(对于仲裁节点和从节点是必需的) | nil |
MONGODB_INITIAL_PRIMARY_PORT_NUMBER | 副本集主节点的端口(对于仲裁节点和从节点是必需的) | 27017 |
MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD | 主节点根用户密码(对于仲裁节点和从节点是必需的) | nil |
MONGODB_INITIAL_PRIMARY_ROOT_USER | 主节点根用户名(对于仲裁节点和从节点是必需的) | root |
MONGODB_SET_SECONDARY_OK | 将节点标记为可读。在 PVC 丢失的情况下是必需的 | no |
MONGODB_DISABLE_ENFORCE_AUTH | 默认情况下,将强制执行 MongoDB 身份验证。如果设置为 true,MongoDB 将不强制执行身份验证 | false |
| 名称 | 描述 | 值 |
|---|---|---|
MONGODB_VOLUME_DIR | 持久化基本目录 | $BITNAMI_VOLUME_DIR/mongodb |
MONGODB_BASE_DIR | MongoDB 安装目录 | $BITNAMI_ROOT_DIR/mongodb |
MONGODB_CONF_DIR | MongoDB 配置目录 | $MONGODB_BASE_DIR/conf |
MONGODB_DEFAULT_CONF_DIR | MongoDB 默认配置目录 | $MONGODB_BASE_DIR/conf.default |
MONGODB_LOG_DIR | MongoDB 日志目录 | $MONGODB_BASE_DIR/logs |
MONGODB_DATA_DIR | MongoDB 数据目录 | ${MONGODB_VOLUME_DIR}/data |
MONGODB_TMP_DIR | MongoDB 临时目录 | $MONGODB_BASE_DIR/tmp |
MONGODB_BIN_DIR | MongoDB 可执行文件目录 | $MONGODB_BASE_DIR/bin |
MONGODB_TEMPLATES_DIR | mongodb.conf 模板文件存储目录 | $MONGODB_BASE_DIR/templates |
MONGODB_MONGOD_TEMPLATES_FILE | mongodb.conf 模板文件路径 | $MONGODB_TEMPLATES_DIR/mongodb.conf.tpl |
MONGODB_CONF_FILE | MongoDB 配置文件路径 | $MONGODB_CONF_DIR/mongodb.conf |
MONGODB_KEY_FILE | MongoDB 副本集密钥文件路径 | $MONGODB_CONF_DIR/keyfile |
MONGODB_DB_SHELL_FILE | MongoDB dbshell 文件路径 | /.dbshell |
MONGODB_RC_FILE | MongoDB rc 文件路径 | /.mongorc.js |
MONGOSH_DIR | mongosh 目录路径 | /.mongodb |
MONGOSH_RC_FILE | mongosh rc 文件路径 | /.mongoshrc.js |
MONGODB_PID_FILE | MongoDB PID 文件路径 | $MONGODB_TMP_DIR/mongodb.pid |
MONGODB_LOG_FILE | MongoDB 日志文件路径 | $MONGODB_LOG_DIR/mongodb.log |
MONGODB_INITSCRIPTS_DIR | MongoDB 容器初始化脚本目录路径 | /docker-entrypoint-initdb.d |
MONGODB_DAEMON_USER | MongoDB 系统用户 | mongo |
MONGODB_DAEMON_GROUP | MongoDB 系统组 | mongo |
MONGODB_DEFAULT_PORT_NUMBER | 构建时设置的 MongoDB 端口 | 27017 |
MONGODB_DEFAULT_ENABLE_JOURNAL | 构建时启用 MongoDB 日志 | true |
MONGODB_DEFAULT_DISABLE_SYSTEM_LOG | 构建时设置禁用 MongoDB 守护进程系统日志 | false |
MONGODB_DEFAULT_ENABLE_DIRECTORY_PER_DB | 构建时设置使用单独的文件夹存储每个数据库数据 | false |
MONGODB_DEFAULT_ENABLE_IPV6 | 构建时设置使用 IPv6 进行数据库连接 | false |
MONGODB_DEFAULT_SYSTEM_LOG_VERBOSITY | 构建时设置的 MongoDB 守护进程日志级别 | 0 |
MONGODB_DEFAULT_REPLICA_SET_NAME | 构建时设置的 MongoDB 副本集名称 | replicaset |
当容器首次执行时,它将执行位于 /docker-entrypoint-initdb.d 且扩展名为 .sh 和 .js 的文件。
为了使您的自定义文件位于 docker 镜像中,您可以将它们挂载为卷。
可以通过以下环境变量将额外的命令行标志传递给 mongod 服务命令:
MONGODB_EXTRA_FLAGS:要附加到 mongod来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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