我制作了JMeter的Docker-Image,因为我想远程运行它(并从云中运行)。如果我运行Image,则会收到错误消息:“未设置X11 DISPLAY变量,但是此程序执行了需要它的操作。”
我已经更新了ssh_config文件和sshd_config文件(如类似问题中所述),但仍然无法正常工作。
并且我的DISPLAY变量设置为localhost:10.0
。知道我正在Ubuntu 19.04的VM上执行此操作可能很有用。
感谢您的帮助。
答案 0 :(得分:0)
没有针对Docker-Images的解决方案。由于Docker不支持GUI,因此出现此错误。因此,如果您正在使用Docker并遇到此错误,请忽略它或将映像更新为仅非GUI。
欢呼
答案 1 :(得分:0)
您应使用DISPLAY声明此ENV
command变量,如:
ENV DISPLAY :10
但是请注意,您至少需要Xvfb的显示服务器。
因此可以在Docker容器中运行JMeter GUI,但是您必须将其像普通的Linux桌面一样对待,它可能像Xfce一样是最小的
示例Dockerfile下载了最新的JMeter,安装了虚拟桌面,并通过VNC和RDP使其可用
FROM alpine:edge
ENV DISPLAY :99
ENV RESOLUTION 1366x768x24
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk add --no-cache curl xfce4-terminal xvfb x11vnc xfce4 openjdk8-jre bash xrdp \
&& curl -L https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.1.1.tgz > /tmp/jmeter.tgz \
&& tar -xvf /tmp/jmeter.tgz -C /opt \
&& rm /tmp/jmeter.tgz \
&& curl -L https://jmeter-plugins.org/get/ > /opt/apache-jmeter-5.1.1/lib/ext/jmeter-plugins-manager.jar \
&& echo "[Globals]" > /etc/xrdp/xrdp.ini \
&& echo "bitmap_cache=true" >> /etc/xrdp/xrdp.ini \
&& echo "bitmap_compression=true" >> /etc/xrdp/xrdp.ini \
&& echo "autorun=jmeter" >> /etc/xrdp/xrdp.ini \
&& echo "[jmeter]" >> /etc/xrdp/xrdp.ini \
&& echo "name=jmeter" >> /etc/xrdp/xrdp.ini \
&& echo "lib=libvnc.so" >> /etc/xrdp/xrdp.ini \
&& echo "ip=localhost" >> /etc/xrdp/xrdp.ini \
&& echo "port=5900" >> /etc/xrdp/xrdp.ini \
&& echo "username=jmeter" >> /etc/xrdp/xrdp.ini \
&& echo "password=" >> /etc/xrdp/xrdp.ini
EXPOSE 5900
EXPOSE 3389
CMD ["bash", "-c", "rm -f /tmp/.X99-lock && rm -f /var/run/xrdp.pid\
&& nohup bash -c \"/usr/bin/Xvfb :99 -screen 0 ${RESOLUTION} -ac +extension GLX +render -noreset && export DISPLAY=99 > /dev/null 2>&1 &\"\
&& nohup bash -c \"startxfce4 > /dev/null 2>&1 &\"\
&& nohup bash -c \"x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -forever -bg -nopw -rfbport 5900 > /dev/null 2>&1\"\
&& nohup bash -c \"xrdp > /dev/null 2>&1\"\
&& nohup bash -c \"/opt/apache-jmeter-5.1.1/bin/./jmeter -Jjmeter.laf=CrossPlatform > /dev/null 2>&1 &\"\
&& tail -f /dev/null"]
您可以build像这样:
docker build -t jmeter.
,一旦完成,请使用Docker run命令启动容器,例如:
docker run -p 5900:5900 -p 3389:3389 jmeter
您可能还会发现Make Use of Docker with JMeter - Learn How指南很有用。