杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)


00 安装前的准备

在开始之前,确保已经安装了Docker,本文基于Docker Compose进行示范,没有装Docker Compose也可将其中的docker-compose命令转换为docker run命令执行。

01 创建Docker Compose文件

首先,新建一个名为mongo的目录,并在其中创建一个名为docker-compose.yml的文件,并写入以下内容:

version: '3.8'
services:
  mongo:
    image: mongo:latest
    container_name: mongo
    command: --auth --bind_ip_all --replSet rs0 --keyFile /data/mongodb/keyFile
    ports:
      - "27017:27017"
    volumes:
      - ./data:/data/db
      - ./conf:/data/configdb
      - ./backup:/data/backup
      - ./keyFile:/data/mongodb/keyFile

这个配置会启动一个MongoDB容器,使用最新的MongoDB镜像,并将容器命名为mongo

命令解释:

  1. command: --auth --bind_ip_all --replSet rs0 --keyFile /data/mongodb/keyFile: 这是传递给MongoDB服务器的命令行参数。

    • --auth: 开启身份验证。
    • --bind_ip_all: 允许MongoDB绑定到服务器上的所有IP地址。
    • --replSet rs0: 初始化一个名为rs0的副本集。
    • --keyFile /data/mongodb/keyFile: 指定用于副本集成员之间身份验证的密钥文件路径。
  2. ports:: 这部分定义了容器和宿主机之间的端口映射。

    • "27017:27017": 将容器的27017端口映射到宿主机的27017端口。MongoDB默认使用27017端口。
  3. volumes:: 这部分定义了宿主机和容器之间的数据卷映射,用于数据持久化和配置管理。

    • ./data:/data/db: 将宿主机当前目录下的data文件夹映射到容器的/data/db路径,用于存储MongoDB的数据文件。
    • ./conf:/data/configdb: 将宿主机的conf文件夹映射到容器的/data/configdb路径,通常用于存放MongoDB的配置文件。
    • ./backup:/data/backup: 将宿主机的backup文件夹映射到容器的/data/backup路径,用于存储备份文件。
    • ./keyFile:/data/mongodb/keyFile: 将宿主机的keyFile文件映射到容器的/data/mongodb/keyFile路径,这是副本集认证所需的密钥文件。

02 设置证书文件

为了安全性和配置副本集,需要创建一个证书文件。在存放docker-compose.yml的mongo目录下,运行以下命令来生成证书文件:

# 生成一个756字节的自签名证书
openssl rand -base64 756 > ./keyFile
# 赋予该证书400权限
chmod 400 ./keyFile
# 更改文件的所有者和群组
chown 999:999 ./keyFile

MongoDB是以用户ID 999运行的,更改keyFile的所有者和群组为UID和GID 999,以确保MongoDB进程能够访问该文件。

必需要完成权限设置和访问组设置,否则MongoDB无法正常启动。

03 启动MongoDB

使用以下命令来启动MongoDB服务:

# 拉取镜像
docker-compose pull
# 启动容器
docker-compose up -d
# 停止容器
# docker-compose down

启动完成后,该目录:
在这里插入图片描述

04 初始化副本集和创建用户

进入到MongoDB容器并初始化副本集:

# 进入容器 这里的mongo是容器名称 mongosh是脚本命令
docker exec -it mongo mongosh
# 进入容器后 执行初始化(带 > 符号说明是在容器内操作,并非命令的一部分)
> rs.initiate()

然后,创建管理员用户:

# 切换数据库
> use admin
# 创建管理员用户
> db.createUser({user:'admin', pwd:'admin123456', roles:[{role: 'userAdminAnyDatabase', db:'admin'}]});
# 用户认证登录
> db.auth("admin", "admin123456")

接下来,切换到printing账户,并创建一个具有读写权限的用户:

# 切换数据库
> use printing
# 创建一个用户
> db.createUser({user: "lily", pwd: "lily1997", roles: [{role:"readWrite", db: "printing"}]});
# 先退出
> exit

05 验证安装

最后,验证用户是否可以成功连接并认证:

# 进入容器
docker exec -it mongo mongosh
# 切换数据库
> use printing
# 用户认证登录
> db.auth("lily", "lily1997")

通过以上步骤,我们成功在Linux服务器上使用Docker安装并配置了MongoDB。开启了单副本,支持事务。

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 1. 使用命令 "docker pull mongo" 下载 MongoDB 镜像。 2. 使用命令 "docker run -d -p 27017:27017 --name mongodb mongo" 启动 MongoDB 容器。 3. 使用命令 "docker exec -it mongodb bash" 进入 MongoDB 容器。 4. 使用命令 "mongo" 连接 MongoDB 数据库。 5. 使用命令 "use admin" 切换到 admin 数据库。 6. 使用命令 "db.createUser({user: 'username', pwd: 'password', roles: [{role: 'root', db: 'admin'}] })" 创建超级用户。 7. 使用命令 "exit" 退出 MongoDB 容器。 8. 使用命令 "docker stop mongodb" 停止 MongoDB 容器。 9. 使用命令 "docker start mongodb" 启动 MongoDB 容器并使用创建的超级用户登录。 注意:在实际操作时,请将 "username" 和 "password" 替换为您自己的用户名和密码。 ### 回答2: Docker 是一个容器化技术,可以使得应用在不同的环境下得以快速部署。MongoDB 是一种流行的非关系型数据库,在 Docker使用 MongoDB 可以加速开发和测试过程。下面是在 Docker安装 MongoDB 的步骤: 1. 安装 Docker 首先需要安装 Docker安装方法可以参考官方文档:https://docs.docker.com/engine/install/ 2. 下载 MongoDB 镜像 在 Docker安装 MongoDB,需要下载 MongoDB 镜像。在终端中输入以下命令即可下载 MongoDB 镜像: ``` docker pull mongo ``` 3. 运行 MongoDB 容器 下面的命令将启动一个名为 mongodb 的容器,并在其内部运行 MongoDB: ``` docker run -d —name mongodb -p 27017:27017 mongo:latest ``` 其中,-d 告诉 Docker 在后台运行容器,--name 指定容器名称为 mongodb,-p 27017:27017 表示将容器内部的 27017 端口映射到主机的 27017 端口,最后的 mongo:latest 是镜像名称和版本号。 4. 连接 MongoDB 使用以下命令连接容器内的 MongoDB: ``` docker exec -it mongodb mongo ``` 其中,-it 表示以交互式会话进入容器内,mongo 是进入容器后要执行的命令。 5. 配置 MongoDB 在容器内部,执行以下命令可以配置 MongoDB: ``` use testdb db.stats() ``` 其中,use testdb 创建了一个名为 testdb 的数据库,db.stats() 可以查看数据库状态。可以在容器内部使用 MongoDB 的标准命令行工具进行操作。 以上就是在 Docker安装 MongoDB 并进行配置的详细步骤。通过 Docker,可以快速创建 MongoDB 环境,方便快捷地进行开发和测试。 ### 回答3: Docker是一个开源的容器化平台,它可以让开发者把应用程序和服务打包到一个容器中,并部署到任何支持Docker的机器上。Docker中最常用的应用就是MongoDB数据库,因为MongoDB可以轻松地扩展和存储大量数据。下面我们就来看看如何在Docker安装MongoDB并进行配置。 1.安装Docker 首先,你需要在你的服务器上安装Docker。如果你还没有安装Docker,请先在官方网站上下载并安装Docker。 2.拉取MongoDBDocker镜像 在安装配置之前,你需要拉取MongoDBDocker镜像。可以使用以下命令拉取MongoDB镜像: docker pull mongo 3.创建MongoDB容器 接下来,你需要创建一个MongoDB的容器。可以使用以下命令创建MongoDB容器: docker run -it -d --name mongo -p 27017:27017 mongo 通过上述命令,我们创建了名为“mongo”的容器,并将容器的端口映射到主机的端口27017上。这表示,当你连接到主机的端口27017时,实际上连接的是容器的端口27017,因此可以访问MongoDB。 4.连接MongoDB 现在,MongoDB容器已经准备就绪。你可以尝试连接到MongoDB容器来检查是否能成功连接。可以使用以下命令连接到MongoDBdocker exec -it mongo mongo 通过上述命令,你将进入到mongodb容器中,并成功连接到mongodb服务器上。 5.更改MongoDB配置 为了更强大的功能,可以修改一些MongoDB配置项,而Docker容器中的MongoDB配置文件类似于Linux系统上的MongoDB配置。因此,可以使用以下命令来编辑MongoDB配置文件docker exec -it mongo vi /etc/mongodb.conf 然后你可以根据需要进行更改,并将更改保存到配置文件中。 6.重启MongoDB容器 最后,你需要重启MongoDB容器,以确保更改得到保存。可以使用以下命令来重启MongoDB容器: docker restart mongo 经过以上步骤,你就完成了在Docker安装MongoDB并进行配置的操作。在完成此过程之后,你可以实现大规模部署和使用MongoDB数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿林仔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值