在docker中运行GUI(没有SSH,没有VNC)

TL; DR:根本不应该运行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如何启动她的graphics容器来正确启动我的命令:

 $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套接字速度更快,足够时,不应使用密码术,也不要使用networking。


得到了一些消息

作为用户root我无法启动graphics应用程序。 当我su regular-user并启动xtermxeyes它的作品。 我不明白为什么:/


这里是工作的Dockerfile,在Fedora 23上进行了testing。应用程序不能以超级用户身份运行,因此它开始使用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启动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我无法启动graphics应用程序。 当我su regular-user并启动xtermxeyes它的作品。 我不明白为什么:/


这里是工作的Dockerfile,在Fedora 23上进行了testing。应用程序不能以超级用户身份运行,因此它开始使用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启动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"] 
Interesting Posts