X11 显示变量未设置 - 无法 运行 Docker 图片
X11 Display variable is not set - can't run Docker Image
我制作了 JMeter 的 Docker-Image,因为我想 运行 它远程(从云端)。如果我 运行 我收到错误的图像:'No X11 DISPLAY variable was set, but this program performed an operation which requires it.'
我已经更新了 ssh_config 文件和 sshd_config 文件(如类似问题中所述),但它仍然不起作用。
并且我的 DISPLAY 变量设置为 localhost:10.0
。知道我在 Ubuntu 19.04.
的虚拟机上执行此操作可能很有用
感谢您的帮助。
Docker-Images 没有解决方案。因为 Docker 不支持 GUI,因此出现此错误。因此,如果您正在使用 Docker 并且收到此错误,请忽略它或将您的图像更新为仅 non-gui.
干杯
您应该这样声明 DISPLAY variable using ENV
command:
ENV DISPLAY :10
但请注意,您至少需要有一个显示服务器 Xvfb。
所以 运行 JMeter GUI 在 Docker 容器中是可能的,但你必须像对待普通的 Linux 桌面一样对待它,它可以是像 Xfce
例子Dockerfile which downloads latest JMeter, installs virtual desktop and makes it available via VNC and 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 指南很有用。
经过几个小时的搜索,我找到了解决方案:(credit)
我的设置是 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
xhost +
docker run -e DISPLAY=$DISPLAY --rm --name ${NAME} -i -v ${PWD}:${PWD} -v /tmp/.X11-unix:/tmp/.X11-unix:ro -w ${PWD} ${IMAGE} $@
xhost -
这项工作,就工作而言,它比另一种方法 (vnc...) 少得多
我制作了 JMeter 的 Docker-Image,因为我想 运行 它远程(从云端)。如果我 运行 我收到错误的图像:'No X11 DISPLAY variable was set, but this program performed an operation which requires it.'
我已经更新了 ssh_config 文件和 sshd_config 文件(如类似问题中所述),但它仍然不起作用。
并且我的 DISPLAY 变量设置为 localhost:10.0
。知道我在 Ubuntu 19.04.
感谢您的帮助。
Docker-Images 没有解决方案。因为 Docker 不支持 GUI,因此出现此错误。因此,如果您正在使用 Docker 并且收到此错误,请忽略它或将您的图像更新为仅 non-gui.
干杯
您应该这样声明 DISPLAY variable using ENV
command:
ENV DISPLAY :10
但请注意,您至少需要有一个显示服务器 Xvfb。
所以 运行 JMeter GUI 在 Docker 容器中是可能的,但你必须像对待普通的 Linux 桌面一样对待它,它可以是像 Xfce
例子Dockerfile which downloads latest JMeter, installs virtual desktop and makes it available via VNC and 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 指南很有用。
经过几个小时的搜索,我找到了解决方案:(credit) 我的设置是 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
xhost +
docker run -e DISPLAY=$DISPLAY --rm --name ${NAME} -i -v ${PWD}:${PWD} -v /tmp/.X11-unix:/tmp/.X11-unix:ro -w ${PWD} ${IMAGE} $@
xhost -
这项工作,就工作而言,它比另一种方法 (vnc...) 少得多