LXC 中的 X 和 xdotool 代替 KVM

LXC 中的 X 和 xdotool 代替 KVM

到目前为止我正在使用各种x自动化/xdo工具KVM 虚拟机(linux guest)中的脚本,以便让他们完成他们的工作并让我不间断地工作。我使用的是 VirtIO 磁盘,但大多数时候来宾的性能仍然很慢。

我可以在 LXC 容器中做同样的事情吗,例如使用泊坞窗

答案1

我不能对性能说什么,但在研究这个问题时,我遇到了这个问题与解答,标题为:你可以在 docker 中运行 GUI 应用程序吗?显示了实现此目的的 3 种方法。

  1. 通过 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
    
  2. 使用 Docker + 子用户

    使用 Subuser + Docker,您可以直接启动 Docker VM,其中仅包含单个应用程序,从而授予它们从物理主机对特定文件夹的狭窄访问权限。

    Subuser 旨在易于安装,并且其本身在技术上并不重要。它只是 docker 的一个包装,仅此而已。

    子用户启动 docker 容器,并在主机和子容器之间共享卷。就这样。

    这是一个显示 Subuser 实际操作的视频

  3. 通过 SSH 运行 X11

    最后一项技术展示了如何设置运行 X11 + SSH 服务的 Docker 实例。然后,此设置允许任何 X11 应用程序通过 SSH 隧道传输。

    ssh 用于转发 X11 并为您提供 docker 容器和本地计算机之间的加密数据通信。

    然后,此方法继续在本地设置 Xpra + Xephyr。

    X普拉+赛菲尔允许显示容器内运行的应用程序,例如 Firefox、LibreOffice、xterm 等,并具有恢复会话功能。因此,您可以在任何地方打开桌面,而不会丢失应用程序的状态,即使连接断开也是如此。

    Xpra 还使用一种自定义协议,该协议具有自调整功能并且对延迟相对不敏感,因此可以在比标准 X 更差的链路上使用。

    应用程序可以是无根的,因此客户端计算机可以管理显示的窗口。

    来源:DOCKER DESKTOP:通过 SSH 在 Docker 容器内运行的桌面

参考

相关内容