想要自行托管 MongoDB,或在本地环境中先试一试?如果您暂时不想直接使用 MongoDB Atlas,可以从几种方式入手,其中一种就是使用 Docker 容器。
使用 Docker 管理您的 MongoDB 实例是一个稳妥的选择,配置不到一分钟即可完成,而且易于维护或在主机之间迁移。
本文将介绍几种使用 Docker 部署 MongoDB 的方法,并分享一些实用技巧。您也可以观看这段视频快速了解要点。
前提条件
要跟随本教程操作,您需要先在电脑上安装Docker Engine 。支持 macOS、Windows 或 Linux。您不一定要安装 Docker Desktop,但根据所用操作系统不同,它可能让您的 Docker 体验更顺畅。
例如,我在 macOS 上通过 Rancher Desktop 使用 Docker Engine,运行良好。
如果想温习 Docker 基础,建议查看 Docker for Beginners: A Practical Guide to Containers。
下载 MongoDB 的 Docker 镜像
在 Docker 容器中运行 MongoDB 之前,您需要先下载一个满足需求的镜像。请在命令行中执行以下命令:
docker pull mongodb/mongodb-community-server:latest技术支持
上述命令会下载带有“latest”标签的官方 MongoDB 社区版(CE)镜像。
需要注意的是,mongodb/mongodb-community-server 和 mongodb/mongodb-enterprise-server 是由 MongoDB 维护的官方 Docker 镜像。其他镜像由外部社区维护,可能会产生不同或意外的结果。
镜像下载完成后,我们就可以查看部署选项了。
使用 Docker Run 命令将 MongoDB 作为独立容器运行
要用 Docker 最快地部署 MongoDB,只需配合少量配置参数使用 docker run 命令。例如,您可以在命令行中执行以下命令:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 --name mongodb mongodb/mongodb-community-server:latest技术支持
上述命令会将镜像部署为名为“MongoDB”的容器。容器会进行端口映射,这意味着主机可以通过“27017”端口与其交互。示例中也设置了 root 身份验证信息,但根据您的部署需求,您可以使用 Docker Secrets 或其他受保护的方式传递敏感信息。
在上述示例中,所有数据都存储在容器内。MongoDB 数据(包括数据库、集合,甚至文档)只会在该容器存在期间持久保存。这在测试时可能合适,但很多情况下,您会希望在 Docker 中可靠地持久化 MongoDB 数据。为此,应该使用以下命令创建一个 Docker 卷:
docker volume create mongodb技术支持
要让容器使用该卷,您可以将部署命令修改为如下形式:
docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=nraboy -e MONGO_INITDB_ROOT_PASSWORD=password1234 -v mongodb:/data/db --name mongodb mongodb/mongodb-community-server:latest技术支持
请注意,这次我们指定了要使用的卷。使用卷时,即使终止或更新容器,您的数据也会保留。
在 Docker 容器中运行 MongoDB 后,您可以使用 mongodb://nraboy:password1234@localhost:27017 作为连接字符串,通过您偏好的工具进行连接。
通过 Docker Compose 将 MongoDB 纳入您的技术栈或项目
如果您计划在某个通过 Docker 管理的项目中使用 MongoDB,那么用 Docker Compose 配置来管理 MongoDB 可能更合适。这类配置通常用于为项目构建沙箱环境,常被称为“栈”。
在您的电脑某处创建一个 docker-compose.yml 文件,并写入以下内容:
services:
mongodb:
image: mongodb/mongodb-community-server:latest
container_name: mongodb
restart: unless-stopped
ports:
- "27017:27017"
volumes:
- mongodb:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: nraboy
MONGO_INITDB_ROOT_PASSWORD: password1234
volumes:
mongodb:
external: true技术支持
上述配置使用了我们在单条命令行中已经见过的信息。与前一种方法一样,这里假设您已经创建了由 Docker 管理的 mongodb 卷。如果还未创建,请再次执行以下命令:
docker volume create mongodb技术支持
当然,您可以根据需要以其他方式管理 Docker 卷。创建卷只是多种做法之一。
将命令行的工作目录切换到 docker-compose.yml 文件所在目录后,执行以下命令:
docker compose up -d技术支持
上述命令会以分离模式启动您的栈。
您可以尝试使用 MongoDB Compass、某种语言驱动(如 Node.js),或 MongoDB Shell 连接实例,以验证一切是否正常工作。
如果严格按照示例操作,您的连接字符串将是 mongodb://nraboy:password1234@localhost:27017,但根据您的实际操作,可能会有所不同。
要关闭 MongoDB 实例,请在与该 YAML 配置同一工作目录的命令行中执行以下命令:
docker compose down技术支持
由于我们使用的是外部卷,下次启动容器时,一切数据仍会被保留。
结论
Docker 让在自托管或本地环境中使用 MongoDB 变得轻而易举。您无需担心通用操作系统配置,也无需担心不同电脑之间的差异。每次都能获得一致的体验。
想更进一步,值得学习如何在 MongoDB 中创建数据库。
想要自行托管 MongoDB,或在本地环境中先试一试?如果您暂时不想直接使用 MongoDB Atlas,可以从几种方式入手,其中一种就是使用 Docker 容器。
使用 Docker 管理您的 MongoDB 实例是一个稳妥的选择,配置不到一分钟即可完成,而且易于维护或在主机之间迁移。
本文将介绍几种使用 Docker 部署 MongoDB 的方法,并分享一些实用技巧。您也可以观看这段视频快速了解要点。
前提条件
要跟随本教程操作,您需要先在电脑上安装Docker Engine 。支持 macOS、Windows 或 Linux。您不一定要安装 Docker Desktop,但根据所用操作系统不同,它可能让您的 Docker 体验更顺畅。
例如,我在 macOS 上通过 Rancher Desktop 使用 Docker Engine,运行良好。
如果想温习 Docker 基础,建议查看 Docker for Beginners: A Practical Guide to Containers。
下载 MongoDB 的 Docker 镜像
在 Docker 容器中运行 MongoDB 之前,您需要先下载一个满足需求的镜像。请在命令行中执行以下命令:
上述命令会下载带有“latest”标签的官方 MongoDB 社区版(CE)镜像。
需要注意的是,mongodb/mongodb-community-server 和 mongodb/mongodb-enterprise-server 是由 MongoDB 维护的官方 Docker 镜像。其他镜像由外部社区维护,可能会产生不同或意外的结果。
镜像下载完成后,我们就可以查看部署选项了。
使用 Docker Run 命令将 MongoDB 作为独立容器运行
要用 Docker 最快地部署 MongoDB,只需配合少量配置参数使用
docker run命令。例如,您可以在命令行中执行以下命令:上述命令会将镜像部署为名为“MongoDB”的容器。容器会进行端口映射,这意味着主机可以通过“27017”端口与其交互。示例中也设置了 root 身份验证信息,但根据您的部署需求,您可以使用 Docker Secrets 或其他受保护的方式传递敏感信息。
在上述示例中,所有数据都存储在容器内。MongoDB 数据(包括数据库、集合,甚至文档)只会在该容器存在期间持久保存。这在测试时可能合适,但很多情况下,您会希望在 Docker 中可靠地持久化 MongoDB 数据。为此,应该使用以下命令创建一个 Docker 卷:
要让容器使用该卷,您可以将部署命令修改为如下形式:
请注意,这次我们指定了要使用的卷。使用卷时,即使终止或更新容器,您的数据也会保留。
在 Docker 容器中运行 MongoDB 后,您可以使用
mongodb://nraboy:password1234@localhost:27017作为连接字符串,通过您偏好的工具进行连接。通过 Docker Compose 将 MongoDB 纳入您的技术栈或项目
如果您计划在某个通过 Docker 管理的项目中使用 MongoDB,那么用 Docker Compose 配置来管理 MongoDB 可能更合适。这类配置通常用于为项目构建沙箱环境,常被称为“栈”。
在您的电脑某处创建一个
docker-compose.yml文件,并写入以下内容:上述配置使用了我们在单条命令行中已经见过的信息。与前一种方法一样,这里假设您已经创建了由 Docker 管理的
mongodb卷。如果还未创建,请再次执行以下命令:当然,您可以根据需要以其他方式管理 Docker 卷。创建卷只是多种做法之一。
将命令行的工作目录切换到
docker-compose.yml文件所在目录后,执行以下命令:上述命令会以分离模式启动您的栈。
您可以尝试使用 MongoDB Compass、某种语言驱动(如 Node.js),或 MongoDB Shell 连接实例,以验证一切是否正常工作。
如果严格按照示例操作,您的连接字符串将是
mongodb://nraboy:password1234@localhost:27017,但根据您的实际操作,可能会有所不同。要关闭 MongoDB 实例,请在与该 YAML 配置同一工作目录的命令行中执行以下命令:
由于我们使用的是外部卷,下次启动容器时,一切数据仍会被保留。
结论
Docker 让在自托管或本地环境中使用 MongoDB 变得轻而易举。您无需担心通用操作系统配置,也无需担心不同电脑之间的差异。每次都能获得一致的体验。
想更进一步,值得学习如何在 MongoDB 中创建数据库。