阅读本文大约需要 7 分钟

概述

  • MongoDB 的授权访问
  • MongoDB 数据集映射到 host 主机
  • 第三方授权认证 MongoDB 镜像

MongoDB 的授权访问

直接上 yml 代码:

version: '2'
services:mongo-container:image: mongo:3.4environment:# 在这里输入 MongoDB 的 root 用户与密码,如果使用了此项,则不需要 --auth 参数- MONGO_INITDB_ROOT_USERNAME=root- MONGO_INITDB_ROOT_PASSWORD=rootPassports:- "37017:27017"volumes:# 如果想为特定的数据库创建相应的用户,可以将以下文件映射到容器中,其中创建用户的脚本文件会在下一段代码中- "$PWD/mongo-entrypoint/:/docker-entrypoint-initdb.d/"command: mongod
复制代码

environment 选项分别表示:(需要说明的是:这是官方支持的)

  1. admin 数据库用户名
  2. admin 数据库密码

下面是创建指定数据库的用户的脚本文件:

#!/usr/bin/env bash
echo "Creating mongo users..."
mongo admin --host localhost -u root -p rootPass --eval "db.createUser({user: 'admin', pwd: 'zonePassWord', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});"
mongo admin -u root -p rootPass << EOF
use zonedb
db.createUser({user: 'zone', pwd: 'zonePass', roles:[{role:'readWrite',db:'zonedb'}]})
EOF
echo "Mongo users created."
复制代码

那么在这里解释一下创建的过程:

  1. 创建一个 admin 数据库,其参数为:

    • 用户:admin

    • 密码:zonePassWord

    • role:userAdminAnyDatabase

  2. 创建一个 zonedb 数据库,其参数为:

    • 用户:zone

    • 密码:zonePass

    • role:readWrite

MongoDB 数据集保存至 host 主机

在介绍这个前,得说一下 -v 和 volume,以下这段文字是引用自 Build Node.Js web server in Docker containers: nodejs+pm2+mongodb+redis这篇文章。

Data volumes 有如下特性:

当容器被创建时 volumes 会被初始化 Data volumes 可以在容器间共享复用 对 data volume 的修改直接生效 更新镜像时,原来 data volume 的修改不会被影响 即使容器被删除, 对应的 data volumes 依然会存在 使用 Volume 可以将容器与容器产生的数据分离,容器产生的数据可以持久化。

Docker volumes 使用 -v 指定和 在 Dockerfile 指定 VOLUME 的区别:

-v /data/logs:/data/logs

将宿主机的 /data/logs 目录挂载到容器的 /data/logs 目录(如果目录不存在会被创建), 宿主机和容器共享该目录,二者对该目录下的修改相互受影响。

Dockerfile 指定 VOLUME /data/logs

在宿主机创建一个目录(默认是 /var/lib/docker/volumes/)并挂载到容器的 /data/logs 目录(如果目录不存在会被创建), 宿主机和容 器共享该目录,二者对该目录下的修改相互受影响。

-v /data/logs

同上, 在宿主机创建一个目录(默认是 /var/lib/docker/volumes/)并挂载到容器的 /data/logs 目录(如果目录不存在会被创建), 宿主机和容器共享该目录,二者对该目录下的修改相互受影响。 Docker volumes 默认是 read-write 模式,也可以设置为 read-only 模式。

第三方授权认证 MongoDB 镜像

这是一个外国开发者 build 的镜像,已经集成了认证过程。我个人认为数据库这么重要的东西,还是用官方的比较好,但第三方的东西也不妨碍我们学习。那我这边就稍微介绍一下,使用起来还是挺方便的。 作者原地址

services:db:image: aashreys/mongo-auth:latestenvironment:- AUTH=yes- MONGODB_ADMIN_USER=admin- MONGODB_ADMIN_PASS=admin123- MONGODB_APPLICATION_DATABASE=sample- MONGODB_APPLICATION_USER=aashrey- MONGODB_APPLICATION_PASS=admin123ports:- "27017:27017"// more configuration
复制代码

environment 选项分别表示:

  1. 开启认证
  2. admin 数据库用户名
  3. admin 数据库密码
  4. 你使用的工作数据库名称
  5. 工作数据库用户名
  6. 工作数据库密码

至于其他选项就没什么好解释的了。

参考文档如下: How to enable authentication on MongoDB through Docker? Build Node.Js web server in Docker containers: nodejs+pm2+mongodb+redis


关注微信公众号,回复【docker资源】,获取 docker 初级视频教程

基于 Docker 中的 MongoDB 授权使用相关推荐

  1. 基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群

    目标 使用三台物理机做数据库集群 任意一台宕机之后不会影响线上的业务运转 不会有任何的数据丢失 方案 采用的是Replica Sets+Sharded Cluster的集群 具有高可用,故障转移,分布 ...

  2. docker 中安装 mongodb

    2019独角兽企业重金招聘Python工程师标准>>> 在   https://hub.docker.com/  上搜索  mongodb 拉去镜像 复制命令   docker pu ...

  3. poi报空指针_POI 导出文件 报空指针异常 --Docker 中

    爬坑系列----Redis查询key报空指针异常,而redis中确实存在该key 现象: 1.在A方法中根据key查询一个list,可以获取到相应的值 2.在B方法中同样调用此方法,传入相同的key, ...

  4. MongoDB数据备份还原,及docker中MongoDB备份还原

    一: MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的 ...

  5. 开启docker中MongoDB的认证授权

    开启docker中MongoDB的认证授权 思路 开启MongoDB服务后,默认是没有权限验证的.直接通过IP加端口就可以远程访问数据库,并对数据库进行任意操作.下面介绍一下如何开启docker中Mo ...

  6. 在Docker中安装和部署MongoDB集群

    在Docker中安装和部署MongoDB集群 - tianshidan1998 - 博客园

  7. 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

    深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...

  8. Docker中Spring boot+VueJS+MongoDB的前后端分离哲学摔跤

    一图胜千言 目标 想将VueJs,Spring boot,MongoDB全部都放到Docker中运行,并且做到VueJs和Spring boot在不同都Docker容器中. Docker带来的变化 开 ...

  9. 在Windows系统下,基于WLS从零开始部署我的 R shiny项目到 Docker 中,并将镜像发布到 Docker Hub(内附详细操作流程)

    前言 需要将项目部署到Docker中,我之前也没有接触过这个,纯萌新记录一下整个过程. 注意:整个流程对于我来说是能成功跑通的,但我也不知道有没有冗余操作(因为我也不太懂),欢迎大家提出宝贵意见~ 我 ...

最新文章

  1. 一个把ListString转化为以,隔开的字符串的方法
  2. 基础才是重中之重~用好configSections让配置信息更规范
  3. JUnit基础及第一个单元测试实例
  4. Java调用WebService接口实现发送手机短信验证码功能
  5. 如何快速掌握一门新技术/语言/框架…
  6. python下载图片被覆盖了_scrapy 将抓取内容中的图片下载到本地并替换内容中的原始图片...
  7. 配置OpenCV的Qt开发环境
  8. C++之map插入数据相同的key不能覆盖value解决办法
  9. Hiv:SQuirrel连接hive配置
  10. 信息学奥赛一本通(1041:奇偶数判断)
  11. ls -l的功能是什么linux,Ls - Linux Wiki
  12. pythonstdin和stdout_如何使用os.execv()在python中继承stdin和stdout
  13. C++设计模式——从多态到观察者模式到MVC架构
  14. GM505高斯计使用方法图解
  15. 【必看】线性代数保研知识点总结|2021计算机软工保研|夏令营预推免面试
  16. Chrome 启动页面被114篡改的修复
  17. Unity Android 跳转拨号界面和一键加群
  18. 方法重载与重写的区别
  19. 读书笔记之吴伯凡·认知方法论
  20. 【起航计划ObjC 001】印第安老斑鸠ObjC的幻想 ---- Ubuntu下安装并使用Obj-C

热门文章

  1. struts2路径配置_Struts 2结果路径配置示例
  2. Android CoordinatorLayout
  3. textswitcher_Android TextSwitcher和ImageSwitcher示例教程
  4. [HNOI2015]开店
  5. Sql中的union和union all的讲解
  6. 2.Netty的粘包、拆包(一)
  7. 【HDOJ】1261 字串数【组合数学--排列+代数】
  8. WdatePicker日历控件用法
  9. C++ -- vector详解
  10. java使用smartupload组件实现文件上传的方法