1.安装阿里yum 源,否则安装docker慢得很
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all(可省)
yum makecache
vim /etc/yum.repos.d/CentOS-Base.repo 查看
2.安装docker
yum update
yum install docker
docker version
systemctl start docker (要关闭selinux ,vim /etc/selinux/config ,reboot重启)
systemctl status docker
systemctl enable docker 开机启动
查看日志:tail -222f /var/log/messages 或 journalctl -xe
3.配置镜像加速
配置镜像加速,可配置多个,配置完重启docker即可加速:/etc/docker/daemon.json
内容参考:
{
"registry-mirrors": ["https://5c3uuctj.mirror.aliyuncs.com","https://hub-mirror.c.163.com", "https://reg-mirror.qiniu.com"]
}
4.mongo测试
注意:启动mongo可能报错\"Cannot set property TasksAccounting, or unknown property.需要yum update一下
4.1 无权限启动,目的是创建一个普通数据库用户
①先无权限启动:docker run--name mongodb -p 27017:27017 -v /data/mongodb:/data/db mongo:4.0.3
②进入容器:docker exec -it mongodb /bin/bash
③连接:mongo,默认连接test库
④查看管理员用户可以看到的三个默认数据库(类似MySQL):show dbs
⑤创建一个用户,xxx库有读写权限,yyy读权限:
db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ { role: "readWrite", db: "xxx" },
{ role: "read", db: "yyy" } ]
}
)
4.2 有权限启动及测试
①重建容器docker rm -f mongodb && docker run --name mongodb -p 27017:27017 -v /data/mongodb:/data/db mongo:4.0.3 --auth
②进入容器:docker exec -it mongodb /bin/bash
③连接:mongo,默认连接test库
④show dbs 已不能访问,db.auth('admin','123456'),再次show dbs 通过,但没有任何数据库(已看不到管理员可见的那三个默认库)。也可以连接命令指定账户密码:mongo localhost:27017 -uadmin -p123456
⑤创建xxx,zzz库进行权限测试
use xxx(切到xxx库,没有则创建,执行db.xxx.find()执行OK)
use zzz(切到zzz库,没有则创建,执行db.zzz.find()执行失败,因为创建的admin用户没有zzz库权限)
也可以 4.2+4.3二合一
①启动:docker run--name mongodb -p 27017:27017 -v /data/mongodb:/data/db
-e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo:4.0.3
②进入容器创建test库及其用户root/123456[root@localhost ~]# docker exec -it mongodb /bin/bash
root@2e3402c547da:/# mongo
MongoDB shell version v4.1.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.1.2
> use admin
switched to db admin
> db.auth("admin","123456")
1
> use xxx
switched to db xxx
> db.createUser({user: "root",pwd: "123456",roles: [{ role: "readWrite", db: "xxx" }]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "readWrite",
"db" : "xxx"
}
]
}
4.3 基本crud及索引测试。更多参考
新增数据:db.xxx.insert({_id:122222,vehicleId:"123456"})
批量新增:
for(var i=0; i<3; i++){
db.xxx.insert({ "vehicleId" : "9c155b1", "terminalId" : "HXJZVYB1" })
}
删除数据:db.xxx.remove({_id:122222})
查询:db.xxx.find()
其它操作:db.xxx.aggregate([{"$project":{_id:1,vehicleId:1,拼接:{$concat:["a","bc"]}}}])
执行计划:db.xxx.find({$and:[{"updateAt":{$gt:1571711400}},{"updateAt":{$lt:1571754600}},{"vehicleId":"9c155f943952d68f20704aad6f373e5b"},{"terminalId":"HXJZVYB"}]}).explain()
新增索引(以联合索引为例)db.xxx.ensureIndex({"update_at":-1,"vehicle_id":1,"terminal_id":1})
查看索引:db.xxx.getIndexes()
删除索引:db.xxx.dropIndex("vehicle_id_1_terminal_id_1_update_at_1")
导出与恢复(非交互模式执行):mongodump -h localhost:27017 -d xxxDatabase -c xxxCollection -o /var/mongodata
4.4 GUI 工具robo3T连接测试(略)
4.5 java代码——springboot data测试
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
spring:
data:
mongodb:
uri: mongodb://admin:123456@localhost:27017/xxx
注入mongoTemplate进行crud代码编写即可
参考
Docker安装以及原理详解_林夕-CSDN博客_docker 原理
docker 启动报错_flymoringbird的博客-CSDN博客
在使用systemctl start docker启动失败时,使用systemctl status docker.service_kavito的博客-CSDN博客