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 表示是官方镜像

搜索结果.png

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数据库中可用。超级账号,超级权限

作者是一个技术肥宅,还在不断的学习进步中,十分欢迎各位 杠精 读者指出文中不足之处,快来给我留言吧;欢迎转载,烦请注明出处。