1.官方网址
https://hub.docker.com/_/mongo/
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
2. 拉取官方镜像
(1) docker pull mongo:2.6.12
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.准备配置文件到宿主机以便于挂载(镜像中无配置文件)
(1)touch -c /etc/mongo/mongod.conf
(2)touch -c /etc/mongo/mongos.conf
4. 运行镜像
(1)在文件docker-compose.yml中添加运行项
mongo:
image: mongo:2.6.12
container_name: mongo
privileged: false
ports:
- 27017:27017
restart: always
environment:
# 在这里输入 MongoDB 的 root 用户与密码,如果使用了此项,则不需要 --auth 参数(2.6.12版本设置的root账号无效)
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: mongo#dev#root
volumes:
- /etc/mongo:/data/configdb
- /data/lib/mongo:/data/db
- /data/log/mongodb:/data/log/mongodb
entrypoint: /entrypoint.sh
command: mongod --config /data/configdb/mongod.conf
(2)运行:docker-compose up -d mongo
-错误信息:Error parsing command line: unknown option config /data/configdb/mongod.conf
-出错原因:"/usr/local/bin/mongod '--config /data/configdb/mongod.conf'"
-解决方法:
a)--config和配置文件路径换行写
-错误信息:ERROR: listen(): bind() failed errno:99 Cannot assign requested address for socket: 10.161.190.107:27017
-解决方法:
a)mongod.conf配置文件注释掉bind_ip项
(3)进入容器:docker exec -it mongo /bin/sh
5.MongoDB 的授权访问
(1)进入容器:docker exec -it mongo /bin/sh
(2)执行命令:mongo
(3)查看是否开启授权:show dbs,如果没有报错,则表示没有开启授权
(4)use admin
(5)授权:db.auth("root","mongo#dev#root")
(6)use qthui
(7)添加用户:db.createUser({user: 'qthui', pwd: 'mongo#dev#qthui', roles: [{role: 'readWrite', db: 'qthui'}]});
(8)测试:mongo qthui -u qthui -p mongo#dev#qthui
6.MongoDB内置角色
//这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
//其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。
//userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限
(1).数据库用户角色:read、readWrite;
(2).数据库管理角色:dbAdmin、dbOwner、userAdmin;
(3).集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
(4).备份恢复角色:backup、restore;
(5).所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
(6).超级用户角色:root