1.版本信息
通过 docker version 命令可以获取当前docker版本信息
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-103.git7f2769b.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7f2769b/1.13.1
Built: Sun Sep 15 14:06:47 2019
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-103.git7f2769b.el7.centos.x86_64
Go version: go1.10.3
Git commit: 7f2769b/1.13.1
Built: Sun Sep 15 14:06:47 2019
OS/Arch: linux/amd64
Experimental: false
2.部署mongo镜像
2.1 搜索mongo镜像
通过 docker search mongo 命令搜索mongo相关镜像
docker search mongo
如下是部分搜索结果,OFFICIAL 表示是官方镜像
2.2 拉取mongo镜像
通过 docker pull mongo 命令拉取mongo镜像,默认是latest版本
docker pull docker.io/mongo
拉取成功后,可以通过 docker images 确认镜像
docker images
2.3 创建相关目录
# 创建相关目录
mkdir -p /opt/mongo/data
2.4 启动mongo容器
使用如下命令启动:
docker run -d -p 27017:27017 --name mongo \
-v /opt/mongo/data/:/data/db \
docker.io/mongo
- -v 表示挂载文件系统
- -d 表示后台启动
- -p 表示端口映射
- --name 表示指定名称
检查mongo的启动情况
docker logs -f mongo
2.4 创建用户
我们可以看到mongo已经正常启动,但是稍微有一些不完美的地方,我们的mongo没有开启鉴权,而是出于裸奔的状态;因此我们需要创建用户,开启鉴权模式。
进入mongo容器环境
docker exec -it mongo /bin/bash
创建用户
# 进入容器环境后执行 mongo admin
mongo admin
# 执行创建用户
db.createUser({
user: 'admin',
pwd: '1234qwer',
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
});
2.5 以鉴权的方式重新启动
停止并移除容器
# 停止容器
docker stop mongo
# 移除容器
docker rm mongo
以鉴权方式启动
# 以鉴权方式重新启动
docker run -d -p 27017:27017 --name mongo \
-v /opt/mongo/data/:/data/db \
docker.io/mongo --auth
# 进入容器环境,确认鉴权是否生效
docker exec -it mongo mongo admin
# 执行鉴权
db.auth('admin','1234qwer')
3 补充资料
MongoDB用户权限:
内建的角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统
计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、
删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函
数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的
读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的
userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的
dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
作者是一个技术肥宅,还在不断的学习进步中,十分欢迎各位 杠精 读者指出文中不足之处,快来给我留言吧;欢迎转载,烦请注明出处。
- 本文链接: https://www.sunce.wang/archives/docker部署mongodb指南
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!