一、微服务环境准备

一、微服务环境准备

安装Docker

# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 更新软件包
sudo apt-get update
sudo apt install apt-transport-https ca-certificates software-properties-common

# 添加GPG密钥,增加镜像源
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 校验添加密钥是否成功并重新更新软件包
sudo apt-key fingerprint 0EBFCD88

# 安装docker-ce
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 测试运行
sudo docker run hello-world
# Docker 的基本命令

# 查看全部镜像
docker images | docker image ls
# 查看结果
REPOSITORY(仓库名) TAG(标志/版本)   IMAGE ID(镜像ID)   CREATED(镜像在仓库中的创建时间)  SIZE(镜像大小)
elasticsearch      7.11.2           a6cbb6bace0e       12 days ago                     824MB
kibana             7.11.2           59ddc19818fe       12 days ago                     1.01GB
rabbitmq           3.8-management   ee045987e252       12 days ago                     187MB

# 查看在线/全部的容器,format格式化指定展示列名
docker ps / docker ps -a --format "table{{.ID}}\t{{.Names}}\t{{.Status}}"
# 查看结果
CONTAINER ID(容器ID)  IMAGE(所使用的镜像ID)      COMMAND(备注)            CREATED(容器创建时间)  STATUS(在线状态)   PORTS(端口映射)         NAMES(容器名称)                                                                             
44a5d4435102          a617c1c92774              "docker-entrypoint.s…"   50 minutes ago         Up 50 minutes      0.0.0.0:6379->6379/tcp  redis
990e476eedcf          rabbitmq:3.8-management   "docker-entrypoint.s…"   17 hours ago           Up 17 hours        *                       rabbitmq

# 在公共docker仓库搜索指定镜像
docker search redis
# 查看结果
NAME           DESCRIPTION                STARS   OFFICIAL(官方)   AUTOMATED(自动化)
redis          Redis is an open…          9223    [OK]       
bitnami/redis  Bitnami Redis Docker Image 176                      [OK]

# 拉取镜像, 不指定tag默认tag=lastest
docker pull {imageName}:{tag}

# 创建容器,-m指定内存 --memory-swap指定交换区内存大小
docker run -d --name {customName} -p {hostPort}:{containerPort} {image} [-m 1G --memory-swap 1G]

# 停止一个正在运行的容器
docker stop {container}

# 启动一个停止的容器
docker start {container}

# 删除一个容器
docker rm {containerId}

# 删除一个镜像
docker rmi {imageId}

# 交互模式进入一个容器
docker exec -it {container} /bin/bash

# 修改启动配置
docker update --restart always {containerId}

# 修改内存为1G/交换内存不限制大小
docker update -m 1G --memory-swap -1 {containerId}

# 修改cpu的数量
docker update --cpus 2 {containerId}

安装MySQL

# 拉取镜像
docker pull mysql:5.7.33

# 根据mysql镜像创建容器,并指定端口映射和root的密码(下面命令会拉取最新版本)
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[password] mysql

# 启动
docker start mysql

安装Redis

# 拉取镜像
docker pull redis:6.2.1

# 根据redis镜像创建容器,并指定端口映射和root的密码
docker run -itd --name redis -p 6379:6379 redis --requirepass [password]

# 启动
docker start redis

安装RabbitMQ

# 拉取镜像
docker pull docker.io/rabbitmq

# 根据redis镜像创建容器
docker run -d --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq

# 启动
docker start rabbitmq

# 交互模式进入容器
docker exec -it rabbitmq /bin/bash

# 开启可视化插件
rabbitmq-plugins enable rabbitmq_management

# 安装延时插件
访问:https://www.rabbitmq.com/community-plugins.html
找到 rabbitmq_rtopic_exchange 下载至服务器指定目录,进入到插件下载的目录,使用如下命令复制到 docker 容器中:
cd /usr/etc/rabbitmq_plugins
docker cp rabbitmq_delayed_message_exchange-3.8.0.ez rabbitmq:/plugins

# 启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

# 重启
docker restart rabbitmq
# 登录地址ip:15672设置账户和密码,初始默认账户/密码:guest/guest
# rabbit 延时插件详细集成步骤即代码请参考:https://www.jianshu.com/p/e5a42efb9198

安装Nexus3

# 拉取镜像
docker pull sonatype/nexus3

# 根据nexus3镜像创建容器, -v指定保存文件的宿主机目录和容器目录
docker run -id --privileged=true --name=nexus3 --restart=always -p 8081:8081 -v /user/nexus3/nexus-data:/var/nexus-data nexus3

# 启动
docker start nexus3
# 详细账户配置可在网页ip:8081上自行设置,默认账户/密码:admin/admin123

安装ElasticSearch

官方安装文档

# 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.11.2

# 安装容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.11.2

# 启动
docker start elasticsearch

# 进入交互模式
docker exec -it elasticsearch /bin/bash

# 安装分词器
cd plugins
install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-7.11.2.zip

# 设置账户安全(此步骤后所有的 -curl请求都需要带上账户和密码,账户名默认 elastic,密码为设置的密码)
cd config
vi elasticsearch.yml #添加 xpack.security.enabled: true #保存退出编辑模式
cd bin
elasticsearch-setup-passwords interactive #此操作后会提示依次输入各种密码

# 重启
docker restart elasticsearch

# 测试
服务端输入命令:curl http://elastic:[设置的密码,特殊字符转换成十六进制]@ip:9200?pretty
或浏览器直接输入:ip:9200?pretty

安装Kibana

官方安装文档

# 拉去镜像,和es保持同版本
docker pull docker.elastic.co/kibana/kibana:7.11.2

# 创建容器并连接至es; es的默认节点名称就是 elasticsearch
docker run -itd --name kibana --link elasticsearch:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:7.11.2

# 启动
docker restart kibana

# 如果提示因为密码不正确导致连接错误
docker exec -it kibana /bin/bash
cd config
vi kibana.yml

#添加
elasticsearch.username: elastic
elasticsearch.password: your password

# !!! 如果因为错误无法启动从而无法进入交互模式,可以将配置挂载至宿主机中
mkdir /opt/kibana/
docker run --name tempKibana -p 5601:5601 -d docker.elastic.co/kibana/kibana:7.11.2
docker cp tempKibana:/usr/share/kibana/config /opt/kibana/
chmod 777 /opt/kibana/config/*
docker rm -f tempKibana

# 编辑配置增加上述密码
vi kibana.yml
docker run -d --name kibana -p 5601:5601 -v /opt/kibana/config:/usr/share/kibana/config docker.elastic.co/kibana/kibana:7.11.2