X11

LXC 中的 X 和 xdotool 而不是 KVM

  • June 9, 2014

到目前為止,我在 KVM 虛擬機(Linux 來賓)中使用各種xautomation / xdotool腳本,以便讓它們完成工作並讓我不間斷地工作。我正在使用 VirtIO 磁碟,但大多數時候來賓的性能仍然很慢。

我可以在 LXC 容器中做同樣的事情,例如使用docker嗎?

我不能對性能說什麼,但在研究這個時,我遇到了這個 SO Q&A,標題為:你能在 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
  1. 使用 Docker + 子使用者

使用 Subuser + Docker,您可以在其中僅使用單個應用程序直接啟動 Docker VM,從而授予它們從物理主機對特定文件夾的有限訪問權限。

子使用者意味著易於安裝,並且其本身在技術上無關緊要。它只是 docker 的包裝,僅此而已。

子使用者啟動 docker 容器,其卷在主機和子容器之間共享。就這樣。

這是一個展示 Subuser 的影片。 3. 通過 SSH 執行 X11

最後一種技術展示瞭如何設置一個執行 X11 + SSH 服務的 Docker 實例。然後,此設置允許通過 SSH 將任何 X11 應用程序傳輸出去。

ssh 用於轉發 X11 並為您提供 docker 容器和本地電腦之間的加密數據通信。

然後,此方法繼續在本地設置 Xpra + Xephyr。

Xpra + Xephyr允許顯示在容器內執行的應用程序,例如 Firefox、LibreOffice、xterm 等,具有恢復會話功能。因此,即使連接斷開,您也可以在任何地方打開桌面而不會失去應用程序的狀態。

Xpra 還使用了一種自定義協議,該協議可以自我調整併且對延遲相對不敏感,因此可以在比標準 X 更差的連結上使用。

應用程序可以是無根的,因此客戶端電腦管理顯示的視窗。

來源:DOCKER DESKTOP:在 Docker 容器內執行的 SSH 上的桌面

參考

引用自:https://unix.stackexchange.com/questions/134939