在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
并启动xterm
或xeyes
它的作品。 我不明白为什么:/
这里是工作的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
并启动xterm
或xeyes
它的作品。 我不明白为什么:/
这里是工作的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"]