第17章 Docker 中 MongoDB 的安装与配置及使用

第17章 Docker 中 MongoDB 的安装与配置及使用

2018-10-14

前言

  • 为什么要使用 MongoDB?

    Apache ZooKeeper致力于开发和维护开源服务器,实现高度可靠的分布式协调。

  • 什么是 MongoDB?

    MongoDB文档数据库提供高可用性和易扩展性。

  • 什么是 Docker?

    具体请参考我的第08章内容。

  • 为什么要在 Docker 中安装 MongoDB?

    为了开发环境一致性、可移植性、易于管理和维护性。

目标

  • 完成 Jenkins 在 Docker 中的安装与配置。
  • 安装在 Docker 中的 Jenkins 能正常对外提供服务。
  • 在外部开发环境中能正常访问和使用 Jenkins 持续集成服务。

环境

  • **VMware:**VMware Workstation 14 Pro
  • **Linux:**CentOS7.4
  • **Docker:**18.06.0-ce, build 0ffa825
  • **Jenkins:**Jenkins2.121.1
  • **JDK:**jdk1.8.0_172
  • MongoDB:

介绍

RabbitMQ是一个开源的多协议消息代理。

支持的标签和相应的Dockerfile链接

快速参考(Quick reference)

什么是MongoDB?

MongoDB(来自“humongous”)是一个跨平台的面向文档的数据库。 MongoDB被归类为NoSQL数据库,它避开了传统的基于表的关系数据库结构,支持使用动态模式的类似JSON的文档(MongoDB调用BSON格式),使得某些类型的应用程序中的数据集成更容易,更快捷。 MongoDB是在GNU Affero通用公共许可证和Apache许可证的组合下发布的,是免费的开源软件。

软件公司10gen(现为MongoDB公司)于2007年10月首次开发,作为计划平台即服务产品的一部分,该公司于2009年转向开源开发模式,10gen提供商业支持和其他服务。从那时起,MongoDB被许多主要网站和服务采用为后端软件,包括Craigslist,eBay,Foursquare,SourceForge,Viacom和纽约时报等。 MongoDB是最流行的NoSQL数据库系统。

如何使用此镜像

启动mongo服务器实例

$ docker run --name some-mongo -d mongo:tag

…其中some-mongo是您要分配给容器的名称,而tag是指定所需MongoDB版本的标记。请参阅上面的列表以获取相关标签。

$ sudo docker run -p 27017:27017 --name mongodb -e $PWD/db:/data/db -d mongo:4.0.3

-p 27017:27017:将容器的 27017 端口映射到主机的 27917 端口(端口可以自己定义)
-e $PWD/db:/data/db:将主机中当前目录下的 db 挂载到容器的/data/db,作为 mongo 数 据存储目录

数据库管理客户端:https://www.robomongo.org/

从另一个Docker容器连接到MongoDB

映像中的MongoDB服务器侦听标准MongoDB端口27017,因此通过容器链接或Docker网络连接将与连接到远程mongod相同。下面的示例启动另一个MongoDB容器实例,并从上面的示例中针对原始MongoDB容器运行mongo命令行客户端,允许您对数据库实例执行MongoDB语句:

$ docker run -it --link some-mongo:mongo --rm mongo mongo --host mongo test

…其中some-mongo是原始mongo容器的名称。

…通过docker stack deploy或docker-compose

compose

mongo的示例stack.yml:

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example

运行docker stack deploy -c stack.yml mongo(或docker-compose -f stack.yml up),等待它完全初始化,然后访问http://swarm-ip:8081,http://localhost:8081,或http://host-ip:8081(视情况而定)。

容器shell访问和查看MongoDB日志

docker exec命令允许您在Docker容器内运行命令。以下命令行将在mongo容器中为您提供一个bash shell:

$ docker exec -it some-mongo bash

MongoDB服务器日志可通过Docker的容器日志获得:

$ docker logs some-mongo

Configuration

有关使用和配置 MongoDB manual (如副本集和分片)的信息,请参阅MongoDB手册。

无需配置文件即可自定义配置

使用

进入admin数据库

首先进入mongo容器,然后进入admin数据库

$ sudo docker exec -it mongo3.6 bash
mongo admin
$ sudo docker exec -it mongo3.6 mongo admin

创建账户

  • 创建管理员账号(拥有所有权限)
db.createUser({ 
  user: 'root', 
  pwd: 'admin', 
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
  });
  • 开启验证
db.auth("root","admin");

现在我们使用图形化界面工具连接一下我们刚创建的数据库,看看是否成功
本人使用 Robo 3T 工具

  • 打开软件 点击左上角 创建一个连接配置,如图 地址写刚才docker对应的ip地址 端口号填写刚才配置的,点击Test按钮 如图提示,表明可连接mongo成功

参考

https://hub.docker.com/_/mongo/

wikipedia.org/wiki/MongoDB

使用 Robo 3T 工具

  • 打开软件 点击左上角 创建一个连接配置,如图 地址写刚才docker对应的ip地址 端口号填写刚才配置的,点击Test按钮 如图提示,表明可连接mongo成功

参考

https://hub.docker.com/_/mongo/

wikipedia.org/wiki/MongoDB

https://juejin.im/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值