答案1
我不能对性能说什么,但在研究这个问题时,我遇到了这个问题与解答,标题为:你可以在 docker 中运行 GUI 应用程序吗?显示了实现此目的的 3 种方法。
通过 VNC 运行 AppX
此方法显示使用以下 Dockerfile:
# Firefox over VNC # # VERSION 0.1 # DOCKER-VERSION 0.2 from ubuntu:12.04 # make sure the package repository is up to date run echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list run apt-get update # Install vnc, xvfb in order to create a 'fake' display and firefox run apt-get install -y x11vnc xvfb firefox run mkdir /.vnc # Setup a password run x11vnc -storepasswd 1234 ~/.vnc/passwd # Autostart firefox (might not be the best way to do it, but it does the trick) run bash -c 'echo "firefox" >> /.bashrc'
然后像这样运行 Docker 实例:
$ docker run -p 5900 creack/firefox-vnc x11vnc -forever -usepw -create
使用 Docker + 子用户
使用 Subuser + Docker,您可以直接启动 Docker VM,其中仅包含单个应用程序,从而授予它们从物理主机对特定文件夹的狭窄访问权限。
Subuser 旨在易于安装,并且其本身在技术上并不重要。它只是 docker 的一个包装,仅此而已。
子用户启动 docker 容器,并在主机和子容器之间共享卷。就这样。
这是一个显示 Subuser 实际操作的视频。
通过 SSH 运行 X11
最后一项技术展示了如何设置运行 X11 + SSH 服务的 Docker 实例。然后,此设置允许任何 X11 应用程序通过 SSH 隧道传输。
ssh 用于转发 X11 并为您提供 docker 容器和本地计算机之间的加密数据通信。
然后,此方法继续在本地设置 Xpra + Xephyr。
X普拉+赛菲尔允许显示容器内运行的应用程序,例如 Firefox、LibreOffice、xterm 等,并具有恢复会话功能。因此,您可以在任何地方打开桌面,而不会丢失应用程序的状态,即使连接断开也是如此。
Xpra 还使用一种自定义协议,该协议具有自调整功能并且对延迟相对不敏感,因此可以在比标准 X 更差的链路上使用。
应用程序可以是无根的,因此客户端计算机可以管理显示的窗口。