Jmeter Docker Distributed Load Test

Опубликовано: 04 Август 2026
на канале: Subhendu Mangaraj
8,600
44

This video gives a step by step description to setup a Jmeter dockerized environment for distributed load test

Steps to configure Dockerize Jmeter for higher load
1. Creat Jmeter Docker base file
FROM java:8



RUN wget http://mirror.nbtelecom.com.br/apache...

RUN tar -xvzf apache-jmeter-3.2.tgz

RUN rm apache-jmeter-3.2.tgz



RUN mv apache-jmeter-3.2 /jmeter



ENV JMETER_HOME /jmeter



Add Jmeter to the Path

ENV PATH $JMETER_HOME/bin:$PATH

2. Creat Jmeter Docker master file
FROM java:8



RUN wget http://mirror.nbtelecom.com.br/apache...

RUN tar -xvzf apache-jmeter-3.2.tgz

RUN rm apache-jmeter-3.2.tgz



RUN mv apache-jmeter-3.2 /jmeter



ENV JMETER_HOME /jmeter



Add Jmeter to the Path

ENV PATH $JMETER_HOME/bin:$PATH


3. Creat Jmeter Docker slave file
FROM jmeter-base



WORKDIR $JMETER_HOME

Ports to be exposed from the container for JMeter Master

RUN mkdir scripts



EXPOSE 60000


4. create docker-composer.yml
version: '2'



services:

master:

build: ./jmeter-master

container_name: master

tty: true # tty true make the docker image stay up even with nothing running

networks:

jmeter-network

slave:

build: ./jmeter-slave
tty: true
networks:

jmeter-network



networks:

jmeter-network:


5. Create the env start file and start the environment

#!/bin/bash



COUNT=${1-1}



docker build -t jmeter-base jmeter-base

docker-compose build

docker-compose up -d

docker-compose scale master=1 slave=$COUNT


6. Go inside the container
sudo docker exec -it master /bin/bash

7. create and copy the rmi keystore file and user.properties file and copy the backendlistner
sudo docker exec -i jmeter_slave_1 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_1 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_1 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_2 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_2 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_2 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_3 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_3 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_3 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_4 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_4 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_4 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i jmeter_slave_5 sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i jmeter_slave_5 sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i jmeter_slave_5 sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar
sudo docker exec -i master sh -c 'cat /jmeter/bin/user.properties' user.properties
sudo docker exec -i master sh -c 'cat /jmeter/bin/rmi_keystore.jks' rmi_keystore.jks
sudo docker exec -i master sh -c 'cat /jmeter/lib/ext/jmeter.backendlistener.elasticsearch-2.6.9.jar' jmeter.backendlistener.elasticsearch-2.6.9.jar


8. Start jmeter-server in the slave images

9. Run the script from master using the slaves
jmeter -n -t ../scripts/secondscript.jmx -R172.18.0.1,172.18.0.2,172.18.0.3