gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:52:04 28 4
gpt4 key购买 nike

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通常开始她 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, 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,您将无法将任何代码上传到 arduino。或 -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"]

最佳答案

有消息了...

作为 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,您将无法将任何代码上传到 arduino。或 -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"]

关于docker - 在 docker 中运行 GUI(没有 ssh,没有 VNC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34017038/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com