Переменная дисплея X11 не установлена ​​— не удается запустить образ Docker

я сделал Docker-образ JMeter, потому что хочу запускать его удаленно (и из облака). Если я запускаю изображение, я получаю сообщение об ошибке: «Переменная X11 DISPLAY не была установлена, но эта программа выполнила операцию, для которой она требуется».

Я обновил файл ssh_config и файл sshd_config (как упоминалось в аналогичных вопросах), но он все еще не работает.

введите здесь описание изображения

И моя переменная DISPLAY установлена ​​​​на localhost:10.0. Возможно, полезно знать, что я делаю это на виртуальной машине в Ubuntu 19.04.

Спасибо за вашу помощь.


person noob123    schedule 23.07.2019    source источник
comment
См. stackoverflow.com /вопросы/662421/   -  person user7294900    schedule 23.07.2019
comment
Да, как я уже сказал. Это все еще не работает. Я попробовал эти решения, но это не решило мою проблему.   -  person noob123    schedule 23.07.2019


Ответы (2)


Вы должны объявить эту переменную DISPLAY с помощью ENV команда, например:

ENV DISPLAY :10

Но имейте в виду, что вам нужен сервер отображения, по крайней мере, Xvfb.

Таким образом, запуск JMeter GUI в контейнере Docker возможен, но вам придется относиться к нему как к обычному рабочему столу 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

Вы также можете найти Использование Docker с Полезное руководство по JMeter — Learn How.

person Dmitri T    schedule 05.08.2019

НЕТ решения для Docker-Images. Поскольку Docker не поддерживает графический интерфейс, поэтому я получаю эту ошибку. Так что, если вы работаете с Docker и получаете эту ошибку, просто проигнорируйте ее или обновите свой образ только без графического интерфейса.

Ваше здоровье

person noob123    schedule 23.07.2019