环境搭建
虚拟机环境
虚拟机安装
软硬件准备
软件:推荐使用VMware,服务器上有相关安装包。
镜像:推荐使用ubuntu 18.04,本文也是以ubuntu18.04 为例进行说明
硬件:因为是在宿主机上运⾏虚拟化软件安装ubuntu,所以对宿主机的配置有⼀定的要求。最起码I5CPU 双核,内存4G及以上。
虚拟机安装
-
安装VMware
-
打开VMware创建新的虚拟机

image-20230320213838425 -
选择自定义安装或者是典型安装模式
-
典型安装:VMware会将主流的配置应⽤在虚拟机的操作系统上,对于新手来很友好
-
自定义安装:⾃定义安装可以针对性的把⼀些资源加强,把不需要的资源移除。避免资源的浪费
推荐使用典型安装即可,需要注意的是,网络适配器选择NAT模式。

image-20230320225922056
-
-
安装完虚拟机之后开启虚拟机,稍微等待一会即可安装完成
静态IP设置
说明,NAT模式默认情况下是DHCP模式,是自动获取IP的,导致每次虚拟机开启之后获取的IP可能会变化,假如项目中后续连接的是虚拟机上面的MySQL,那么MySQL的HOST地址可能会经常改变,这就需要我们经常去改项目中的MySQL的连接地址,比较麻烦。所以需要改为静态IP,也就是每次开机之后IP不会变,这样才能方便我们后面项目的开发。
-
首先查看虚拟机本地的IP地址,执行命令
Terminal window # 查看本地IP地址ifconfig# 如果提示没有找到这个命令,那么首先需要安装工具sudo apt install net-tools
image-20230320230756033 -
查看网关地址
编辑 ⇒ 虚拟网络编辑器 ⇒ VMnet8 ⇒ NAT设置

image-20230320232059604 点击NAT设置,即可看到如下图所示

image-20230320232229532 -
设置静态IP
设置 ⇒ Network ⇒ 点击齿轮

image-20230320232430561 设置为下图所示

image-20230320232846295 重启虚拟机,查看IP地址是否变化,如果未变,那么设置成功。
docker安装
准备工作
# 需要先执行更新命令sudo apt-get update
# 如果是新安装的虚拟机,执行失败,那么执行以下命令sudo apt-get install --reinstall libappstream4如果虚拟机上已经存在docker,那么需要先卸载可能存在的旧版本
# 查找docker相关的软件dpkg -l |grep docker
如上图所示,查到一个docker,还有一个docker.io,需要删除掉
# --purge: 删除软件以及相关的配置文件sudo apt-get remove --purge docker docker.io安装docker
安装docker的方式有很多种,这里推荐大家采用shell脚本的方式进行安装
# 下载curl工具sudo apt install curl
# 安装dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 下面这两个命令也可以安装docker# 下载安装脚本curl -fsSL https://get.docker.com -o get-docker.sh# 执行安装脚本sudo sh ./get-docker.sh查看docker版本
docker version
出现上图,表示docker安装成功。
设置docker开机启动
sudo systemctl enable dockerdocker配置
权限配置
注意上面查看docker版本的执行命令结果的图中,出现了一个permission denied ... 的报错,此时是因为当前用户对docker命令没有执行权限造成的,那么可以在docker version 这个命令的前面添加sudo解决这个问题,不过每次执行都添加sudo比较麻烦,而且后续使用docker下载镜像,运行容器还需要大量的执行docker ... 命令,可以在这里执行以下命令将当前用户添加到docker组,来获取权限
# 添加docker用户组sudo groupadd docker
# 将当前登录用户添加到docker用户组中sudo gpasswd -a $USER docker
#更新用户组newgrp docker
# 测试docker命令是否可以在当前用户下正常使用docker version
如上图所示,docker权限配置好了之后,会显示出更多更完整的信息
如果出现以下提示,那么需要/var/run/docker.sock权限

# 添加权限sudo chmod a+rw /var/run/docker.sock镜像仓库加速
由于国内用户下载Docker镜像文件的速度太慢(因为Docker官方镜像仓库的服务器地址在国外),所以我们需要配置Docker镜像加速地址,提高镜像文件下载速度,就像MAVEN镜像仓库一样。
这里推荐使用阿里云镜像仓库加速配置。【官方配置地址】
# 修改docker配置文件sudo vim /etc/docker/daemon.json输入上面官方配置地址中的以下内容(每个人的有点区别)

cskaoyan@ubuntu:~$ cat /etc/docker/daemon.json{ "registry-mirrors": ["https://b66kcrvu.mirror.aliyuncs.com"]}cskaoyan@ubuntu:~$# 加载新的配置文件sudo systemctl daemon-reload
# 重启dockersudo systemctl restart docker验证docker镜像加速配置是否成功
# 查看docker详细信息docker info
补充说明:docker镜像加速地址有很多,也可以配置别的镜像加速地址
Docker官方:https://registry.docker-cn.com
如果速度不如预期,也可以在daemon.json中配置其他的镜像加速地址
说明:由于政策原因,上面的加速地址暂时都不可用了
大家可以使用这个加速地址:
软件安装
# 说明:由于政策原因,导致docker镜像可能会下载失败或者是下载非常慢,所以我们在此采用 导入本地文件的方式 导入Docker镜像
# 1. 把 images.tar.gz 上传到 Linux服务器的桌面
# 2. 导入镜像docker load -i ~/Desktop/images.tar.gz
# 3. 查看镜像是否导入成功docker imagesMySQL
# 拉取镜像# docker pull mysql:8.0.35
# 1. 先看看之前在linux上运行的mysql服务是否正在运行sudo netstat -anp | grep 3306
# 2. 如果正在运行,那么停止linux上运行的mysqlsystemctl stop mysql.service
# 3. 如果之前在linux上安装过mysql,那么删除相关的数据库文件sudo rm -rf /home/ljaer/mysql
# 安装运行(如果不映射到宿主机的3306端口,那么跳过1,2步骤; 如果不需要删除之前的数据,那么跳过步骤)docker run --name mysql --restart=always -v /home/winter/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d mysql:8.0.35
docker run --name mysql --restart=always -v /home/winter/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d mysql:la查看MySQL是否启动
docker ps
使用Navicat测试连接,注意需要把主机地址改为虚拟机IP地址,用户名和密码均为root
redis
# 拉取镜像# docker pull redis:6.2
# 运行容器docker run --name=redis-server -d -p 6379:6379 --restart=always redis:6.2
# 使用云服务器的同学docker run --name=redis-server -d -p 6379:6379 --restart=always redis:6.2 redis-server "--requirepass 你自己的redis密码"
docker run --name=redis-server -d -p 6379:6379 --restart=always redis:latest redis-server "--requirepass 123456"
# 测试验证docker exec -it redis-server redis-clinacos
# 拉取镜像# docker pull nacos/nacos-server:v2.2.0-slim
# 运行容器docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 -p 9848:9848 -e JVM_XMS=128m -e JVM_XMX=128m -e JVM_XMN=64m nacos/nacos-server:v2.2.0-slim
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 -p 9848:9848 -e JVM_XMS=128m -e JVM_XMX=128m -e JVM_XMN=64m nacos/nacos-server:latest
# 测试验证# 访问Nacos, http://ip:8848/nacoselasticsearch
# 拉取镜像# docker pull elasticsearch:7.8.0# 注意如果是ARM架构的计算机,那么下载的ES镜像的版本如下:docker pull elasticsearch:7.13.1
# 准备工作sudo mkdir -p /mydata/elasticsearch/plugins /mydata/elasticsearch/datasudo chmod -R 777 /mydata/elasticsearch
# 运行容器docker run \-p 9200:9200 -p 9300:9300 \--name elasticsearch \--restart=always \-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \-v /mydata/elasticsearch/plugins/:/usr/share/elasticsearch/plugins \-v /mydata/elasticsearch/data/:/usr/share/elasticsearch/data \-d elasticsearch:7.8.0# 注意,ARM架构的计算机,使用的镜像版本为elasticsearch:7.13.1# 测试验证,访问http://ip:9200ES安装完成之后,还需要安装IK分词器。
# 1. 上传资料中的IK分词器压缩包到Linux主机
# 2. 解压unzip elasticsearch-analysis-ik-7.8.0.zip -d ik-analyzer# 注意如果是ARM架构的计算机,那么使用的ik分词器的版本也要是7.13.1,所以命令如下:unzip elasticsearch-analysis-ik-7.13.1.zip -d ik-analyzer
# 3. 上传到ES容器docker cp ./ik-analyzer elasticsearch:/usr/share/elasticsearch/plugins
# 4. 重启ESdocker restart elasticsearch这里需要注意一下,如果使用的是
kibana
# 拉取镜像# docker pull kibana:7.8.0# 注意如果计算机为ARM架构的铜须,如果使用的ES版本为7.13.1那么,Kibaba的版本也要相应使用7.13.1docker pull kibana:7.13.1# 运行容器docker run --name kibana --restart=always -e ELASTICSEARCH_URL=http://虚拟机ip或者云服务器ip:9200 -p 5601:5601 -d kibana:7.8.0docker run --name kibana --restart=always -e ELASTICSEARCH_URL=http://192.168.31.117:9200 -p 5601:5601 -d kibana:7.8.0
# ARM架构的计算机,使用如下命令docker run --name kibana --restart=always -e ELASTICSEARCH_URL=http://虚拟机ip或者云服务器ip:9200 -p 5601:5601 -d kibana:7.13.1
# 修改配置docker exec -it kibana /bin/bashvi config/kibana.ymlelasticsearch.hosts: [ "http://这里改为你自己的虚拟机IP:9200" ]elasticsearch.hosts: [ "http://192.168.253.132:9200" ]
# 保存退出并且 重启kibanadocker restart kibana
# 测试验证,访问http://ip:5601# 测试IK分词器GET /_analyze{ "text": "我是一只因为有光,所以有梦想的鱼", "analyzer": "ik_max_word"}minio
# 拉取镜像# docker pull minio/minio
# 创建文件夹sudo mkdir -p /home/data /home/config# 运行容器docker run \ -p 9000:9000 \ -p 9001:9001 \ --name minio \ -d --restart=always \ -e "MINIO_ROOT_USER=admin" \ -e "MINIO_ROOT_PASSWORD=admin123456" \ -v /home/data:/data \ -v /home/config:/root/.minio \ minio/minio server /data --console-address ":9001"# 测试验证,访问http://ip:9001RocketMQ
拉取镜像
# docker pull rocketmqinc/rocketmq# 如果是arm架构则下载如下镜像docker pull king019/rocketmq创建namesrv数据存储路径
sudo mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store运行NameServer容器
docker run -d \--restart=always \--name rmqnamesrv \-p 9876:9876 \-v /docker/rocketmq/data/namesrv/logs:/root/logs \-v /docker/rocketmq/data/namesrv/store:/root/store \-e "MAX_POSSIBLE_HEAP=100000000" \rocketmqinc/rocketmq \sh mqnamesrv# 使用arm架构计算机的同学使用如下命令docker run -d --restart=always --name rmqnamesrv -p 9876:9876 -v /docker/rocketmq/data/namesrv/logs:/root/logs -v /docker/rocketmq/data/namesrv/store:/root/store -e JAVA_OPT_EXT='-Xms128m -Xmx128m -Xmn64m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=32m' -e "MAX_POSSIBLE_HEAP=100000000" king019/rocketmq sh opt/soft/rocketmq/bin/mqnamesrv创建broker数据存储路径
sudo mkdir -p /docker/rocketmq/data/broker/logs /docker/rocketmq/data/broker/store /docker/rocketmq/conf创建broker配置文件
sudo vim /docker/rocketmq/conf/broker.conf文件内容
# 所属集群名称,如果节点较多可以配置多个brokerClusterName = DefaultCluster#broker名称,master和slave使用相同的名称,表明他们的主从关系brokerName = broker-a#0表示Master,大于0表示不同的slavebrokerId = 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.153.143# 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk fulldiskMaxUsedSpaceRatio=95# 定义延迟级别对应的延迟时间messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h运行broker容器
docker run -d \--restart=always \--name rmqbroker \--link rmqnamesrv: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:/opt/rocketmq-4.4.0/conf/broker.conf \-e "NAMESRV_ADDR=namesrv:9876" \-e "MAX_POSSIBLE_HEAP=200000000" \rocketmqinc/rocketmq \sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
# 如果是arm架构计算机的同学运行如下docker run命令docker run -d --restart=always --name rmqbroker --link rmqnamesrv: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:/opt/soft/rocketmq/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" -e JAVA_OPT_EXT='-Xms128m -Xmx128m -Xmn64m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=32m' king019/rocketmq sh opt/soft/rocketmq/bin/mqbroker -c /opt/soft/rocketmq/conf/broker.conf文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!