MongoDB 是一个开源的面向文档的数据库,旨在存储海量数据,并允许您高效地处理这些数据。它被归类为 NoSQL(非 SQL)数据库,因为 MongoDB 中的数据存储和检索并非以表的形式进行。
在本指南中,我们将学习如何将 MongoDB 作为 docker 容器运行。首先,让我们快速了解一下什么是 docker 容器。
什么是 Docker 容器?
容器化是基于操作系统的虚拟化,它在用户空间中创建多个虚拟单元,称为容器。容器共享相同的主机内核,但通过操作系统级别的私有命名空间和资源控制机制彼此隔离。
与虚拟机管理程序相比,基于容器的虚拟化在虚拟化和隔离方面提供了不同的抽象级别。虚拟机管理程序使用大量硬件,这会导致虚拟化硬件和虚拟设备驱动程序方面的开销。在每个虚拟机实例中,完整的操作系统(例如 Linux、Windows)都运行在此虚拟化硬件之上。要了解更多关于 Docker 容器的信息,请参阅使用 Docker 进行容器化。
要以容器的形式部署应用程序,您需要构建一个docker 镜像,通过该镜像您可以将其作为容器运行,要构建镜像,您需要编写Dockerfile。
MongoDB 可以在 Docker 容器中运行吗?
是的,您可以将 MongoDB 作为 Docker 容器运行。DockerHub 中提供两种 MongoDB 镜像:社区版和企业版。您可以根据组织的需求选择其中一种作为 Docker 容器运行,或者您也可以根据自身需求编写 Dockerfile 来构建自己的 Docker 镜像。要了解 Dockerfile 的语法,请参阅什么是 Dockerfile 语法?
如何在 Docker 上设置 MongoDB
要将 MongoDB 与 Docker 结合使用,请按照以下简单步骤操作:
将 MongoDB 作为 Docker 容器运行的步骤
步骤 1: 拉取 MongoDB 容器。
docker pull mongo:latest
第 2 步:运行容器。
docker run -d -p 27017:27017 --name=mongo-example mongo:latest
其中-d标志以分离(后台)模式运行容器,-p 27017:27017 将容器的端口27017绑定到主机的27017 , –name=mongo-example将为您的容器提供一个名称,而不是任意名称。
步骤3:验证状态。
docker ps
可以看到,容器已成功运行。
步骤 4:访问正在运行的容器中的 MongoDB shell
docker exec -it mongo-example mongo
正如您所见,我们可以访问交互式 shell。
使用 Docker 有哪些好处?
-
平台无关性: Docker 容器具有平台无关性,这意味着 Docker 镜像可以在一个环境中构建,并在另一个环境中运行。它将在您将镜像作为容器运行的所有环境中保持一致。
-
重量轻:与虚拟化部署相比,Docker 容器重量轻,因此易于维护且占用更少的空间。
-
轻松扩展:在虚拟化部署中,如果您想要扩展,则需要整个虚拟机,但在 Docker 容器中,您只需要根据传入流量扩展可以自动化的容器。
-
负载平衡:可以根据应用程序接收的负载在两个容器之间进行负载平衡,并且还可以根据接收的流量量将流量转移到多个容器。
-
资源隔离:您可以为应用程序分配特定数量的资源,如 CPU、内存和存储,以确保它们不会达到分配的限制。
Docker 和 MongoDB Atlas
MongoDB Atlas
MongoDB Atlas 是一个完全由 MongoDB 管理和运营的数据库服务 (DBaaS) 平台。您只需专注于数据提取和数据导入,其余工作(例如扩展、负载均衡和底层基础架构)将由 MongoDB 自行处理。连接到此数据库的首选方式是使用容器化的应用程序。
使用 Docker 以容器形式部署的应用程序在所有环境中都将非常稳定,因此最好借助数据库字符串从 MongoDB 数据库中提取数据。