簡體   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