bitnamisecure/mongodbMongoDB® 是一个关系型开源 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:要附加到 mongodmanifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务