簡體   English   中英

在docker中運行GUI(沒有ssh,沒有VNC)

[英]Running GUI in docker (no ssh, no VNC)

TL; DR:root不應該運行GUI應用程序,設置常規用戶這樣做。

我正在嘗試從Docker中運行arduino IDE(已下載,而非包)。 我寫了Dockerfile如下:

FROM ubuntu:14.04
MAINTAINER Mael Auzias <docker@mael.auzias.net>

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通常如何啟動她的圖形容器以正確啟動我的命令:

$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, sun_path=@"/tmp/.X11-unix/X0"}, 20) = -1 ECONNREFUSED (Connection refused)

有沒有人經歷過這個? 任何人都可以指出一些文件或看到我做錯了什么?

歡迎任何幫助。

PS:如標題中所指定的,我不想使用ssh或VNC。 當unix套接字更快且足夠時,不應使用加密,也不應使用網絡。


得到一些消息......

作為用戶root我無法啟動圖形應用程序。 當我su regular-user並啟動xtermxeyes它可以工作。 我真的不明白為什么:/


這是在Fedora 23上測試的工作Dockerfile。應用程序不能以root身份運行,因此它開始使用X.注意, 此問題無關 ,已從bash文件arduino刪除了Java選項(因此它正常啟動) 。

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啟動arduino IDE。

如果不添加--device-v來共享/dev/ttyUSB0您將無法將任何代碼上傳到arduino。

FROM ubuntu:14.04
MAINTAINER Mael Auzias <docker@mael.auzias.net>

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"]

得到一些消息......

作為用戶root我無法啟動圖形應用程序。 當我su regular-user並啟動xtermxeyes它可以工作。 我真的不明白為什么:/


這是在Fedora 23上測試的工作Dockerfile。應用程序不能以root身份運行,因此它開始使用X.注意, 此問題無關 ,已從bash文件arduino刪除了Java選項(因此它正常啟動) 。

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啟動arduino IDE。

如果不添加--device-v來共享/dev/ttyUSB0您將無法將任何代碼上傳到arduino。

FROM ubuntu:14.04
MAINTAINER Mael Auzias <docker@mael.auzias.net>

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"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM