什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制。Docker架构
Docker的优点
快速,一致地交付您的应用程序
响应式部署和扩展
在同一硬件上运行更多工作负载
JMeter 分布式压力测试
我们在做JMeter 分布式负载测试时,需要我们配置1个master和N个slave来模拟生成大量负载。每一个slave 都需要安装相同版本的java 和 JMeter。并打开指定的端口并运行JMeter服务器,准备就绪并等待主服务器发送指令。以前需要手动安装配置master 和 所有slave,三台五台还可以手动配置,如果10台20台甚至于上百台呢?接下来我们使用docker 轻松配置master 和 N个slave,即便是以后需要升级java或者JMeter版本也可以轻松配置。使用Dockfile创建JMeter docker 镜像(保密)
才不是保密,我已经将三个Docker file文件内容放到docker hub上。而且想单独写篇文章介绍一下docker和docker file创建镜像。(容我三思)
使用Docker hub 使用已经创建好的JMeter docker镜像
(镜像千千万,还是我创建的镜像最好)
Docker hub 上拉取3个镜像
docker pull xuhongwang/jmeter-base:v1
docker pull xuhongwang/jmeter-master:v1docker pull xuhongwang/jmeter-slave:v1拉取完成后运行 docker images创建运行Master容器
docker run -dit --name master xuhongwang/jmeter-master:v1 /bin/bash
查看所有容器 docker ps -a
创建运行Slave容器
docker run -dit --name slave01 xuhongwang/jmeter-slave:v1 /bin/bash
docker run -dit --name slave02 xuhongwang/jmeter-slave:v1 /bin/bash
docker run -dit --name slave03 xuhongwang/jmeter-slave:v1 /bin/bash
docker run -dit --name slave04 xuhongwang/jmeter-slave:v1 /bin/bash
查看所有容器 docker ps -a
获取所有容器IP地址
需要在git bash 下运行
docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(docker ps -a -q)
拷贝测试脚本
因为镜像里面是基础架构并不含有测试脚本,所以我们需要把需要测试的脚本拷贝到master容器中。
docker cp jmeterScripts 5be5d95cea33:/
运行测试
连接master容器并执行jmeter命令
jmeter -n -t "jmeterScripts/SampleTest.jmx" -R 172.17.0.3,172.17.0.4,172.17.0.5,172.17.0.6 -l "/Result.csv" -e -o "/Result" -Dserver.rmi.ssl.disable=true
查看测试结果
查看master 容器中的生成结果
将测试结果拷贝到宿主机上查看结果
下集预告
docker的跨主机网络访问即不同宿主机上的容器之间的通信(字太小,因为我不会呀,低调不想引起注意而已)To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.
关注微信公众号:BecomeMaster。免费获取最新测试文章,技术,教程和视频