基于docker的常用服务搭建

  使用docker搭建相关服务:

 1. MySQL服务

   1) 拉取镜像

docker pull mysql:5.7   # 拉取 mysql 5.7
docker pull mysql       # 拉取最新版mysql镜像

# 不指定版本,默认拉取最新的

  2)启动服务

sudo  docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7


–name:容器名,此处命名为mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
-v: 挂载数据卷, 宿主目录: 容器目录
-d:源镜像名,此处为 mysql:5.7

  3) 如果你的容器运行正常,但是无法访问到MySQL,一般有以下几个可能的原因:

    a) 防火墙

# 开放端口:
$ systemctl status firewalld
$ firewall-cmd  --zone=public --add-port=3306/tcp -permanent
$ firewall-cmd  --reload
# 关闭防火墙:
$ sudo systemctl stop firewalld

    b)需要进入docker本地客户端设置远程访问账号

$ sudo docker exec -it mysql bash
$ mysql -uroot -p123456
mysql> grant all privileges on *.* to root@'%' identified by "password";
# mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改)

mysql> use mysql;
Database changed

mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host                    | user      | password                                                                 |
+--------------+------+-------------------------------------------+
| localhost              | root     | *A731AEBFB621E354CD41BAF207D884A609E81F5E      |
| 192.168.1.1            | root     | *A731AEBFB621E354CD41BAF207D884A609E81F5E      |
+--------------+------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> grant all privileges  on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host                    | user      | password                                                                 |
+--------------+------+-------------------------------------------+
| localhost              | root      | *A731AEBFB621E354CD41BAF207D884A609E81F5E     |
| 192.168.1.1            | root      | *A731AEBFB621E354CD41BAF207D884A609E81F5E     |
| %                       | root      | *A731AEBFB621E354CD41BAF207D884A609E81F5E     |
+--------------+------+-------------------------------------------+
3 rows in set (0.00 sec)

 

  2.mongo服务

1)拉取镜像

docket pull mongo:latest

 

2)运行容器

docker run -it --name mongo-server -v /data/docker_data/mongoDB:/data/db -p 27018:27017 -d mongo:latest  --auth


--name 容器名称
-v 数据挂载
-p 端口映射
-d 守护进程
--auth 需要验证

 

3)创建用户

# 进入容器
docker exec -it mongo-server /bin/bash

# 进入mongo
mongo


# 创建管理员
use  admin


db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]});

# 退出当前用户
exit


# 使用新创建的管理员账号进行登录
mongo --port 27017 -u admin -p admin --authenticationDatabase admin

# 创建普通用户
> use test
switched to db test
> db.createUser({user:"tester",pwd:"tester",roles:[{role:"readWrite",db:"test"}]});

# 退出
exit

 

4)在容器外进行连接

# 如果Linux不存在mongo客户端,可以使用yum 进行安装
yum install -y mongodb // client
yum install -y mongodb-server // server


mongo --port 27018 -u tester -p tester --authenticationDatabase test 

 

mongo中的角色与权限说明:

数据库用户角色 read、readWrite
数据库管理角色 dbAdmin、dbOwner、userAdmin
集群管理角色 clusterAdmin、clusterManager、clusterMonitor、 hostManager
备份恢复角色 backup、restore
所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色 root
内部角色 __system
角色说明

Read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root 只在admin数据库中可用。超级账号,超级权限

 

3. Redis

获取redis.conf配置:  http://download.redis.io/redis-stable/redis.conf

docker run -d -p 6379:6379 \
 -v /mnt/d/lixing/servers/redis/config/redis.conf:/etc/redis/redis.conf \ 
-v /mnt/d/lixing/servers/redis/data:/data \ 
--name redis-server redis:latest \ 
redis-server /etc/redis/redis.conf --appendonly yes

   

# 参数说明:
# -v /usr/local/dockerMapping/redis/config/redis.conf:/etc/redis/redis.conf : 映射配置文件
# -v /usr/local/dockerMapping/redis/data:/data : 映射数据目录
# redis-server /etc/redis/redis.conf : 指定配置文件启动redis-server进程
# --appendonly yes : 开启数据持久化
# --requirepass "123456"

更多配置:

daemonize : 默认为no,修改为yes启用守护线程
port :设定端口号,默认为6379 bind :绑定IP地址
databases :数据库数量,默认16
save :指定多少时间、有多少次更新操作,就将数据同步到数据文件
#redis默认配置有三个条件,满足一个即进行持久化
save 900 1 #900s有1个更改
save 300 10 #300s有10个更改
save 60 10000 #60s有10000更改
dbfilename :指定本地数据库的文件名,默认为dump.rdb dir :指定本地数据库的存放目录,默认为./当前文件夹
requirepass :设置密码,默认关闭
redis -cli -h host -p port -a password

 

posted @ 2020-02-15 22:41  X-Wolf  阅读(538)  评论(0编辑  收藏  举报