持续集成与容器管理 DockerMaven Jenkins Rancher influxD

学习目标:

掌握DockerMaven插件的使用
掌握持续集成工具Jenkins的安装与使用
掌握容器管理工具Rancher的安装与使用
掌握时间序列数据库influxDB的安装与使用
掌握容器监控工具cAdvisor的安装与使用掌握图表工具Grafana的使用

1DockerMaven插件

微服务部署有两种方法:

(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署。
对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这 里学习如何自动部署,这也是企业实际开发中经常使用的方法。
Maven插件自动部署步骤:
(1)修改宿主机的docker配置,让其可以远程访问

vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock

修改后如下:
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第1张图片(2)刷新配置,重启服务

systemctl daemon‐reload 
systemctl restart docke
r docker start registry

(3)在工程pom.xml 增加配置


app


org.springframework.boot
spring‐boot‐maven‐plugin



com.spotify
docker‐maven‐plugin
0.4.13


192.168.184.141:5000/${project.artifactId}:${project.version}

jdk1.8
["java", "‐jar", "/${project.build.finalName}.jar"]


/
${project.build.directory}


${project.build.finalName}.jar


http://192.168.184.141:2375




以上配置会自动生成Dockerfile

FROM jdk1.8 
ADD app.jar /
ENTRYPOINT ["java","‐jar","/app.jar"]

(5)在windows的命令提示符下,进入工程tensquare_parent所在的目录

mvn install

进入tensquare_base 所在的目录,输入以下命令,进行打包和上传镜像

mvn docker:build	‐DpushImage

执行后,会有如下输出,代码正在上传
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第2张图片
(6)进入宿主机 , 查看镜像

docker images

持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第3张图片
输出如上内容,表示微服务已经做成镜像
浏览器访问 http://192.168.184.141:5000/v2/_catalog ,输出

{"repositories":["tensquare_base"]}

浏览器访问 http://192.168.184.141:5000/v2/_catalog ,输出

{"repositories":["tensquare_base"]}

(7)启动容器:

docker run ‐di ‐‐name=base ‐p 9001:9001 192.168.184.141:5000/tensquare_base:1.0‐SNAPSHOT

2持续集成工具-Jenkins

2.1什么是持续集成

持续集成 Continuous integration ,简称CI
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件 开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也 显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建 来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开 发内聚的软件。
持续集成具有的特点:

它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
需要有专门的集成服务器来执行集成构建;
需要有代码托管工具支持,我们下一小节将介绍Git以及可视化界面Gogs的使用持续集成的作用:
保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;

2.2Jenkins简介

Jenkins,原名Hudson,2011年改为现在的名字,它 是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/。
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
特点:

易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
易配置:提供友好的GUI配置界面;
变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
支持永久链接:用户是通过web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
集成E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程 中,干别的事情);
JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录;
支持第三方插件:使得 Jenkins 变得越来越强大

2.3Jenkins安装

2.3.1JDK安装
(1)将jdk-8u171-linux-x64.rpm上传至服务器(虚拟机)
(2)执行安装命令

rpm ‐ivh jdk‐8u171‐linux‐x64.rpm

RPM方式安装JDK,其根目录为:/usr/java/jdk1.8.0_171-amd64

2.3.2Jenkins安装与启动
(1)下载jenkins

wget https://pkg.jenkins.io/redhat/jenkins‐2.83‐1.1.noarch.rpm

或将jenkins-2.83-1.1.noarch.rpm上传至服务器
(2)安装jenkins

rpm ‐ivh jenkins‐2.83‐1.1.noarch.rpm

(3)配置jenkins

vi /etc/sysconfig/jenkins

修改用户和端口

JENKINS_USER="root" 
JENKINS_PORT="8888"

(4)启动服务

systemctl start jenkins

(5)访问链接 http://192.168.184.135:8888
从/var/lib/jenkins/secrets/initialAdminPassword中获取初始密码串
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第4张图片
(6)安装插件
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第5张图片持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第6张图片
(7)新建用户
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第7张图片
完成安装进入主界面
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第8张图片

2.4Jenkins插件安装

我们以安装maven插件为例,演示插件的安装
(1)点击左侧的“系统管理”菜单 ,然后点击
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第9张图片

(2)选择“可选插件”选项卡,搜索maven,在列表中选择Maven Integration ,点击“直接安装”按钮
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第10张图片
看到如下图时,表示已经完成
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第11张图片

2.5全局工具配置

2.5.1安装Maven与本地仓库
(1)将Maven压缩包上传至服务器(虚拟机)
(2)解压

tar zxvf apache‐maven‐3.5.4‐bin.tar.gz

(3)移动目录

mv apache‐maven‐3.5.4 /usr/local/maven

(4)编辑setting.xml配置文件库vi /usr/local/maven/conf/settings.xml目录,内容如下

/usr/local/repository

将开发环境的本地仓库上传至服务器(虚拟机)并移动到/usr/local/repository

mv reponsitory_boot /usr/local/repository

执行此步是为了以后在打包的时候不必重新下载,缩短打包的时间。

2.5.2全局工具配置
选择系统管理,全局工具配置
(1)JDK配置
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第12张图片
设置javahome为 /usr/java/jdk1.8.0_171-amd64
(2)Git配置 (本地已经安装了Git软件)
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第13张图片

(3)Maven配置
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第14张图片

2.6代码上传至Git服务器

2.6.1Gogs搭建与配置
Gogs 是一款极易搭建的自助 Git 服务。
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
地址:https://gitee.com/Unknown/gogs
(1)下载镜像

docker pull gogs/gogs

(2)创建容器

docker run ‐di ‐‐name=gogs ‐p 10022:22 ‐p 3000:3000 ‐v /var/gogsdata:/data gogs/gogs

(3)假设我的centos虚拟机IP为192.168.184.141 在地址栏输
入http://192.168.184.141:3000 会进入首次运行安装程序页面,我们可以选择一种数据库作为gogs数据的存储,最简单的是选择SQLite3。如果对于规模较大的公司,可以选择MySQL
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第15张图片
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第16张图片
点击“立即安装”
这里的域名要设置为centos的IP地址,安装后显示主界面
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第17张图片
(4)注册
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第18张图片
(5)登录
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第19张图片
(6)创建仓库
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第20张图片
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第21张图片
2.6.2提交代码
步骤:

(1)在本地安装git(Windows版本)
(2)在IDEA中选择菜单 : File – settings , 在窗口中选择Version Control – Git
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第22张图片
(3)选择菜单VCS --> Enable Version Control Integration…
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第23张图片
选择Git
(4)设置远程地址: 右键点击工程选择菜单 Git --> Repository -->Remotes…
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第24张图片
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第25张图片
(5)右键点击工程选择菜单 Git --> Add
(6)右键点击工程选择菜单 Git --> Commit Directory…
(7)右键点击工程选择菜单 Git --> Repository --> Push …

2.7任务的创建与执行

(1)回到首页,点击新建按钮 .如下图,输入名称,选择创建一个Maven项目,点击OK
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第26张图片
(2)源码管理,选择Git
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第27张图片
(3)Build
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第28张图片
命令:

clean package docker:build ‐DpushImage

用于清除、打包,构建docker镜像最后点击“保存”按钮
(4)执行任务

3容器管理工具Rancher

3.1什么是Rancher

Rancher是一个开源的企业级全栈化容器部署及管理平台。Rancher为容器提供一揽子基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防护墙…… Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。
https://www.cnrancher.com/

3.2Rancher安装

(1)下载Rancher 镜像

docker pull rancher/server

(2)创建Rancher容器

docker run ‐di ‐‐name=rancher ‐p 9090:8080 rancher/server

(3)在浏览器输入地址: http://192.168.184.136:9090 即可看到高端大气的欢迎页
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第29张图片
点击Got It 进入主界面
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第30张图片
(4)切换至中文界面
点击右下角的English 在弹出菜单中选择中文
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第31张图片
切换后我们就可以看到亲切的中文界面啦~
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第32张图片

3.3Rancher初始化

3.3.1添加环境
Rancher 支持将资源分组归属到多个环境。 每个环境具有自己独立的基础架构资源及服务,并由一个或多个用户、团队或组织所管理。
例如,您可以创建独立的“开发”、“测试”及“生产”环境以确保环境之间的安全隔离,将“开 发”环境的访问权限赋予全部人员,但限制“生产”环境的访问权限给一个小的团队。
(1)选择“Default -->环境管理” 菜单

持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第33张图片
(2)填写名称,点击“创建”按钮
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第34张图片
(3)按照上述步骤,添加十次方测试环境和生产环境
在这里插入图片描述
(4)你可以通过点击logo右侧的菜单在各种环境下切换
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第35张图片
3.3.2添加主机
(1)选择基础架构–>主机 菜单,点击添加主机
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第36张图片
(2)拷贝脚本
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第37张图片
(3)在服务器(虚拟机)上运行脚本
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第38张图片
(4)点击关闭按钮后,会看到界面中显示此主机。我们可以很方便地管理主机的每个容器的开启和关闭

持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第39张图片
3.3.3添加应用
点击应用–>全部(或用户) ,点击“添加应用”按钮
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第40张图片
填写名称和描述持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第41张图片
点击“创建”按钮,列表中增加了新增的应用
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第42张图片

3.4应用部署

3.4.1MySQL部署
镜像:centos/mysql-57-centos7 增加数据库服务
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第43张图片
注意:添加环境变量 MYSQL_ROOT_PASSWORD=123456
在这里插入图片描述
点击创建按钮,完成创建 上述操作相当于以下docker命令

docker run ‐di ‐‐name mysql ‐p 3306:3306 ‐e MYSQL_ROOT_PASSWORD=123456 centos/mysql‐57‐centos7

在这里插入图片描述
完成后服务列表中存在并且状态为激活 使用SQLyog测试链接,执行建表语句

3.4.2RabbitMQ部署
镜像:rabbitmq:management 端口映射5671 5672 4369 15671 15672 25672
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第44张图片
浏览器访问 http://192.168.184.136:15672/

3.4.3Redis部署
进入应用,点击添加服务,名称redis ,镜像redis ,端口映射6379
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第45张图片
创建后使用客户端测试链接

redis‐cli ‐h 192.168.184.144

测试成功

3.4.4微服务部署
(1)搭建私有仓库启动私有仓库容器

docker run ‐di ‐‐name=registry ‐p 5000:5000 registry

打开浏览器 输入地址http://192.168.184.144:5000/v2/_catalog看到{“repositories”:[]}表示私有仓库搭建成功并且内容为空
修改daemon.json

vi /etc/docker/daemon.json

添加以下内容,保存退出。

{"insecure‐registries":["192.168.184.144:5000"]}

(2)修改docker配置,允许远程访问

vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置

修改后刷新配置‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock,冲洗服务

systemctl daemon‐reload 
systemctl restart docker
 docker start registry

(3)修改微服务工程,添加DockerMaven插件
(4)连接mysql数据库,执行建库脚本

(5)添加服务base-service 镜像192.168.184.144:5000/tensquare_base:1.0- SNAPSHOT 端口映射9001
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第46张图片
(6)测试微服务 浏览器打开网址 http://192.168.184.144:9001/label 看是否可以看到标签列表

3.6扩容与缩容

3.6.1扩容
(1)在Rancher将创建的base-service(基础信息微服务)删除
(2)重新创建base-service ,不设置端口映射
在这里插入图片描述
(3)在选择菜单API -->WebHooks ,点击“添加接收器”按钮
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第47张图片
(4)填写名称等信息,选择要扩容的服务,点击创建按钮
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第48张图片
(5)接收器列表中新增了一条记录 ,点击触发地址将地址复制到剪切板
在这里插入图片描述
(6)使用postman测试:
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第49张图片
测试后,发现容器由原来的1个变为了3个
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第50张图片
3.6.2缩容
刚才我们实现了扩容,那么如何减少容器数量呢?我们来试试如何缩容

(1)添加接收器 ,选择缩容,步长为1表示每次递减1个 ,点击创建按钮
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第51张图片
(2)创建成功后,复制触发地址
在这里插入图片描述
(3)使用postman测试
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第52张图片

4influxDB

4.1什么是influxDB

influxDB是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储 监视数据。因此,我们需要提供时序数据库用于存储cAdvisor组件所提供的监控信息, 以便显示除实时信息之外的时序数据。

4.2influxDB安装
(1)下载镜像

docker pull tutum/influxdb

(2)创建容器

docker run ‐di \
‐p 8083:8083 \
‐p 8086:8086 \
‐‐expose 8090 \
‐‐expose 8099 \
‐‐name influxsrv \ tutum/influxdb

端口概述: 8083端口:web访问端口 8086:数据写入端口
打开浏览器 http://192.168.184.144:8083/
在这里插入图片描述

4.3influxDB常用操作

4.3.1创建数据库

CREATE DATABASE "cadvisor"

回车创建数据库

SHOW DATABASES

查看数据库

4.3.2创建用户并授权
创建用户

CREATE USER "cadvisor" WITH PASSWORD 'cadvisor' WITH ALL PRIVILEGES

查看用户

SHOW USRES

用户授权

grant all privileges on cadvisor to cadvisor
 grant WRITE on cadvisor to cadvisor
grant READ on cadvisor to cadvisor

4.3.3查看采集的数据
切换到cadvisor数据库,使用以下命令查看采集的数据

SHOW MEASUREMENTS

现在我们还没有数据,如果想采集系统的数据,我们需要使用Cadvisor软件来实现

5cAdvisor

5.1什么是cAdvisor

Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任何配置就可以通过运行在Docker主机上的容器来监控Docker容器,而且可以监控Docker 主机。更多详细操作和配置选项可以查看Github上的cAdvisor项目文档。

5.2cAdvisor安装

(1)下载镜像

docker pull google/cadvisor

(2)创建容器

docker run ‐‐volume=/:/rootfs:ro ‐‐volume=/var/run:/var/run:rw ‐‐ volume=/sys:/sys:ro ‐‐volume=/var/lib/docker/:/var/lib/docker:ro ‐‐ publish=8080:8080 ‐‐detach=true ‐‐link influxsrv:influxsrv ‐‐name=cadvisor google/cadvisor ‐storage_driver=influxdb ‐storage_driver_db=cadvisor ‐ storage_driver_host=influxsrv:8086

WEB前端访问地址http://192.168.184.144:8080/containers/
性能指标含义参照如下地址https://blog.csdn.net/ZHANG_H_A/article/details/53097084 再次查看influxDB,发现已经有很多数据被采集进去了。

6Grafana

6.1什么是Grafana

Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。
Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式; 多个数据源。

6.2Grafana安装

(1)下载镜像

docker pull grafana/grafana

(2)创建容器

docker run ‐d ‐p 3001:3000	‐e INFLUXDB_HOST=influxsrv ‐e INFLUXDB_PORT=8086 ‐e INFLUXDB_NAME=cadvisor ‐e INFLUXDB_USER=cadvisor ‐e INFLUXDB_PASS=cadvisor ‐‐link influxsrv:influxsrv ‐‐name grafana grafana/grafana

(3)访问

http://192.168.184.144:3001

用户名密码均为admin
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第53张图片
(4)登录后提示你修改密码
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第54张图片
(5)之后进入主页面
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第55张图片

6.3Grafana的使用

6.3.1添加数据源
(1)点击设置,DataSource
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第56张图片
(2)点击添加data source
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第57张图片
(3)为数据源起个名称,指定类型、地址、以及连接的数据库名、用户名和密码
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第58张图片
点击保存。数据源建立成功
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第59张图片
6.3.2添加仪表盘
(1)选择Dashboards --Manager
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第60张图片
(2)点击“添加”按钮
(3)点击Graph 图标
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第61张图片
(4)出现下面图表的界面 ,点击Panel Title 选择Edit (编辑)
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第62张图片
(5)定义标题等基础信息
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第63张图片
(6)设置查询的信息为内存,指定容器名称
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第64张图片
(7)指定y轴的单位 为M
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第65张图片
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第66张图片
填写名称
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第67张图片6.4.3预警通知设置
(1)选择菜单 alerting–> Notification channels
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第68张图片
(2)点击Add channel 按钮
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第69张图片
(3)填写名称,选择类型为webhook ,填写钩子地址
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第70张图片
这个钩子地址是之前对base微服务扩容的地址

在这里插入图片描述
(4)点击SendTest 测试 观察基础微服务是否增加容器
(5)点击save保存
(6)按照同样的方法添加缩容地址

6.4.4仪表盘预警设置
(1)再次打开刚刚编辑的仪表盘
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第71张图片
(2)点击 Create Alert
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第72张图片
设置预警线

(3)选择通知
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第73张图片
持续集成与容器管理 DockerMaven Jenkins Rancher influxD_第74张图片
保存更改

你可能感兴趣的:(java,分布式事务,微服务)