LXC 中的 X 和 xdotool 而不是 KVM
到目前為止,我在 KVM 虛擬機(Linux 來賓)中使用各種xautomation / xdotool腳本,以便讓它們完成工作並讓我不間斷地工作。我正在使用 VirtIO 磁碟,但大多數時候來賓的性能仍然很慢。
我可以在 LXC 容器中做同樣的事情,例如使用docker嗎?
我不能對性能說什麼,但在研究這個時,我遇到了這個 SO Q&A,標題為:你能在 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,從而授予它們從物理主機對特定文件夾的有限訪問權限。
子使用者意味著易於安裝,並且其本身在技術上無關緊要。它只是 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 上的桌面
參考