前言
MongoDB 是一款开源的非关系型数据库系统,具有高性能,高可靠性,易扩展等特点,广泛用于 Web 开发中的大数据存储和处理。而容器化部署则是当今云原生时代的必然选择,可以方便地管理和部署应用程序及其依赖环境。本文将详细介绍 MongoDB 容器化部署需要注意的问题和解决方案,适用于前端及相关从业人员。
Docker 安装 MongoDB
Docker 安装
Docker 是一种虚拟化技术,可以让开发人员在应用程序中打包他们的应用程序和依赖项,并将其转换为可移植的镜像。在本文中,在 Docker 容器中运行 MongoDB 数据库引擎。
Docker 安装步骤:
官网下载安装 Docker
在命令行运行以下命令,检查是否安装成功
------ --- -----------
从 Docker Hub 设置 MongoDB 镜像,在命令行中运行以下命令
------ ---- -----
运行 MongoDB,运行以下命令
------ --- -- -- ----------------------- ------ ------- -----
目前为止,MongoDB 就已经在 Docker 容器中安装成功了。
MongoDB 安装
Docker 中安装 MongoDB:
创建一个名为 MongoDB 的目录。这个目录会在 MongoDB 容器中创建一个持久化目录。
----- -- --------------
运行以下命令以安装 MongoDB,数据库文件将存储在 ~/mongodb/data 中。
------ --- -- -- ----------------------- ------ ------- -- ----------------------- -----
遇到问题
- 如果无法从 Docker 下载 MongoDB 镜像,可以尝试其他源 -- 修改 Docker 配置文件或安装 Docker 镜像加速器。
- 如果创建容器时出现权限不足错误,则可以在命令前加上 sudo。
MongoDB 配置
1. 数据目录
MongoDB 的数据存储在一个数据目录中,该数据目录由一个 mongod 进程访问。在 Docker 容器中,数据目录位于容器的 /data/db 目录。
如果需要在宿主系统中持久化 MongoDB,可以使用以下命令将宿主目录与容器中的数据目录连接。
------ --- -- -- ----------------------- ------ ------- -- ------------------------ -----
2. 确定 MongoDB 容器 IP
由于 Docker 中的容器无法使用宿主系统中的 localhost URL,需要先确定容器的 IP 地址。可以使用以下命令确定 MongoDB 容器的 IP 地址:
------ ------- -- -------- ------------------------------------------------- -------
因此,通常我们使用容器的 IP 地址,例如:
-------------------------------------
3. MongoDB 访问控制
MongoDB 默认情况下没有启用身份验证,这意味着任何人都可以对数据库进行读写操作。尽管 MongoDB 具有默认的安全设置,但它们不足以保护 MongoDB 数据库免受网络安全威胁。
当 MongoDB 身份验证被激活时,MongoDB 将验证连接到 MongoDB 的客户端是否拥有操作数据库的权限。我们可以通过以下一组命令在 MongoDB 中启用身份验证:
--- ----- --------------- ----- -------- ---- ----------- ------ ------------------------ --------------------- ----------------------- --
这段代码:
- 创建一个名为 admin 的数据库。
- 在 admin 数据库中创建一个名为 admin 的超级用户,并为该用户分配了三个数据库角色:userAdminAnyDatabase,dbAdminAnyDatabase 和 readWriteAnyDatabase。
如果有多个用户需要访问相同的数据库,请使用不同的角色分配不同的权限。
4. MongoDB 备份和恢复
备份 MongoDB 非常重要,可以通过两种方法进行备份:mongodump 和 mongorestore。mongodump 是 MongoDB 的备份工具,它可以将数据备份到一个可导入的格式,mongorestore 可以将生成的备份文件导入到 MongoDB 数据库中。
使用 mongodump 命令进行备份:
--------- ------ ------- ------ ----- ---- ------------------------- ----- --------
这段代码备份了名为 content_management_system 的数据库,并导出到主机文件系统的 ~/backup 目录中。注意,--host 和 --port 选项下文之前已经讲到。
使用 mongorestore 命令进行恢复:
------------ ------ ------- ------ ----- ---- ------------------------- -----------------------------------
这段代码将 ~/backup/content_management_system 目录中的数据恢复到远程 MongoDB 数据库中。
5. MongoDB 集群
MongoDB 支持内置的分片和副本集技术,可以用于实现高可用性和自动故障切换。这些功能非常适合在 Docker 容器中部署 MongoDB 时使用。
下面是一个 MongoDB 副本集 Docker 容器的例子:
------ --- ------ ----------------- - ----- ------ - -- ----------- - -- --------------------- - -- --------- - --------- --- ------------- ------------
--replSet rs0 选项将容器设为副本集组件。其他容器启动命令与之类似。然后加入集合。
----- ------ -------- ------ ---------- ------ - - ---------- --------- ------- ------------------------------- - -- --------------------
其中,HOST_IP 和 HOST_PORT 分别表示您的 MongoDB 容器的 IP 和端口。
结论
这篇文章详细讲述了 MongoDB 在 Docker 容器中的安装、配置、备份和恢复、集群等知识,介绍了最佳实践,适用于前端及相关从业人员。注意本文仅为参考;实际情况下可能需要根据实际需求进行调整。
参考
- MongoDB 官方文档:https://docs.mongodb.com/
- Docker 中文社区文档:https://www.docker.org.cn/
- MongoDB 管理工具:Robo 3T https://robomongo.org/
- MongoDB 图形化界面:Studio 3T https://studio3t.com/
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672d774addd3a70eb6da759e