Docker部署MongoDb的详细过程记录

 更新时间:2024年12月02日 10:14:50   作者:橙子qyfftf  
这篇文章主要介绍了如何使用Docker Compose启动MongoDB副本集,包括配置文件编写、容器启动命令、副本集初始化、角色和用户创建等步骤,需要的朋友可以参考下

1. 编写docker-compose.conf 文件

version: '3'
services:
  mongo:
    image: mongo:latest  # 指定 MongoDB 版本,确保 >= 3.6
    container_name: mongo-replica
    restart: always
    command: ["mongod", "--replSet", "rs0", "--oplogSize", "128", "--bind_ip_all"]
    ports:
      - 27017:27017
    volumes:
      - ./mongo_data:/data/db
    environment:
      #初始化MongoDb管理员用户名
      MONGO_INITDB_ROOT_USERNAME: root
      #初始化MongoDb的管理员密码
      MONGO_INITDB_ROOT_PASSWORD: example

2. 启动

在包含 docker-compose.yml 文件的目录中运行以下命令启动 MongoDB:

docker-compose up -d

这将创建一个 MongoDB 副本集实例。--replSet 选项用于指定副本集名称为 rs0,--bind_ip_all 确保 MongoDB 绑定到所有 IP 地址。

本地27017端口映射到容器内部27017端口,把容器内部的/data/db目录挂载当前目录下的mongo_db目录,并且初始化了mongo的管理员用户和密码

3. 验证启动是否成功

命令行验证

docker ps

4. 初始化副本集

1.首次启动容器后,需要初始化 MongoDB 副本集。连接到 MongoDB 并运行以下命令:

docker exec -it mongo-replica mongo

2.然后在 MongoDB shell 中运行以下命令:

rs.initiate()

这样就初始化一个名为 rs0 的副本集。

3.验证配置

在 MongoDB shell 中,可以使用以下命令验证副本集的状态:

rs.status()

rs0:PRIMARY> rs.status()
{
	"set" : "rs0",
	"date" : ISODate("2024-10-24T09:31:21.318Z"),
	"myState" : 1,
	"term" : NumberLong(1),
	"syncingTo" : "",
	"syncSourceHost" : "",
	"syncSourceId" : -1,
	"heartbeatIntervalMillis" : NumberLong(2000),
	"majorityVoteCount" : 1,
	"writeMajorityCount" : 1,
	"optimes" : {
		"lastCommittedOpTime" : {
			"ts" : Timestamp(1729762278, 1),
			"t" : NumberLong(1)
		},
		"lastCommittedWallTime" : ISODate("2024-10-24T09:31:18.528Z"),
		"readConcernMajorityOpTime" : {
			"ts" : Timestamp(1729762278, 1),
			"t" : NumberLong(1)
		},
		"readConcernMajorityWallTime" : ISODate("2024-10-24T09:31:18.528Z"),
		"appliedOpTime" : {
			"ts" : Timestamp(1729762278, 1),
			"t" : NumberLong(1)
		},
		"durableOpTime" : {
			"ts" : Timestamp(1729762278, 1),
			"t" : NumberLong(1)
		},
		"lastAppliedWallTime" : ISODate("2024-10-24T09:31:18.528Z"),
		"lastDurableWallTime" : ISODate("2024-10-24T09:31:18.528Z")
	},
	"lastStableRecoveryTimestamp" : Timestamp(1729762278, 1),
	"lastStableCheckpointTimestamp" : Timestamp(1729762278, 1),
	"electionCandidateMetrics" : {
		"lastElectionReason" : "electionTimeout",
		"lastElectionDate" : ISODate("2024-10-24T07:16:15.041Z"),
		"electionTerm" : NumberLong(1),
		"lastCommittedOpTimeAtElection" : {
			"ts" : Timestamp(0, 0),
			"t" : NumberLong(-1)
		},
		"lastSeenOpTimeAtElection" : {
			"ts" : Timestamp(1729754175, 1),
			"t" : NumberLong(-1)
		},
		"numVotesNeeded" : 1,
		"priorityAtElection" : 1,
		"electionTimeoutMillis" : NumberLong(10000),
		"newTermStartDate" : ISODate("2024-10-24T07:16:15.048Z"),
		"wMajorityWriteAvailabilityDate" : ISODate("2024-10-24T07:16:15.053Z")
	},
	"members" : [
		{
			"_id" : 0,
			"name" : "5ffc77d51cd0:27017",
			"health" : 1,
			"state" : 1,
			"stateStr" : "PRIMARY",
			"uptime" : 8176,
			"optime" : {
				"ts" : Timestamp(1729762278, 1),
				"t" : NumberLong(1)
			},
			"optimeDate" : ISODate("2024-10-24T09:31:18Z"),
			"syncingTo" : "",
			"syncSourceHost" : "",
			"syncSourceId" : -1,
			"infoMessage" : "",
			"electionTime" : Timestamp(1729754175, 2),
			"electionDate" : ISODate("2024-10-24T07:16:15Z"),
			"configVersion" : 1,
			"self" : true,
			"lastHeartbeatMessage" : ""
		}
	],
	"ok" : 1,
	"$clusterTime" : {
		"clusterTime" : Timestamp(1729762278, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	},
	"operationTime" : Timestamp(1729762278, 1)
}

5. 登陆MongoDb

可以通过mongo客户端或者Docker命令登陆,这里选择使用MongoDb自带的图形化工具进行登录

1.输入host,勾选Direct Connecton

2.点到Authentication,输入用户名密码和认证数据库

3.保存&登录

6. 创建角色和用户

1.点击Open MongoDB shell进入mongo shell

2.创建角色 用户分配权限

use admin;
db.createRole(
    {
        role: "flinkrole",
        privileges: [{
            // 所有数据库中所有非系统集合的 grant 权限
            resource: { db: "", collection: "" },
            actions: [
                "splitVector",
                "listDatabases",
                "listCollections",
                "collStats",
                "find",
                "changeStream" ]
        }],
        roles: [
           // 阅读 config.collections 和 config.chunks
           // 用于分片集群快照拆分。
            { role: 'read', db: 'config' }
        ]
    }
);

db.createUser(
  {
      user: 'flinkuser',
      pwd: 'flinkpw',
      roles: [
         { role: 'flinkrole', db: 'admin' }
      ]
  }
);

就可以使用新创建的用户进行登录MongoDb了

总结

到此这篇关于Docker部署MongoDb的文章就介绍到这了,更多相关Docker部署MongoDb内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker: invalid reference format.问题

    docker: invalid reference format.问题

    这篇文章主要介绍了docker: invalid reference format.问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Linux新建用户并允许docker及docker基本命令

    Linux新建用户并允许docker及docker基本命令

    这篇文章给大家介绍了Linux新建用户并允许docker及docker的容器创建及基本命令讲解,需要的朋友参考下本文吧
    2017-12-12
  • 详解docker compose 用法

    详解docker compose 用法

    这篇文章主要介绍了docker compose 用法,本文通过实例代码演示给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • docker入门之容器介绍

    docker入门之容器介绍

    这篇文章主要介绍了docker入门之容器介绍的相关资料,需要的朋友可以参考下
    2018-10-10
  • docker部署数据可视化平台Metabase

    docker部署数据可视化平台Metabase

    Metabase 把数据分析常用的查询通过一个个易于操作的界面呈现,本文主要介绍了docker部署数据可视化平台Metabase,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • 分享8个基本的Docker容器管理命令

    分享8个基本的Docker容器管理命令

    本文给大家分享8个基本的Docker容器管理命令,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-06-06
  • Docker部署web项目的实现

    Docker部署web项目的实现

    这篇文章主要介绍了Docker部署web项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 使用 Docker安装 Zabbix并配置自定义监控项的过程详解

    使用 Docker安装 Zabbix并配置自定义监控项的过程详解

    Zabbix 可以用来监控各种网络参数,来保证服务器和系统的安全运行,是一个基于 Web 界面提供的分布式系统监控以及网络监控功能的企业级开源解决方案,对Docker 安装 Zabbix配置自定义监控项相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • Docker创建镜像、怎么修改、上传镜像等详细介绍

    Docker创建镜像、怎么修改、上传镜像等详细介绍

    这篇文章主要介绍了Docker创建镜像、怎么修改、上传镜像等详细介绍的相关资料,需要的朋友可以参考下
    2016-12-12
  • 一文搞定Docker安装ElasticSearch的过程

    一文搞定Docker安装ElasticSearch的过程

    通过本文可以帮助大家快速学习Docker安装ElasticSearch的过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-08-08

最新评论