Auz*_*ias 5 docker arduino-ide
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"]
Run Code Online (Sandbox Code Playgroud)
我花了一些时间来了解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.
Run Code Online (Sandbox Code Playgroud)
我安装strace并检查出了xeyes什么问题,然后出现以下错误:
connect(3, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, 20) = -1 ECONNREFUSED (Connection refused)
Run Code Online (Sandbox Code Playgroud)
有人经历过吗?可以指出我一些文档或看到我做错了什么吗?
任何帮助都将受到欢迎。
PS:按照标题中的说明,我不想使用ssh或VNC。当Unix套接字更快且足够时,不应使用加密或网络。
有一些消息...
作为用户root,我无法启动图形应用程序。当我su regular-user启动xterm或xeyes运行时。我不太明白为什么:/
这是在Fedora 23上测试的工作Dockerfile。该应用程序不能以root身份运行,因此它开始使用X。请注意,与该问题无关,已从bash文件中删除了Java选项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。
如果不添加或共享,您将无法将任何代码上传到arduino 。--device-v/dev/ttyUSB0
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"]
Run Code Online (Sandbox Code Playgroud)
得到一些消息...
作为 root 用户,我无法启动图形应用程序。当我su regular-user启动xterm或xeyes它起作用时。我真的不明白为什么:/
这是在 Fedora 23 上测试的工作 Dockerfile。应用程序不能以 root 身份运行,因此它使用 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共享.arduino 文件,您将无法将任何代码上传到 arduino /dev/ttyUSB0。
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"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |