繁体   English   中英

X11 显示变量未设置 - 无法运行 Docker Image

[英]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变量,例如:

ENV DISPLAY :10

但是请注意,您至少需要一个显示服务器Xvfb

因此可以在Docker容器中运行JMeter GUI,但是您必须将其像普通的Linux桌面一样对待,它可能像Xfce一样是最小的桌面。

示例Dockerfile下载最新的JMeter,安装虚拟桌面并通过VNCRDP使其可用

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.

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