到目前为止,我正在KVM虚拟机(Linux guest虚拟机)中使用各种xautomation / xdotool脚本,以使它们能够正常工作。我使用的是VirtIO磁盘,但是大多数情况下客户机的性能仍然很慢。
我可以在LXC容器中做同样的事情,例如使用docker吗?
我不能对性能说什么,但是在研究时遇到了这样一个名为“您可以在docker中运行GUI应用程序”的SO Q&A吗?显示了完成此操作的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。
Xpra + Xephyr允许显示具有恢复会话功能的容器内部运行的应用程序,例如Firefox,LibreOffice,xterm等。因此,即使连接断开,您也可以在任何位置打开桌面而不会丢失应用程序的状态。
Xpra还使用了一种自调整协议,该协议具有自我调整能力,并且对时延不敏感,因此可以在比标准X更差的链路上使用。
这些应用程序可以是无根的,因此客户端计算机可以管理显示的窗口。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句