environment:
两台服务器:
本地服务器(local):centos7
具备公网ip 的云服务(cloud)centos7
通过内网穿透给两服务器创建一个网络通道
使用工具openvpn或frps,推荐openvpn,frps不知为何会占用很大的资源
(一)本地服务器环境
1 安装docker
1.1 卸载旧版本,如果之前安装过
yum remove docker docker-common docker-selinux docker-engine
1.2 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
1.3 设置 yum 源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
1.4 下载
(1)查看可用的版本
yum list docker-ce --showduplicates | sort -r
(2)选择一个版本并安装:yum install docker-ce-版本号
#都可以 建议第二
yum -y install docker-ce
yum install -y docker-ce docker-ce-cli containerd.io
1.5 配置镜像源
vim /etc/docker/daemon.json
# 粘贴以下内容
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
1.6 开启docker、设置开启自启
systemctl start docker
systemctl enable docker
2 docker运行组件
2.1 mysql
1、查看mysql版本
docker search mysql
2、下载mysql镜像(docker pull mysql:版本号)
docker pull mysql:8.0.18
完成后通过 docker images
检查一下镜像是否下载成功
3、启动mysql容器
docker run -d -p 3306:3306 --name mysql \
-v /path/mysql/log:/var/log/mysql \ #将日志文件夹挂载到主机
-v /path/mysql/data:/var/lib/mysql \ #将配置文件夹挂载到主机
-v /path/mysql/conf:/etc/mysql \ #将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=password \
mysql:8.0.18
docker run -p 3306:3306 \
--name mysql \
--privileged=true \
-v /path/mysql/log:/var/log/mysql \
-v /path/mysql/data:/var/lib/mysql \
-v /path/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=cclucky \
-d mysql:8.0.18
参数说明:
-d
:以后台的方式运行;
--name mysql
:指定容器的名称为 mysql;-p 3306:3306
:将容器的 3306 端口挂载到宿主机的 3306 端口上;-e MYSQL_ROOT_PASSWORD=1234
:指定 root 的密码为 1234
命令执行完成后,通过docker ps
命令来确认是否启动成功
4、配置mysql文件
打开my.cnf
vi /path/mysql/conf/my.cnf
复制以下内容:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
port=3306
datadir = /path/mysql/data
default-storage-engine=INNODB
init_connect='SET collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
default-time-zone = '+08:00'
5、重启mysql容器
docker restart mysql
6、用户创建与授权
# 进入数据库容器
docker exec -it mysql /bin/bash
# 进入mysql终端
mysql -uroot -p[密码]
# 创建用户
create user '[username]'@'[host]' identified by '[密码]'; #[host]为'%'时代表允许所有ip
# 授权
grant all on `[database_name]`.`[table_name]` to [username];
# *.* 所有数据库的所有表
# `[database_name]`.* 该数据库下的所有表
# 指定前缀的库授权
# 给所有`db_`为前缀的库授权
grant all on `db_%`.* to [username];
# 删除权限
revoke all on `[database_name]`.`[table_name]` from [username];
# 刷新权限表
flush privileges;
2.2 redis
1、拉取redis镜像
docker search redis
docker pull redis
2、确认镜像是否下载成功
docker images
3、创建redis.conf文件
mkdir -p /path/redis/conf
touch /path/redis/conf/redis.conf
4、运行redis容器
docker run -p 6379:6379 --name redis \
-v /path/redis/data:/data \
-v /path/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
参数说明:
-d
: 指定容器后台运行;--name
: 指定容器名称为 redis;-p 6379:6379
: 将容器的 6379 端口映射到宿主机的 6379 端口;
5、检查redis容器是否运行成功
docker ps
6、持久化
添加redis.conf文件
#创建文件
touch /path/redis/conf/redis.conf
#进入修改
vi /path/redis/conf/redis.conf
复制以下内容到文件
appendonly yes
7、连接redis容器
docker run -it redis redis-cli -h 172.17.0.1
2.3 rabbitmq
docker pull rabbitmq:management //下载RabbitMQ镜像
docker run --name rabbit --restart=always -p 15672:15672 -p 5672:5672 -d rabbitmq:management //启动RabbitMQ,默认guest用户,密码也是guest。
2.4 Es
给关了,不启用,占用内存太大了
2.5 MaxWell
docker pull zendesk/maxwell //下载MaxWell镜像
docker run --name maxwell --restart=always -d zendesk/maxwell bin/maxwell --user='数据库用户名' --password='数据库密码' --host='IP地址' --producer=rabbitmq --rabbitmq_user='MQ用户名' --rabbitmq_pass='MQ密码' --rabbitmq_host='IP地址' --rabbitmq_port='5672' --rabbitmq_exchange='maxwell_exchange' --rabbitmq_exchange_type='fanout' --rabbitmq_exchange_durable='true' --filter='exclude: *.*, include: aurora.t_article.article_title = *, include: aurora.t_article.article_content = *, include: aurora.t_article.is_delete = *, include: aurora.t_article.status = *' //运行MaxWell
这个我也没启用
2.6 minio
这个真的很好用
docker pull minio/minio
docker run -p 9000:9000 -p 9090:9090 --name minio \
-d --restart=always \
-e MINIO_ACCESS_KEY=minio \
-e MINIO_SECRET_KEY=minio@123 \
-v /path/minio/data:/data \
-v /path/minio/config:/root/.minio \
minio/minio server /data --console-address ":9000" --address ":9090" # 前端默认启动 console-address,后者的时文件访问接口