仅作为开发本地环境搭建参考
0. 创建普通账号(test)
为了安全起见,我们是不会直接用root账号,一般是会用普通账号,在这里我创建一个普通账号(test).
# 1. 创建普通用户(test)
[root@dev-application ~]# useradd test
# 2. 设置test密码
[root@dev-application ~]# passwd test
# 3. 为test账号配置sudo权限
[root@dev-application ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
# 增加如下内容( 允许用户app不需要输入密码即可即行sudo )
test ALL=(ALL) NOPASSWD:ALL
1. Centos7下安装Docker
- centos 系统源自带的 docker 版本(1.13.1)比较老不建议使用,可安装社区版docker ce
- 可以参考https://docs.docker.com/engine/install/centos/安装
# 设置稳定安装源
[test@localcentos ~]$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[test@localcentos ~]$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 安装docker
[test@localcentos ~]$ sudo yum install -y docker-ce
1.1. 查看docker版本,验证是否安装成功
docker version
1.2. 启动docker服务&&查看是否启动成功&&设置开机启动
# 启动docker
[test@localcentos ~]$ sudo systemctl start docker
# 查看是否启动成功
[test@localcentos ~]$ sudo systemctl status docker
# 设置开机启动
[test@localcentos ~]$ sudo systemctl enable docker
1.3. 查看docker已安装镜像
docker ps
docker stop CONTAINER ID(可全写可写部分开头)
1.4. 卸载docker已安装镜像
1.4.1. 查看镜像实例是否运行 && 停止镜像实例进程
docker ps
docker stop CONTAINER ID(可全写可写部分开头)
1.4.2. 卸载镜像实例
docker ps -a # 列出所有容器实例,包括未运行的
docker rm CONTAINER ID
执行后,镜像还在,但是容器实例已经被卸载
1.4.3. 卸载镜像
docker rmi IMAGE ID
1.5. 检索镜像
docker search mysql
其中OFFICIAL说明是否是官方镜像;上述结果其实是从镜像库进行检索
在tag中还能找到是否有指定版本
1.6. 拉取镜像
docker pull mysql:版本号 #不写:版本号默认最新版本
docker pull mysql:5.7
1.7. 启动已经停止的容器实例
docker start CONTAINER ID(可全写可写部分开头)
1.8. 进入容器实例:
docker container exec -it 容器id(或者name) /bin/sh
2. Docker安装MySQL
2.1. 下载mysql5.7
# 1. 安装tree(可忽略)
[test@localcentos ~]$ yum -y install tree
# 2. 创建mysql应用程序的数据目录(可忽略)
[test@localcentos ~]$ mkdir -p ~/application/mysql/{conf,logs,data}
# 3. 查看mysql应用程序的数据目录(可忽略)
[test@localcentos ~]$ tree
.
└── application
└── mysql
├── conf
├── data
└── logs
# 3. 下载mysql5.7
[test@localcentos ~]$ sudo docker pull mysql:5.7
# 4. 查看拉取的镜像
[test@localcentos home]$ docker images
2.2. 基于镜像创建mysql容器实例
# 5. 基于镜像创建mysql容器实例
# 注意: MYSQL_ROOT_PASSWORD请自行填写
# 注意: /home/app/application/mysql为宿主机目录
[test@localcentos home]$ sudo docker run -p 3306:3306 --name mysql \
-v /home/test/testlication/mysql/conf:/etc/mysql \
-v /home/test/testlication/mysql/logs:/var/log/mysql \
-v /home/test/testlication/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
参数说明:
- -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
- MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
- -v 操作在容器创建的过程时候可以将宿主机的目录挂载到容器内
2.3. 授权root允许访问
# 1. 进入mysql容器
[test@localcentos ~]$ sudo docker exec -it mysql /bin/bash
# 2. root用户登录mysql
# mysql -u root -p
#3. 修改允许root远程访问
# alter user 'root'@'%' identified with mysql_native_password by '123456';
# 4. 给某个用户授权
# grant all privileges on . to 'root'@'%' identified by '123456' with grant option;
# 5. 刷新授权
# flush privileges;
# exit #退出容器
2.4. 防火墙允许3306放行
- sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
- sudo firewall-cmd --reload
至此,可以用navicat等工具远程连接mysql
2.5. 主从复制-读写分离
3. Docker安装Redis
# 1. 拉取redis镜像
[test@localcentos ~]$ sudo docker pull redis
# 2. 运行redis
[test@localcentos ~]$ sudo docker run -it -d --restart=always --name redis -p 6379:6379 redis
# 3. 防火墙放行
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload
# 4. 进入redis容器
[test@localcentos ~]$ docker exec -it redis /bin/bash
# 5. redis-cli 连接测试使用 redis 服务
–restart=always 后,当 docker 重启时,容器自动启动。
设置密码则执行:sudo docker run -it -d --restart=always --name redis -p 6379:6379 redis --requirepass 123456
4. Docker安装Nacos
需要注意,nacos需要数据库,所以,需要创建数据库和和表. 数据库执行如下脚本文件即可
nacos.sql
# 1. 拉取镜像
[test@localcentos ~]$ sudo docker pull nacos/nacos-server
# 2. 运行nacos
# 注意配置mysql:ip地址/数据库名称/用户名/密码.
# NACOS_SERVER_IP : 代表nacos服务器的IP地址.
# MYSQL_SERVICE_HOST: mysql服务器IP地址.
sudo docker run -d \
--restart=always \
--name nacos \
-p 8848:8848 \
--env MODE=standalone \
--env NACOS_SERVER_IP=192.168.41.128 \
--env SPRING_DATASOURCE_PLATFORM=mysql \
--env MYSQL_SERVICE_HOST=192.168.41.128 \
--env MYSQL_SERVICE_DB_NAME=nacos \
--env MYSQL_SERVICE_USER=root \
--env MYSQL_SERVICE_PASSWORD=123456 \
--env MYSQL_DATABASE_NUM=1 \
nacos/nacos-server
# 3. 防火墙开放端口
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=8848/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload
【注意】:如果报错:invalid reference format: repository name must be lowercase.
检查 \ 前面要有空格
访问:http://192.168.41.128:8848/nacos 控制台登录页面;nacos/nacos
5. Docker安装XXL-Job
可以参考官方文档:
需要创建数据库和和表. 数据库执行如下脚本文件即可: tables_xxl_job.sql
# 1. 拉取镜像
[test@localcentos ~]$ sudo docker pull xuxueli/xxl-job-admin:2.3.0
# 2. 运行xxl-job-admin
# 如需自定义 mysql 等配置,可通过 "-e PARAMS" 指定,参数格式 PARAMS="--key=value --key2=value2"
# 如需自定义 JVM内存参数 等配置,可通过 "-e JAVA_OPTS" 指定,参数格式 JAVA_OPTS="-Xmx512m" ;
[test@localcentos ~]$ sudo docker run -d -e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.41.128:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
--spring.datasource.username=root --spring.datasource.password=123456" \
-p 8080:8080 --name xxl-job-admin --restart=always -d xuxueli/xxl-job-admin:2.3.0
# 3. 防火墙开放端口
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload
访问:http://192.168.41.128:8080/xxl-job-admin/ 进行登录(默认账号/密码:amdin/123456)
6. Docker安装RocketMQ
6.1. 安装启动namesrv服务
# 1.拉取镜像
[test@localcentos ~]$ sudo docker pull apache/rocketmq:4.8.0
# 2.创建数据存储路径
[test@localcentos ~]$ sudo mkdir -p /docker/rocketmq/data/logs
[test@localcentos ~]$ sudo mkdir -p /docker/rocketmq/data/store
# 3.创建并运行rocketmq容器实例
[test@localcentos ~]$ sudo docker run -d \
--restart=always \
--name rocketmq \
-p 9876:9876 \
-v /docker/rocketmq/data/logs:/root/logs \
-v /docker/rocketmq/data/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq:4.8.0 \
sh mqnamesrv
# 4. 防火墙开放端口
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=9876/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload
sh mqnamesrv 是安装包bin/bash的脚本,下文的broke也一样
6.2. 启动broker节点
# 1.创建broker数据存储路径
[test@localcentos ~]$ sudo mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf
# 2. 宿主机创建broker.conf文件并编辑如下内容,brokerIP1可填宿主机ip
vi /docker/rocketmq/conf/broker.conf
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = DefaultCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 设置broker节点所在服务器的ip地址
brokerIP1 = 192.168.41.128
# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
# 3.创建并运行broker容器实例
[test@localcentos ~]$ sudo docker run -d \
--restart=always \
--name rmqbroker \
--link rocketmq:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v /docker/rocketmq/data/broker/logs:/root/logs \
-v /docker/rocketmq/data/broker/store:/root/store \
-v /docker/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
apache/rocketmq:4.8.0 \
sh mqbroker -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
# 4. 防火墙开放端口
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=10911/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=10909/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload
脚本文件目录可以进入容器后pwd命令查看
6.3. 安装启动控制台rocketmq-console
# 1.拉取镜像
[test@localcentos ~]$ sudo docker pull pangliang/rocketmq-console-ng
# 2.创建并运行rocketmq-console容器实例
[test@localcentos ~]$ sudo docker run -d \
--restart=always \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.41.128:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8089:8080 \
pangliang/rocketmq-console-ng
# 3.防火墙开放端口
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=8089/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload
访问http://192.168.41.128:8089/进行控制台访问
7. Docker安装ElasticSearch 7.8.0
7.1. 安装ElasticSearch
# 1. 拉取ElasticSearch镜像
[test@localcentos ~]$ sudo docker pull redis
# 2. 创建ElasticSearch挂载目录
[test@localcentos ~]$ mkdir -p /docker/elasticsearch/data /docker/elasticsearch/config /docker/elasticsearch/logs /docker/elasticsearch/plugins
# 3. 宿主机编辑修改elasticsearch.yml
[test@localcentos ~]$ echo "http.host : 0.0.0.0" >> /docker/elasticsearch/config/elasticsearch.yml
# 4. 文件夹授权
[test@localcentos ~]$ chmod 777 -R /docker/elasticsearch
# 5. 启动
[test@localcentos ~]$ sudo docker run --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
--privileged --restart=always \
-v /docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /docker/elasticsearch/logs:/usr/share/elasticsearch/logs \
-d elasticsearch:7.8.0
# 6. 防火墙开放端口
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=9300/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload
http.host:0.0.0.0 代表es可以被远程的任何机器访问
7.2. 测试验证 ElasticSearch
访问ip:9200,返回json串
8. Docker安装Kibana 7.8.0
8.1. 安装Kibana 7.8.0
注意Kibana和ElasticSearch版本要一致,详情科查看 官方链接
# 1. 拉取Kibana 镜像
[test@localcentos ~]$ sudo docker pull kibana:7.8.0
# 2. 启动
[test@localcentos ~]$ sudo docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.182.128:9200 -p 5601:5601 -d kibana:7.8.0
# 2. 防火墙开放端口
[test@localcentos ~]$ sudo firewall-cmd --zone=public --add-port=5601/tcp --permanent
[test@localcentos ~]$ sudo firewall-cmd --reload