Docker 运行 桌面环境

Docker run desktop environment

问题最清楚了,
如何在 Docker 远程 容器中启动完整的桌面环境(KDE、XFCE、Gnome 无关紧要)。

我在网上搜索 there are 相关主题的问题,但不一样,它们都是关于如何 运行 GUI application 不是完整的桌面。

我发现了什么:

但实际上我被困在这里,总是遇到任何错误:

... (EE) Invalid screen configuration 1024x768 for -screen 0
... Cannot open /dev/tty0 (No such file or directory)

您能否提供一些 Docker 文件行以达到目标?

x11docker allows to run desktop environments as well as single GUI applications in docker.

Could you give some Dockerfile lines in order reach the goal?

Example desktop images on docker hub.

x11docker 做了很多设置来保持容器隔离,并提供了一些额外的选项,如硬件加速或 pulseaudio 声音。示例:

x11docker --desktop x11docker/lxde

x11docker也支持network setups with SSH, VNC and HTML5

使用 xpra 设置 SSH 的示例:

read Xenv < <(x11docker --xdummy --display=30 x11docker/lxde pcmanfm)
echo $Xenv && export $Xenv
# replace "start" with "start-desktop" to forward a desktop environment
xpra start :30 --use-display --start-via-proxy=no

从客户端系统连接

xpra attach ssh:HOSTNAME:30  # replace HOSTNAME with IP or host name of ssh server

没有 x11docker:

使用 Xephyr 作为主机上的嵌套 X 服务器的一个非常简短的设置是:

Xephyr :1
docker run -v /tmp/.X11-unix/X1:/tmp/.X11-unix/X1:rw \
           -e DISPLAY=:1 \
           x11docker/xfce

带有 Xfce 桌面的简短 Dockerfile:

FROM debian:stretch
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends xfce4 dbus-x11
CMD startxfce4

那是我一直在寻找的 桌面 的最简单形式 Docker:

FROM ubuntu
RUN apt-get update
RUN apt-get install xfce4 -y
RUN apt-get install xfce4-goodies -y
RUN apt-get purge -y pm-utils xscreensaver*
RUN apt-get install wget -y

EXPOSE 5901

RUN wget -qO- https://dl.bintray.com/tigervnc/stable/tigervnc-1.8.0.x86_64.tar.gz | tar xz --strip 1 -C /
RUN mkdir ~/.vnc
RUN echo "123456" | vncpasswd -f >> ~/.vnc/passwd
RUN chmod 600 ~/.vnc/passwd


CMD ["/usr/bin/vncserver", "-fg"]

不幸的是,我无法用 x11vncxvfb 解决问题。但是 TigerVNC 结果好多了。

此示例使用 xfce gui 和 运行 vncserver 以及密码 123456 生成容器。 不需要手动覆盖~/.vnc/xstartup因为TigerVNC默认启动X服务器!

至运行服务器:

sudo docker run --rm -dti -p 5901:5901 3ab3e0e7cb

vncviewer 连接:

vncviewer -AutoSelect 0 -QualityLevel 9 -CompressLevel 0 192.168.1.100:5901

您也不必关心屏幕分辨率,因为默认情况下它会调整大小以适合您的屏幕:

你可能还会遇到issue with ipc_channel_posix (chrome and other browsers will not work properly) to eliminate this run container with memory sharing

docker run -d --shm-size=2g --privileged -p 5901:5901 image-name