已编辑 2 几个月前 通过 ExtremeHow 编辑团队
DockerLinuxMongoDB数据库容器化开发虚拟化部署设置配置
翻译更新 2 几个月前
MongoDB是一种流行的NoSQL数据库,允许灵活、可扩展的数据管理。而Docker是一个让软件在容器中运行的平台,确保应用程序可以在任何平台上一致运行。在Linux上使用Docker设置MongoDB,将MongoDB的灵活性与Docker强大的容器化功能结合在一起。本指南将介绍在Linux环境中如何在Docker上设置MongoDB的过程。我们将详细介绍每一步,以确保您能够成功实现它。
在开始在Docker上设置MongoDB之前,请确保您具有以下条件:
如果您的Linux系统上尚未安装Docker,可以按以下步骤安装:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
按照这些步骤操作后,Docker应该已经成功安装在您的Linux系统上。您可以使用以下命令检查已安装的版本:
docker --version
现在Docker已经安装,下一步是从Docker Hub拉取MongoDB镜像。Docker Hub是一个云端库,用户可以在这里找到各种软件的镜像。要拉取MongoDB镜像,使用以下命令:
sudo docker pull mongo
此命令将从Docker Hub下载最新版本的MongoDB。您可以通过在“mongo”后面加上一个冒号(:)和版本号来指定特定版本。例如,要拉取4.4版本,可以使用:
sudo docker pull mongo:4.4
下载MongoDB镜像后,您可以使用该镜像创建并运行一个容器。容器就像一个轻量级的虚拟机,可以运行不同的应用程序。执行以下命令以运行一个MongoDB容器:
sudo docker run --name mongodb -d -p 27017:27017 mongo
命令分析:
--name mongodb
:将容器命名为“mongodb”。-d
:在隔离模式下运行容器,即将在后台运行。-p 27017:27017
:将主机机的27017端口映射到容器的27017端口,这是MongoDB监听的默认端口。mongo
:指定使用的MongoDB镜像。一旦MongoDB容器运行,您必须验证一切是否正确设置。使用以下命令检查Docker容器的状态:
sudo docker ps
这将显示正在运行的容器列表,您也将看到MongoDB容器在其中。它将显示如容器ID、名称、所用镜像和映射端口等详细信息。
您可以通过使用MongoDB shell进一步验证。首先,登录正在运行的MongoDB容器:
sudo docker exec -it mongodb bash
在容器shell中,通过键入以下命令启动MongoDB shell:
mongo
这将为您提供MongoDB shell提示,这将确认MongoDB正在Docker容器内运行。
默认情况下,存储在Docker容器中的任何数据都是非持久性的。这意味着如果删除容器,所有在其中创建的数据都将丢失。要持久化数据,您必须将主机机上的目录映射到容器内的目录。
为此,停止MongoDB容器:
sudo docker stop mongodb
然后运行一个带有卷映射的新容器:
sudo docker run --name mongodb -d -p 27017:27017 -v /my/own/datadir:/data/db mongo
新标志的解释:
-v /my/own/datadir:/data/db
:将容器内的/data/db
目录映射到主机机上的/my/own/datadir
。将/my/own/datadir
替换为您希望在主机机上保存MongoDB数据的路径。该目录将存储所有MongoDB数据,即使删除容器也会持久化。
以默认设置运行MongoDB可能不安全用于生产环境。以下是一些基本步骤以增强安全性。
首先,启动MongoDB shell并创建管理员用户:
mongo
然后转到admin
数据库:
use admin
执行以下命令创建管理员用户。确保将“username”和“password”替换为您想要的用户名和密码:
db.createUser({ user: "username", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
要打开身份验证,您需要编辑配置文件。退出shell并停止正在运行的容器:
exit
sudo docker stop mongodb
启动一个启用了“auth”的新MongoDB容器:
sudo docker run --name mongodb -d -p 27017:27017 -v /my/own/datadir:/data/db mongo --auth
现在,无论何时连接到数据库,都将需要身份验证。
对于更高级的配置,您可以在启动MongoDB容器时提供配置文件。在主机机上创建配置文件,并使用以下命令传递给容器:
sudo docker run --name mongodb -d -p 27017:27017 -v /my/own/datadir:/data/db -v /my/own/config:/etc/mongo mongo --config /etc/mongo/mongod.conf
将/my/own/config
替换为您的mongod.conf
文件所在的目录。这允许您自定义设置,如副本集、分片和日志记录。
在Linux上使用Docker设置MongoDB提供了一种灵活且高效的数据库管理方式,同时具有Docker的容器化的额外优势。这确保了环境一致性并简化了部署流程。通过遵循这些步骤,您将能够有效地在Docker上运行和保护MongoDB。
Docker的隔离功能使您可以轻松创建和删除容器,使测试和管理简化。添加安全性,例如数据持久化和身份验证,可以使MongoDB的强大功能在生产环境中得到安全利用。请记住,使用容器化技术,了解如何处理数据存储和配置可以大大提高数据库设置的性能和可靠性。
如果你发现文章内容有误, 您可以