了解MongoDB Docker的概念
![]()
目录
在所有的noSQL数据库中, MongoDB是最有名的面向文档的数据库,被许多现代的网络应用所使用。Docker确保对MongoDB的支持,通过容器提供轻松的可扩展性和应用使用。
将MongoDB配置为Docker中的一个容器
Docker作为一个工具集,用于使用容器创建、运行和部署应用程序。为了将应用程序和所有的依赖关系打包成一个单一的包,使用了一个容器,这是一个标准的软件单元。无论硬件结构或底层配置如何,这些容器可以在任何服务器平台上运行。
为了运行MongoDB实例,使用了Docker。如果MongoDb被设置为一个容器,用户就可以创建可扩展和可移植的noSQL数据库。用户完全不需要担心底层配置,因为容器化的MongoDb实例与非容器化的MongoDB实例完全一样。
用Docker-Compose设置Docker平台
在这里,我们将设置一个简单的Docker安装,在基于Ubuntu的服务器上运行容器。Docker安装的软件包可以从官方的Docker存储库中获得。
为了安装Docker,我们需要遵循下面的步骤。
- 为了更新现有的软件包,运行以下命令。
sudo apt update && sudo apt upgrade -y
- 对于安装先决条件的软件包,运行下面的命令。
sudo apt install apt-transport-https ca-certificates curl software-perties-common
- 为了从官方Docker仓库添加GPG密钥,你需要运行以下命令。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 对于添加官方Docker仓库到APT源,可以运行以下命令。
sudo add-apt-repository \\
"deb \[arch=amd64\] https://download.docker.com/linux/ubuntu $(lsb\_release -cs) stable"
- Ubuntu软件包列表需要更新。
sudo apt update
- Docker仓库需要被验证。
apt-cache policy docker-ce
- 安装社区版的Docker。
sudo apt install docker-ce
- 可以用下面的命令检查安装状态,如果服务状态返回 "running",我们可以说Docker已经安装成功,而且在系统上也处于激活状态。
sudo systemctl status docker
现在让我们来看看Docker Compose的安装过程。
安装Docker Compose
对于创建和管理Docker容器,可以使用命令行界面或CLI。但对于处理多个容器和配置,CLI或命令行界面有时会很乏味。
用户可以使用Docker来制作多个容器,并将它们集成到一个应用程序中。为了创建可以使用compos-up和down命令轻松执行的Docker compose文件,Docker Compose通常使用YAML格式。所有的容器和组合文件中的配置都可以通过这些命令分别创建或删除。
现在,为了在Ubuntu服务器上安装Docker Compose,我们需要遵循下面的步骤。
- 首先,需要安装Docker Compose的当前稳定版本。
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 对于下载的二进制文件,需要应用所有可执行的权限。
\>sudo chmod +x /usr/local/bin/docker-compose
- 然后需要验证Docker Compose的安装。
docker-compose --版本
现在让我们来看看使用Docker Compose文件设置MongoDB容器的设置过程。
设置MongoDB容器
在创建compose文件之前,需要使用搜索命令搜索官方的MongoDB容器镜像。
sud cker search mongodb
一个正式的MongoDB容器镜像会在搜索结果中显示出mongo存在于docker容器注册表中。在容器内的data/db目录中,数据库被MongoDB容器所存储。
然后为了创建Docker Compose文件,需要创建一个名为 "mongodb "的目录。之后,将在MongoDB目录内创建另一个名为 "数据库 "的目录,用于映射容器的数据库位置,这将实现对数据库的本地访问。
-pv操作符用于创建父文件夹。
\>mkdir -pv mongodb/database
之后,为了构建MongoDB容器,在mongodb目录下将创建docker-compose.yml。创建的文件将包含以下代码。
version: "3.8"
services:
mongodb:
image : mongo
container_name: mongodb
environment:
- PUID=1000
- PGID=1000
volumes:
- /home/barry/mongodb/database:/data/db
ports:
- 27017:27017
restart: unless-stopped
对于定义用户和容器组,一般使用环境变量,之后将本地端口27017映射到内部端口27017。然后为了重启,设置重启策略。
你可以使用以下命令检查项目的文件结构。
tree mongodb
现在为了启动MongoDB容器,首先我们需要进入MongoDB文件夹,然后运行docker-compos-up命令。
sudo docker-compose up -d
在上面的命令中,为了将分离的容器作为后台进程运行,使用了-d操作符。
为了从Docker注册表中提取mongo镜像,并使用docker-compose.yml文件中的参数创建容器,使用了up命令。
现在为了验证容器的运行状态,在本地文件夹中输入以下命令。
sudo docker ps -a
对于给定的命令,-a操作符是用来显示系统内所有的容器,无论其状态如何。
现在让我们来讨论与MongoDB容器的交互程序。
与MongoDB容器的交互
- 为了访问MongoDB命令的终端,可以使用docker exec命令。Docker交互式终端用于建立连接,因为容器是以分离模式运行的。
sudo docker exec -it mongodb bash
- 现在,用于访问MongoDB的mongo命令将在容器的bash终端被调用。除了这三个文件之外,我们将创建一个名为 "food "的数据库和一个名为 "fruit "的数据库。
1.使用下面的命令切换数据库。
use food
2.创建集合。
db.createCollection("fruits")
3.插入文件。
db.fruit.insertMany(\[ {name: "apple", origin: "usa", price: 5}, {name: "orange", origin: "Italy", price: 3}, {name: "mango", origin: "malaysia", price: 3}\]
4.然后将使用find命令来搜索文件。
db.fruit.find().pretty()
5.对于退出MongoDB外壳和容器外壳,可以使用exit命令。
现在让我们来讨论一下与MongoDB容器的外部连接。
与MongoDB容器的外部连接
- 在创建MongoDB容器时,MongoDB端口被映射到服务器中的相应端口。这就是MongoDB容器暴露于外部网络的方式。通过简单地将mongo命令指向相应的端口或服务器,容器就可以从外部终端连接。
mongo 10.10.10.60:27017
- 为了搜索名为fruit的集合及其文件以验证我们是否连接到了MongoDB容器,使用了find命令。
show databases
use food
show collections
db.fruits.find().pretty()
现在让我们来讨论一下数据的弹性。
数据弹性
我们已经将数据库映射到本地文件夹中。因此,如果容器以某种方式被移除,本地文件夹中保存的数据可以用来重新创建一个新的MongoDB容器。我们将执行以下步骤来测试这个理论。
- 需要使用以下命令移除MongoDB容器。
sudo docker-compose down
- 使用下面的命令删除本地的mongo镜像。
sudo dcker rmi mongo
- 然后验证本地数据库文件
- 现在运行下面的命令后,我们可以得到确认,即使在移除容器后,映射到本地目录的数据仍然保存。
sudo tree mongodb
现在我们将看到使用原来的docker-compose.yml生命重新创建Mongodb容器的过程。
- 在MongoDB文件夹中执行以下命令。
sudo docker-compose up -d
- 同样,MongoDB容器中的数据可以使用以下命令进行验证。
sudo docker exec -it mongodb bash
- 之后,我们将获得对容器中bash shell的访问权,我们将检查水果的收集情况。
show databases
use food
db.fruits.find().pretty()
- 我们通过运行上述命令得到的结果表明,该容器是用本地信息创建的
容器日志文件
我们知道,每个容器都会创建日志,这些日志是用来监控和调试容器本身的。使用Docker日志命令和要监控的容器名称,我们可以访问容器日志。
sudo docker logs mongodb
总结
我们希望这篇文章能帮助你更好地理解MongoDB Docker的概念。在这篇文章中,我们看到了如何将MongoDB作为Docker容器运行,并了解了如何用docker-compose管理docker上的MongoDB。
我们还了解到,如果我们使用Docker和MongoDB容器镜像,可以缩短数据库开发过程,并且可以简化。