docker部署mongoDB

本文详细介绍了如何使用Docker部署MongoDB数据库,包括下载镜像、启动、持久化数据、配置和扩展,以及解决事务错误的过程。Docker容器化技术提供了环境一致性、快速部署和资源隔离等优点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试环境一般直接使用docker部署mongo,速度比较快

Docker部署MongoDB是一种高效且灵活的方式,用于在容器化环境中快速安装和运行MongoDB数据库。以下是关于Docker部署MongoDB的简要介绍:
Docker是一个开源的应用容器引擎,它可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间没有任何接口。MongoDB则是一个流行的NoSQL数据库,以其灵活性和可扩展性而著称。
通过Docker部署MongoDB,您可以轻松地在任何支持Docker的平台上创建和管理MongoDB实例。这种部署方式具有许多优势,包括:
环境一致性:Docker容器提供了一致的运行环境,无论在哪个机器或平台上,MongoDB的行为都将保持一致。
快速部署:使用Docker可以极大地简化MongoDB的部署过程,只需通过简单的命令即可创建并启动容器。
资源隔离:Docker容器提供了资源隔离机制,确保MongoDB实例在运行时不会受到其他应用程序的干扰。
易于扩展:通过Docker的容器编排工具(如Docker Swarm或Kubernetes),您可以轻松地扩展MongoDB集群的规模,以满足不断变化的业务需求。
此外,Docker部署MongoDB还提供了许多可配置选项,例如端口映射、数据卷挂载等,使您能够根据自己的需求进行定制。
总之,Docker部署MongoDB是一种高效、灵活且易于管理的解决方案,适用于各种规模的应用程序和数据存储需求。

步骤

下载镜像,我选择了4.4.11版本

docker pull mongo:4.4.11

在这里插入图片描述

普通启动

docker run -itd --name mongo -p 27017:27017 mongo --auth

数据库持久化

docker volume create mongo_local_data

docker run --name my_mongo -v /mongo_local_data:/data/db  --rm -d -p 27017:27017 mongo:4.4.11

挂载配置文件和日志

docker run --restart=always --name my_mongo -v /mongo_local_data:/data/db -v /data/mongo/conf:/data/conf -v /data/mongo/log:/data/log -d -p 27017:27017 mongo:4.4.11

副本集模式


docker run --restart=always --name my_mongo -v /mongo_local_data:/data/db -v /data/mongo/conf:/data/conf -v /data/mongo/log:/data/log -d -p 27017:27017 mongo:4.4.11 --replSet "rs0"

进入容器,准备创建用户和密码

docker exec -it mongo mongo admin

或者

docker exec -it ea94f813aea1 /bin/bash

执行命令

创建用户

use admin; // 切换到admin数据库  
db.createUser({  
    user: 'cert_db_user',  
    pwd: 'VzvUwSdn2FdiI2c1',  
    roles: [  
        { role: 'userAdminAnyDatabase', db: 'admin' }, // 在admin数据库上赋予userAdminAnyDatabase角色  
        { role: 'readWriteAnyDatabase', db: 'admin' }  // 在admin数据库上赋予readWriteAnyDatabase角色  
    ]  
});

连接

db.auth('cert_db_user', 'VzvUwSdn2FdiI2c1');

在这里插入图片描述

直接启动

 docker run -d --name mongodb-container -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 -p 27017:27017 mongo:4.4.11

连接工具

mongoshell : https://www.mongodb.com/try/download/shell

Navicat for MongoDB: https://www.navicat.com.cn/download/direct-download?product=navicat_mongodb_cs_x64.exe&location=1

mongoshell

双击:mongosh.exe
在这里插入图片描述
输入mongo的url

mongodb://cert_db_user:VzvUwSdn2FdiI2c1@127.0.0.1:27017/cert_db?authSource=cert_db

navicat

在这里插入图片描述

错误 MongoDB 运行事务时报“Transaction numbers are only allowed on a replica set member or mongos“错误

docker run -d -p 27018:27017 --name mongo1 mongo --replSet “rs0”

docker exec -it 65 mongo # 进入主节点mongo

#进行副本集配置

如果只有一个节点

var config={
      _id:"rs0",
      members:[
          {_id:0,host:"127.0.0.1:27017"},
 ]};

多个节点

var config={
      _id:"rs0",
      members:[
          {_id:0,host:"192.168.11.45:27018"},
          {_id:1,host:"192.168.11.45:27019"},
          {_id:2,host:"192.168.11.45:27020"}
 ]};

#启动新的副本集

> rs.initiate(config)
{ "ok" : 1 }
此时命令提示符已经发生变化,由原来的 > 变成了 rs:SECONDARY>
使用Docker部署MongoDB有以下几个步骤: 1. 首先,你需要获取最新的MongoDB镜像。可以使用以下命令来获取最新的镜像: ``` docker pull mongo:latest ``` 2. 接下来,创建一个目录用于存储MongoDB的数据文件。可以使用以下命令创建目录: ``` mkdir -p /export/server/docker/mongodb/data ``` 3. 运行MongoDB容器并进行映射和认证设置。可以使用以下命令运行镜像: ``` docker run --name mongodb -v /export/server/docker/mongodb/data:/data/db -d -p 27017:27017 mongo --auth ``` 这个命令中,`-v`参数用于将宿主机的目录映射到容器内的目录,以实现数据持久化。`-p`参数用于将容器内的端口映射到宿主机上,以便在宿主机上连接MongoDB。`--auth`参数表示需要密码才能访问容器服务。 4. 使用Mongo Shell连接到MongoDB容器并切换到admin数据库。可以使用以下命令: ``` docker exec -it mongodb /bin/mongosh admin ``` 或者 ``` docker exec -it mongodb /bin/bash /bin/mongosh admin ``` 这个命令将以Mongo Shell的方式进入容器,并切换到admin数据库。 5. 创建一个管理员用户并授予相应的权限,并使用新创建的用户进行登录。可以使用以下命令: ``` db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); db.auth('admin', '123456') ``` 这个命令将创建一个名为admin的用户,并赋予userAdminAnyDatabase和readWriteAnyDatabase的角色,然后使用新创建的用户进行登录。 6. 进行一些基本的测试操作,比如查看数据库和表,并插入一条数据。可以使用以下命令: ``` show databases # 查看所有数据库 show tables # 查看所有表(集合) use test # 切换到test数据库(如果不存在则自动创建) db.test.insert( { _id: 1, name: "kudaren", age: "29" } ) # 插入数据 db.test.find(); # 查询数据 ``` 7. 最后,你可以使用适合你的客户端工具连接到MongoDB进行操作。 总结:Docker部署MongoDB需要先获取最新的镜像,创建数据文件存储目录,运行镜像并进行映射和认证设置,然后使用Mongo Shell连接到容器并进行操作,最后可以使用客户端工具连接到MongoDB进行管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渐暖°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值