繁体   English   中英

Docker 中的 Jmeter

[英]Jmeter in Docker

我正在尝试在 Docker 中运行 Jmeter。 我得到了 Dockerfile 并且 Entrypoint 也添加了 entrypoint.sh。

ARG JMETER_VERSION="5.2.1"
RUN mkdir /jmeter
WORKDIR /jmeter
RUN apt-get update \
    && apt-get install wget -y \
    && apt-get install openjdk-8-jdk -y \
    && wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.1.tgz \
    && tar -xzf apache-jmeter-5.2.1.tgz \
    && rm apache-jmeter-5.2.1.tgz
ENV JAVA_HOME  /usr/lib/jvm/java-8-openjdk-amd64
RUN export JAVA_HOME
RUN echo $JAVA_HOME
ENV JMETER jmeter/apache-jmeter-5.2.1/bin
ENV PATH $PATH:$JMETER_BIN
RUN export JMETER
RUN echo $JMETER
WORKDIR /jmeter/apache-jmeter-5.2.1
COPY users.jmx /jmeter/apache-jmeter-5.2.1
COPY entrypoint.sh /jmeter/apache-jmeter-5.2.1
RUN ["chmod", "+x", "entrypoint.sh"]
ENTRYPOINT ["./entrypoint.sh"]

入口点.sh

#!/bin/bash
# Inspired from https://github.com/hhcordero/docker-jmeter-client
# Basically runs jmeter, assuming the PATH is set to point to JMeter bin-dir (see Dockerfile)
#
# This script expects the standdard JMeter command parameters.
#
set -e
freeMem=`awk '/MemFree/ { print int($2/1024) }' /proc/meminfo`
s=$(($freeMem/10*8))
x=$(($freeMem/10*8))
n=$(($freeMem/10*2))
export JVM_ARGS="-Xmn${n}m -Xms${s}m -Xmx${x}m"

echo "START Running Jmeter on `date`"
echo "JVM_ARGS=${JVM_ARGS}"
echo "jmeter args=$@"

# Keep entrypoint simple: we must pass the standard JMeter arguments
bin/jmeter.sh $@
echo "END Running Jmeter on `date`"

现在,当我尝试在没有 jmeter arguments 的情况下运行容器时,容器启动并询问 jmeter ZDBC11CAA5BDA99F77E6FB4DABD882E7

docker run sar/test12

我收到错误,因为发生错误:未设置 X11 DISPLAY 变量,但该程序执行了需要它的操作。

但是当我使用 arguments docker run -v /home/jmeter/unbuntjmeter/:/jmeter/apache-jmeter-5.2.1 sar/test12 -n -t./users.jmx

docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致“exec:”./entrypoint.sh“:权限被拒绝”:未知。

解决方案

对于 X11 问题,您可以尝试在docker run中设置-e DISPLAY=$DISPLAY ,您可能需要执行一些其他步骤才能使其正常工作,具体取决于您的主机设置方式。 但是试图让 GUI 在这里工作似乎有点过头了。 要在通过命令 arguments 时解决您的问题,您可以:

  • 通过运行chmod +x /home/jmeter/unbuntjmeter/entrypoint.sh将执行权限添加到主机上的entrypoint.sh文件。

或者

  • 不要通过从docker run命令中删除-v参数来将/home/jmeter/unbuntjmeter/安装到容器中。

问题

当您运行此命令docker run -v /home/jmeter/unbuntjmeter/:/jmeter/apache-jmeter-5.2.1 sar/test12 -n -t./users.jmx时,您正在安装目录/home/jmeter/unbuntjmeter/从您的主机到您的/jmeter/apache-jmeter-5.2.1容器中的 /jmeter/apache-jmeter-5.2.1。

这意味着容器中的/jmeter/apache-jmeter-5.2.1/entrypoint.sh脚本被主机上该目录中的脚本覆盖(如果有的话,似乎确实存在)。 您主机上的此文件没有在您的容器中执行的适当权限(可能它只需要+x因为您在构建中运行它: RUN ["chmod", "+x", "entrypoint.sh"] )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM