BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住

96 阅读4分钟

获取更多技术文章分享原文链接

上期我们以Jenkins为例,一边实战一边了解Docker的基础命令。这期,我们将带大家使用Docker搭建三个平时测试工作中非常有用的小工具。学会这三个实战之后,你就可以说对Docker不是浅尝即止在理论阶段,而是真正有一定了解,也能为你的工作,真正的解决一部分问题。 使用Docker搭建prometheus+grafana的服务器监控

使用Docker搭建prometheus+grafana的服务器监控。让你的服务器监控页面有颜有料且让人一目了然。让数据分析不再局限于数字和曲线图,能够多方位进行对比。

1.Docker启动prometheus

官网下载node_exporter 。地址:prometheus.io/ 2.启动下载好的node_exporter文件 3.填写prometheus.yml配置文件内容 4.使用命令启动prometheus

docker run --name prometheus -d -p 9090:9090 -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml -v `pwd`/rules/:/etc/prometheus/ prom/prometheus --config.file=/etc/prometheus/prometheus.yml

5.输入ip和端口号进入prometheus的前端界面,然后进入Targets页面 6.在首页输入命令,然后点击execute,命令有

cpu使用率:100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
内存使用率:100*(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes
磁盘使用:100.0 - 100 * ((node_filesystem_avail_bytes{mountpoint=~"/", device!="rootfs"} / 1000 / 1000 ) / (node_filesystem_size_bytes{mountpoint=~"/", device!="rootfs"} / 1024 / 1024))

7.启动grafana

docker run --name grafana -d -p 8011:3000 grafana/grafana

进入grafana界面,初始账号密码为admin/admin 进入Add data sourcs->选择prometheus 配置prometheus

字段名含义|------ ![](https://ceshiren.com/uploads/default/original/3X/7/c/7cb5a604dd18fb92c214540167ee452e361bf76b.jpeg) `注意,前方有坑`: 1.如果被监控的node_exporter是mac的话,要去prometheus官网下载mac版本的node_exporter执行,且mac需要修改一些配置参数。 2.如果修改了prometheus.yml 需要重启镜像 **使用Docker搭建Prometheus监控MySQL**
**1.下载prom/mysqld-exporter镜像** ``` docker pull prom/mysqld-exporter ``` **2.启动mysql服务** ``` docker run --name some-mysql -v /home/ubuntu/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.5 ``` **3.启动mysqld-exporter镜像** ``` docker run --name some-mysql -v /home/ubuntu/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.5 docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:1qaz9ol.@(47.95.238.18:8888)/mysql" prom/mysqld-exporter ``` `注意`:-e 之后的参数要填对,分别对应 用户名/密码@(ip:端口号)/mysql 4.在prometheus.yml的配置文件中添加mysql的配置,并`docker restart prometheus` ,重新加载prometheus的配置(可以参考上面的步骤`2`) ![](https://ceshiren.com/uploads/default/original/3X/c/2/c2b055966c0fbeb303167a8c8b0ef1fcd62f629a.jpeg) 6.按照上面的docker启动prometheus过程,配置好之后进去grafana页码,然后选择`data source`,进入prometheus,输入prometheus的url,选择“Save&Test” ![](https://ceshiren.com/uploads/default/original/3X/6/a/6a867e4e967b19d2058f3b014a3fdc91baabed6e.jpeg) 7.导入mysql模板到grafana,mysql的模板id为`6239`,其他步骤和前面搭建服务器监控是一样的哦。 ![](https://ceshiren.com/uploads/default/original/3X/9/7/97def71fa9a770e358d9371b8725be49aa6b8fc5.jpeg) **使用Docker搭建分布式UI自动化环境** ### 如果我们的Web UI自动化测试用例有上千条,执行时间常常需要1~2天,我们用什么方法可以节省这个执行时间呢? 接下来我们就通过`分布式UI自动化`,即启动多个浏览器执行UI自动化测试用例,且每个浏览器执行的UI自动化测试用例都是不同的。这样子,就可以大大提升我们的UI自动化测试的效率。 ####
UITest层会将测试请求发送到GridHub层,而GridHub则会将这些测试请求转换为测试任务下发到每一个Node节点(在每台机器上面我们可以装一个或多个Node节点。),随后Node节点驱动浏览器进行自动化测试。测试完成后,Node节点将测试结果发送到GridHub上面,GridHub再将结果转发回我们的测试程序UITest中 ![](https://ceshiren.com/uploads/default/original/3X/7/1/713571ad32b31c3507f4808b270e8a297872053b.jpeg) (如下图所示) Selenium镜像网上有很多,官网下载即可。也可以定制化。而且还有非可视化的镜像。具有调试作用的远程UI服务的可视化镜像,还有轻量级简易版镜像版本。 **1.底层镜像,可以做定制化** selenium/base: Base image which includes Java runtime and Selenium Server JAR file selenium/node-base: Base image for Grid Nodes which includes a virtual desktop environment selenium/hub: Image for running a Grid Hub **2.谷歌、火狐浏览器的非可视化镜像** selenium/node-chrome: Grid Node with Chrome installed, needs to be connected to a Grid Hub selenium/node-firefox: Grid Node with Firefox installed, needs to be connected to a Grid Hub **3.具有远程UI服务的可视化镜像(调试作用):** selenium/node-chrome-debug: Grid Node with Chrome installed and runs a VNC server, needs to be connected to a Grid Hub selenium/node-firefox-debug: Grid Node with Firefox installed and runs a VNC server, needs to be connected to a Grid Hub **4.简易版镜像,不需要GridHub和Node架构:** selenium/standalone-chrome: Selenium Standalone with Chrome installed selenium/standalone-firefox: Selenium Standalone with Firefox installed selenium/standalone-chrome-debug: Selenium Standalone with Chrome installed and runs a VNC server selenium/standalone-firefox-debug: Selenium Standalone with Firefox installed and runs a VNC server 文档链接: https://github.com/SeleniumHQ/docker-selenium #### #### 实战演示 使用docker启动GridHub ``` docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium ``` ![](https://ceshiren.com/uploads/default/original/3X/3/1/31cb0f616dc08040d33faccec0088ca6555897f0.png) docker启动Node ``` docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium ``` ![](https://ceshiren.com/uploads/default/original/3X/a/8/a8f5dc2903211d44a9e40a388d221a4d325e97ca.png) ![](https://ceshiren.com/uploads/default/original/3X/8/7/87ad8e972daf5d7d2a2c4c4fb75f507eb9f930aa.png) 准备一个自动化测试脚本,以Python为例 ![](https://ceshiren.com/uploads/default/original/3X/6/c/6ce635c207155f0cdf8b54ef6511929f4ef46557.jpeg) ![](https://ceshiren.com/uploads/default/original/3X/8/e/8e5a774749a25f1d0e06d0b4169d7912c4e534f0.png) ** [获取更多技术文章分享](https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=juejin×tamp=1650793898 ) ![img](https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=juejin×tamp=1650793898)