Docker运行桌面环境

时间:2017-12-23 20:35:22

标签: docker vnc xvfb

问题最清楚,
如何在Docker 远程容器中启动完整的桌面环境(KDE,XFCE,Gnome并不重要)。

我正在挖掘互联网和there are lots关于相关主题的问题,但不一样,他们都是关于如何运行GUI 应用程序不是完整的桌面。

我发现了什么:

  • 必要的运行Xvfb
  • 以某种方式运行,例如在FrameBuffer中的Xfce
  • 允许x11vnc共享正在运行的X环境

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

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

你能否给出一些Dockerfile行以达到目标?

2 个答案:

答案 0 :(得分:3)

这就是我在寻找,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"]

不幸的是,我无法用 x11vnc xvfb 来解决这个问题。但是TigerVNC变得更好了。

此示例使用xfce gui生成容器,并使用123456密码运行 vncserver 无需手动覆盖〜/ .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

此外,您无关心屏幕分辨率,因为默认情况下它会调整大小以适合您的屏幕: F8 vncviewer menu

您可能还会遇到issue with ipc_channel_posix(Chrome和其他浏览器无法正常工作)以使用memory sharing消除此运行容器:

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

答案 1 :(得分:2)

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

  

你能否给出一些Dockerfile行以达到目标?

Example desktop images on docker hub

x11docker进行了大量设置以保持容器隔离,并提供一些额外的选项,如硬件加速或脉冲音频声音。例如:

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
相关问题