GVKun编程网logo

基础服务系列 - Docker 安装 MongoDB(docker安装mongodb集群)

12

本篇文章给大家谈谈基础服务系列-Docker安装MongoDB,以及docker安装mongodb集群的知识点,同时本文还将给你拓展01.Docker安装MongoDB、32.Docker安装Mong

本篇文章给大家谈谈基础服务系列 - Docker 安装 MongoDB,以及docker安装mongodb集群的知识点,同时本文还将给你拓展01.Docker安装MongoDB、32.Docker安装MongoDb、<二>docker 安装mongodb、Docker 下安装 Rockmongo,图形化操作 mongodb等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

基础服务系列 - Docker 安装 MongoDB(docker安装mongodb集群)

基础服务系列 - Docker 安装 MongoDB(docker安装mongodb集群)

MongoDB is a free and open-source cross-platform document-oriented database program.

下载镜像

docker pull mongo

启动

docker run --name test-mongo -p 27017:27017 -d mongo:latest

下载 web 管理界面镜像

docker pull mongo-express

关联 Mongo 容器

docker run --link test-mongo:mongo -p 8082:8081 mongo-express

Web 访问

浏览器访问 web 管理界面,http://192.168.119.254:8082/

应用程序访问

依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
    </parent>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
     </dependency>

配置

server.port=9091
# log
log4j.category.org.springframework.data.mongodb=DEBUG
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:%4L - %m%n
spring.data.mongodb.uri=mongodb://192.168.119.254:27017/test

启动

新增数据

Mongo Express 新增数据库 test

新增的数据

查询数据

http://localhost:9091/customer/query?name=Wuxinshui

参考

mongo-express-docker

mongo

10. MongoDB support

01.Docker安装MongoDB

01.Docker安装MongoDB

  1. 查询MongoDB镜像
docker search mongo
  1. 拉取MongoDB镜像
docker pull mongo
# 拉取指定版本镜像
docker pull mongo:3.4
  1. 启动MongoDB容器
docker run -p 27017:27017 --name mymongo -d mongo
  1. 进入MongoDB交互模式
docker exec -it <CONTAINER NAME> mongo admin

32.Docker安装MongoDb

32.Docker安装MongoDb


从hub.docker.com上去找镜像



阿里云的国内的镜像地址


填上去之后,然后重启下docker就可以了


docker images列出本地的镜像


拉取mango的镜像




运行这个镜像


docker logs mymango:查看镜像名称为mymango的镜像的日志
docker start mymango:启动名称为mymango的镜像


错误可能是27016这个端口被占用了

netstat -aon查看本地运行的端口



查看运行端口的8025的:netstat -aon|findstr "8025"



删除容器:docker rm mymango.
然后docker ps -a:查看镜像


再次创建,使用27017去创建

解决问题

docker的网络 之前博主自己禁用掉了。所以就映射不起来。网络之间有桥接的映射



退出docker再重新打开

刚才mango下载不下来也是由于网络没有启动起来的关系
docker pull mango:重新去下载mango





docker ps正在运行的


Robo 3T去连接mango db


注意docker里面暴露的端口


这样我们就在本地创建了mango


关闭mango01:docker stop mango01


再去链接就会提示连接 不上


启动mango01:docker start mango01






 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

<二>docker 安装mongodb

<二>docker 安装mongodb

1、拉取 Docker Hub 上的所有  mongo 镜像

docker pull mongo

 

 2、查看下Mongo的镜像

docker images | grep mongo

 

 3、使用过docker run命令,运行镜像,生成容器

docker run --name my-mongo -p 27017:27017 -d mongo   

docker ps 查看 已经生成的镜像

 

 

 4、设置mongodb的admin数据库账户和密码

 进入容器的服务内部,可设置帐号

docker exec -it my-mongo mongo admin

将当前上下文切换到admin数据库

use admin;

执行下列添加账户密码的命令,并退出

db.createuser({ user: 'admin', pwd: '123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

exit  

 

 5、重启mongodb

docker stop my-mongo

docker start my-mongo

 

6、下载mongoDb可视化工具 Robo3T,下载地址可以是官网:https://robomongo.org/download.

安装就不说了,一路next就行了。

然后点击file->connection   输入地址,后点击test尝试连接,出现如下图情况即连接成功。

 

 

 

 

 

 7、如果是使用的阿里云的服务器,那么需要自己去打开27017这个端口,默认是关闭的

 

 

 

 



Docker 下安装 Rockmongo,图形化操作 mongodb

Docker 下安装 Rockmongo,图形化操作 mongodb

RockMongo 是个 web 版的 MongoDB 管理工具,相比原始的命令行操作,RockMongo 的图形化界面大大的提升的我们的工作效率,本章我们在 Docker 下搭建一个 Mongodb 集群环境,再装一个 RockMongo,用来操作新建的数据库;

有关安装 Mongodb 集群环境的详情,请参照《Docker 下,实战 mongodb 副本集(Replication)》一文;

Mongodb 镜像选择

Mongodb 镜像选用 bolingcavalry/ubuntu16-mongodb349:0.0.1,这是我自己制作的 mongodb 的镜像,已经传到 hub.docker.com 网站,可以通过 docker pull bolingcavalry/ubuntu16-mongodb349:0.0.1 命令下载使用,关于此镜像的详情请看《制作 mongodb 的 Docker 镜像文件》;

Rockmongo 镜像选择

Rockmongo 的镜像我选用了 javierjeronimo/rockmongo:latest,这是 hub.docker.com 上被 pull 次数较多的镜像,作者公开了 Dockfile 脚本,有兴趣的读者可以自己动手构建一下,脚本地址:https://hub.docker.com/r/javierjeronimo/rockmongo/~/dockerfile/

环境信息

我们要启动四个容器:Mongodb 集群和 Rockmongo Server:

容器名 ip 备注
ma 172.19.0.2 Primary
mb 172.19.0.3 Secondary1
mc 172.19.0.4 Secondary2
rockmongo 172.19.0.5 管理 server

网络情况如下图所示:

这里写图片描述

docker-compose.yml 配置

从上图得知我们要启动四个容器:Mongodb 集群和 Rockmongo Server,所以用 docker-compose 批量管理比较方便,docker-compose.yml 内容如下:

version: ''2''
services:
  ma: 
    image: bolingcavalry/ubuntu16-mongodb349:0.0.1
    container_name: ma
    command: /bin/sh -c ''mongod --replSet replset0''
    restart: always
  mb: 
    image: bolingcavalry/ubuntu16-mongodb349:0.0.1
    container_name: mb
    depends_on:
      - ma
    command: /bin/sh -c ''mongod --replSet replset0''
    restart: always
  mc: 
    image: bolingcavalry/ubuntu16-mongodb349:0.0.1
    container_name: mc
    depends_on:
      - mb
    command: /bin/sh -c ''mongod --replSet replset0''
    restart: always
  rockmongo: 
    image: javierjeronimo/rockmongo:latest
    container_name: rockmongo
    depends_on:
      - mc
    ports:
    - "8088:80" 
    links: 
      - ma:mongodba
    restart: always 

如上述 yml 脚本所示,ma、mb、mc 这三个容器组成了副本集集群,rockmongo 容器启动后,/etc/hosts 文件中有了 ma 的 ip 配置 (links 属性);

启动所有容器

在 docker-compose.yml 文件所在目录下,执行以下命令即可创建所有容器:

docker-compose up -d

启动效果如图所示:

这里写图片描述

配置集群

  1. 执行 docker exec -it ma /bin/bash 进入 ma 容器,执行 mongo 进入 mongodb 控制台;
  2. 执行 use admin, 使用 admin 数据库;
  3. 执行以下命令,配置机器信息,其中的 use replset0 是启动 mongodb 时候的–replSet 参数,定义副本集的 id:
config = { _id:"replset0", members:[{_id:0,host:"172.19.0.2:27017"},{_id:1,host:"172.19.0.3:27017"},{_id:2,host:"172.19.0.4:27017"}]}

控制台输出如下:

> use admin
switched to db admin
> config = { _id:"replset0", members:[{_id:0,host:"172.19.0.2:27017"},{_id:1,host:"172.19.0.3:27017"},{_id:2,host:"172.19.0.4:27017"}]}
{
    "_id" : "replset0",
    "members" : [
        {
            "_id" : 0,
            "host" : "172.19.0.2:27017"
        },
        {
            "_id" : 1,
            "host" : "172.19.0.3:27017"
        },
        {
            "_id" : 2,
            "host" : "172.19.0.4:27017"
        }
    ]
}
>

可见三个机器都已经加入集群;
4. 执行 rs.initiate(config) 初始化配置;
5. 执行 rs.status() 查看状态,得到输出如下:

replset0:PRIMARY> rs.status()
{
    "set" : "replset0",
    "date" : ISODate("2017-10-14T15:00:54.417Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1507993251, 1),
            "t" : NumberLong(1)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1507993251, 1),
            "t" : NumberLong(1)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1507993251, 1),
            "t" : NumberLong(1)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "172.19.0.2:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 1855,
            "optime" : {
                "ts" : Timestamp(1507993251, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2017-10-14T15:00:51Z"),
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1507993190, 1),
            "electionDate" : ISODate("2017-10-14T14:59:50Z"),
            "configVersion" : 1,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "172.19.0.3:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 74,
            "optime" : {
                "ts" : Timestamp(1507993251, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1507993251, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2017-10-14T15:00:51Z"),
            "optimeDurableDate" : ISODate("2017-10-14T15:00:51Z"),
            "lastHeartbeat" : ISODate("2017-10-14T15:00:52.494Z"),
            "lastHeartbeatRecv" : ISODate("2017-10-14T15:00:53.380Z"),
            "pingMs" : NumberLong(0),
            "syncingTo" : "172.19.0.4:27017",
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "172.19.0.4:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 74,
            "optime" : {
                "ts" : Timestamp(1507993251, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1507993251, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2017-10-14T15:00:51Z"),
            "optimeDurableDate" : ISODate("2017-10-14T15:00:51Z"),
            "lastHeartbeat" : ISODate("2017-10-14T15:00:52.494Z"),
            "lastHeartbeatRecv" : ISODate("2017-10-14T15:00:53.374Z"),
            "pingMs" : NumberLong(0),
            "syncingTo" : "172.19.0.2:27017",
            "configVersion" : 1
        }
    ],
    "ok" : 1
}
replset0:PRIMARY>

可以看到三个容器都已经加入集群,并且 ma 是 Primary;

添加数据

在 ma 的 mongodb 控制台执行以下命令,创建数据库 school 并往集合 student 中新增三条记录:

use school
db.student.insert({
   
   
   name:"Tom", age:16})
db.student.insert({
   
   
   name:"Jerry", age:15})
db.student.insert({
   
   
   name:"Mary", age:9})

到这里,mongodb 的集群环境已经配置好了,并且数据库 school 中也添加了一个集合 student,里面存了三个文档,接下来我们该配置 Rockmongo 了;

配置 Rockmongo

  1. 退出 ma 容器,执行 docker exec -it rockmongo /bin/bash 进入 rockmongo 容器;

  2. 进入 rockmongo 容器后,用 vi 打开 /app/config.php 文件,找到下面红框中的代码:

这里写图片描述

上图红框中的两个配置分别是数据库名称和 mongodb 的 IP,分别改成”school” 和”mongodba”(因为在 docker-compose.yml 中配置了 link,所以此处用 link 的配置就行,不用写 ma 容器的 IP 了),改动后的部分如下图所示:
这里写图片描述

登录和体验 RockMongo

  1. 打开浏览器,输入 http://localhost:8088,看到 rockmongo 的登录页面,如下图:

这里写图片描述

如上图红框所示,默认选中的数据库就是我们刚刚改的”school”,用户名密码都是 admin,输入后可以进入 RockMongo 系统;
2. 进入系统后看到的页面如下图所示:
这里写图片描述
如上图,数据库 school 的集合 student 中的文档数据全部可以看见了;
3. 我们来试试在 RonckMongo 系统中执行查询,如下图,在输入框输入 font color=”blue”>{age:{$lt:10}},点击下面的 “执行”,就能看到查询结果:
这里写图片描述

至此,Docker 下安装和体验 Rockmongo 就实战完毕了,希望读者们多尝试和体验这个工具,用来在实际工作中提升效率;

本文分享 CSDN - 程序员欣宸。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。

关于基础服务系列 - Docker 安装 MongoDBdocker安装mongodb集群的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于01.Docker安装MongoDB、32.Docker安装MongoDb、<二>docker 安装mongodb、Docker 下安装 Rockmongo,图形化操作 mongodb的相关信息,请在本站寻找。

本文标签: