2015-12-01 3 views
3

TL; DR: root не должен запускать GUI-приложение, установите для него обычного пользователя.Запуск графического интерфейса в докере (no ssh, no VNC)

Я пытаюсь запустить arduino IDE (скачанный, а не пакет) изнутри Докера. Я написал Dockerfile следующим образом:

FROM ubuntu:14.04 
MAINTAINER Mael Auzias <[email protected]> 

ENV HOME /home/arduino 
ENV USER arduino 

RUN apt-get update && apt-get install -y \ 
    libx11-6 libxext-dev libxrender-dev libxtst-dev \ 
    --no-install-recommends \ 
    && useradd --create-home --home-dir $HOME $USER \ 
    && chown -R $USER:$USER $HOME 

ADD arduino-1.6.6-linux64.tar.xz $HOME 

WORKDIR $HOME/arduino-1.6.6 
USER $USER 

ENTRYPOINT ["/bin/bash"] 

я потратил время, чтобы понять, как же Jessica Frazelle обычно начинается ее graphical containers по праву начать мину с помощью команды:

$docker run --name arduino --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix 25af73b6cb3c ./arduino 
No protocol specified 
Picked up JAVA_TOOL_OPTIONS: 
No protocol specified 
Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable. 

я установил strace и проверить с xeyes что было неправильно, и я получаю следующую ошибку:

connect(3, {sa_family=AF_LOCAL, [email protected]"/tmp/.X11-unix/X0"}, 20) = -1 ECONNREFUSED (Connection refused) 

Неужели кто-нибудь испытал это? Может ли кто-нибудь указать мне какой-нибудь документ или посмотреть, что я делаю неправильно?

Любая помощь будет радушна.

PS: как указано в заголовке, я не хочу использовать ssh или VNC. Никакая криптография не должна использоваться или сеть, когда сокет unix быстрее и достаточно.


Решение

Есть некоторые новости ...

В корневом каталоге пользователя я не могу запустить графическое приложение. Когда я su regular-user и начинаю xterm или xeyes, он работает. Я не понимаю, почему, хотя:/


Здесь работает Dockerfile, протестирован на Fedora 23. Приложение не должно быть побежал, как корень, так что начинает использовать X. Обратите внимание, что, несвязанный к этой проблеме параметр Java был удален из файла bash arduino (поэтому он запускается правильно).

После docker build -t arduino-1.6.6 ., docker run --name arduino --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix arduino-1.6.6 ./arduino Запустите IDE arduino.

Вы не быть в состоянии загрузить любой код в Arduino без добавления --device или -v поделиться /dev/ttyUSB0.

FROM ubuntu:14.04 
MAINTAINER Mael Auzias <[email protected]> 

ENV HOME /home/arduino 
ENV USER arduino 

RUN apt-get update && apt-get install -y \ 
     libx11-6 libxext-dev libxrender-dev libxtst-dev \ 
     --no-install-recommends \ 
     && rm -rf /var/lib/apt/lists/* \ 
     && useradd --create-home --home-dir $HOME $USER \ 
     && chown -R $USER:$USER $HOME 

ADD arduino-1.6.6-linux64.tar.xz $HOME 
RUN sed -i 's/"-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"//g' /home/arduino/arduino-1.6.6/arduino 

WORKDIR $HOME/arduino-1.6.6 
USER $USER 

ENTRYPOINT ["/bin/bash"] 

ответ

2

Есть некоторые новости ...

В корневом каталоге пользователя я не могу запустить графическое приложение. Когда я su regular-user и начинаю xterm или xeyes, он работает. Я не понимаю, почему, хотя:/


Здесь работает Dockerfile, протестирован на Fedora 23. Приложение не должно быть побежал, как корень, так что начинает использовать X. Обратите внимание, что не связан с, эта проблема была удалена из файла bash arduino (поэтому он запускается правильно).

После docker build -t arduino-1.6.6 ., docker run --name arduino --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix arduino-1.6.6 ./arduino Запустите IDE arduino.

Вы не быть в состоянии загрузить любой код в Arduino без добавления --device или -v поделиться /dev/ttyUSB0.

FROM ubuntu:14.04 
MAINTAINER Mael Auzias <[email protected]et> 

ENV HOME /home/arduino 
ENV USER arduino 

RUN apt-get update && apt-get install -y \ 
     libx11-6 libxext-dev libxrender-dev libxtst-dev \ 
     --no-install-recommends \ 
     && rm -rf /var/lib/apt/lists/* \ 
     && useradd --create-home --home-dir $HOME $USER \ 
     && chown -R $USER:$USER $HOME 

ADD arduino-1.6.6-linux64.tar.xz $HOME 
RUN sed -i 's/"-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"//g' /home/arduino/arduino-1.6.6/arduino 

WORKDIR $HOME/arduino-1.6.6 
USER $USER 

ENTRYPOINT ["/bin/bash"] 

 Смежные вопросы

  • Нет связанных вопросов^_^