Docker运行桌面环境

Iva*_*aev 5 vnc xvfb docker

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

我是挖在互联网上,还有 许多关于相关主题的问题,但不一样的,他们所有关于如何运行GUI 应用程序不完整的桌面。

我发现:

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

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

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

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

Iva*_*aev 7

这就是我一直在寻找的,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"]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法解决x11vncxvfb。但是TigerVNC结果要好得多。

此示例使用 xfce gui 生成容器并使用 123456 密码运行vncserver。有没有必要重写〜/ .vnc / xstartup中手动因为TigerVNC默认启动X服务器!

运行服务器:

sudo docker run --rm -dti -p 5901:5901 3ab3e0e7cb
Run Code Online (Sandbox Code Playgroud)

要与vncviewer连接:

vncviewer -AutoSelect 0 -QualityLevel 9 -CompressLevel 0 192.168.1.100:5901
Run Code Online (Sandbox Code Playgroud)

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

您可能还会遇到ipc_channel_posix 问题(chrome 和其他浏览器将无法正常工作)以消除此具有内存共享的运行容器:

docker run -d --shm-size=2g --privileged -p 5901:5901 image-name
Run Code Online (Sandbox Code Playgroud)