Xpra Docker容器运行图形应用

通过 X持久化远程应用Xpra快速起步 结合 Xpra环境中文输入 可以在远程服务器上运行大型图形程序,使用轻量级桌面(例如 dwm - 动态窗口管理器 )来完成运维和开发工作。

不过,对于部署服务器应用和环境,显然是一个重复而单调的工作。既然 Docker Atlas 提供了我们统一的容器技术,那么使用容器来构建一个可以不断重复和迭代的运行环境,对于自己的日常工作是有很大帮助的。此外,我也想挑战一下无缝的迁移开发环境,制作镜像,实现分发构建不同的多个开发环境。

构思

Running Linux GUI applications in a Docker container using Xpra 是一个基于 JAremko / docker-x11-bridge 的实践文档:

优点

  • 通过 xpra 的 WEB 网关方式输出,这样无需安装任何客户端,仅仅使用浏览器就可以访问

  • 可以使用不同的发行版来构建容器,例如 Ubuntu LinuxAlpine Linux

缺点

  • 比RDP和原生X11应用要慢,并且稳定性差 (对网络延迟敏感)

  • 重定向声音可能比较难搞定

替代方案

在Linux桌面,可以使用原生X11服务器和window manager,可以使用 X11Docker 在容器中运行图形程序 和容器中的应用进行交互。如果是 macOS ,需要安装 XQuartz X11应用程序

参考