[英]X11 Display variable is not set - can't run Docker Image
我制作了 JMeter 的 Docker-Image 因为我想远程运行它(并且从云中运行)。 如果我运行图像,我会收到错误消息:“未设置 X11 显示变量,但该程序执行了需要它的操作。”
我已经更新了 ssh_config 文件和 sshd_config 文件(如类似问题中所述),但它仍然不起作用。
我的 DISPLAY 变量设置为localhost:10.0
。 知道我在 Ubuntu 19.04 上的 VM 上执行此操作可能很有用。
谢谢你的帮助。
Docker-Images没有解决方案。 由于Docker不支持GUI,因此出现此错误。 因此,如果您正在使用Docker并遇到此错误,请忽略它或将映像更新为仅非GUI。
干杯
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"]
您可以像这样构建它:
docker build -t jmeter.
然后使用Docker run命令启动容器,如下所示:
docker run -p 5900:5900 -p 3389:3389 jmeter
您可能还会发现通过JMeter使用Docker-学习指南指南很有用。
经过几个小时的搜索,我找到了解决方案:(信用)我的设置是 ubuntu 18.04,lxde,这个 docker build我修改了这样的运行脚本:
#!/bin/bash
#
# Run JMeter Docker image with options
NAME="jmeter"
JMETER_VERSION=${JMETER_VERSION:-"5.4"}
IMAGE="justb4/jmeter:${JMETER_VERSION}"
# Finally run
docker run -e DISPLAY=$DISPLAY --rm --name ${NAME} -i -v ${PWD}:${PWD} -v /tmp/.X11-unix:/tmp/.X11-unix:ro -w ${PWD} ${IMAGE} $@
这项工作,就努力而言,它比另一种方法要少得多(vnc ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.