在Docker容器中執行GUI圖形應用的開源專案
如果我們想在 Docker 容器中執行桌面 GUI 應用程式以將它們用作更大系統中的元件怎麼辦?例如,如果我們在 Docker 中執行 Firefox,我們可以在容器之間明確分離瀏覽器狀態。
假設我們在 macOS 或其他 Unix/Linux 系統上安裝了 Docker。我們如何在 Docker 容器中執行 Firefox?作為第一次嘗試,讓我們考慮以下 Dockerfile:
FROM ubuntu:latest RUN apt-get update && apt-get install -y firefox x11vnc xvfb RUN echo "exec firefox" > ~/.xinitrc && chmod +x ~/.xinitrc CMD ["x11vnc", "-create", "-noxrecord", "-noxfixes", "-noxdamage", "-forever", "-passwd", "trustno1"] |
我們使用ubuntu基礎映象並安裝 Firefox 有兩個額外的東西:
- x11vnc - 用於遠端訪問基於 X11 的桌面環境的 VNC 伺服器。將其視為窮人 TeamViewer。
- xvfb - X11 伺服器的一個版本,它不需要任何實際的顯示硬體,而是將影片渲染到 RAM 中。
我們將 X11 配置為在啟動時執行 Firefox,並使用允許在客戶端與 macOS 互操作的確切引數啟動 x11vnc。
構建和執行這個容器相當簡單:
$ docker build -t firefox-test-1 . $ docker run -p 5900:5900 --rm firefox-test-1 |
讓我們也來看看一些致力於在Docker容器內執行GUI應用的開源專案:
x11docker
x11docker是一個在Linux主機系統中執行GUI應用程式的解決方案,它在某些方面更先進(GPU訪問、外圍裝置支援、安全改進),但受限於現有的Linux桌面環境,不能正確支援Linux以外的作業系統。
要透過x11docker啟動GUI應用程式,就必須為該應用程式構建或拉動Docker容器,並以與x11docker相容的方式編寫(Github和Docker Hub上有一些例子),然後透過x11docker CLI工具啟動它。
Kasm Workspaces
Kasm Workspaces是一個開源平臺,它將這一想法進一步推進,甚至提供了一個SaaS版本,由他們為你託管。
像x11docker一樣,它為Firefox(和其他瀏覽器)、Slack、Discord、VS Code等常見應用提供了一堆預先開發的Docker映象。整個Linux桌面環境可以透過管理介面上的一鍵安裝來實現。與前面的例子一樣,遠端桌面也是透過網路瀏覽器來實現的。然而,Kasm Workspaces使用的是KasmVNC--一個由同一家公司開發的VNC解決方案。
docker-android
到目前為止,我們談到了在容器內執行Linux GUI應用程式。但是,執行Android應用程式呢?事實證明,可以在Docker容器內執行整個安卓模擬器,並透過novnc介面,使用名為docker-android的解決方案,將其暴露出來。儘管它警告說不完全支援巢狀式虛擬化,但我還是能夠透過以下命令執行它。
$ docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -e DEVICE="Samsung Galaxy S6" --name android-container budtmo/docker-android-x86-8.1 |
相關文章
- 如何在Docker容器中執行GUI程式DockerGUI
- 在Docker容器中執行ASP.NET MVC應用程式DockerASP.NETMVC
- Docker容器中執行.Net Core應用程式Docker
- Docker命令-docker exec-在執行的容器中執行命令Docker
- Docker在PHP專案開發環境中的應用DockerPHP開發環境
- 在Docker中,可以在一個容器中同時執行多個應用程序嗎?Docker
- 如何把 Java Web 應用放在 docker 容器中執行JavaWebDocker
- Docker容器雲在金融行業的應用Docker行業
- 在Docker中,如何停止所有正在執行的容器?Docker
- 在Linux上以容器方式執行安卓系統的開源專案:WaydroidLinux安卓
- Docker入門系列之一:在一個Docker容器裡執行指定的web應用DockerWeb
- Docker中Mysql容器內如何執行SQL檔案?DockerMySql
- 在容器中執行Java應用程式的提示和工具 - Even HoltheJava
- 在OSX和Windows版本Docker上執行GUI程式WindowsDockerGUI
- 用golang官方Docker映象執行專案GolangDocker
- 在docker容器中部署Web專案DockerWeb
- 在OpenShift中執行容器
- 顛覆Docker?最新Kata開源容器專案引熱議Docker
- Docker 1.11 採納了開源容器專案(OCP)元件Docker元件
- 軟體專案管理的研究及在專案開發中的應用專案管理
- webpack在PC專案中的應用Web
- 在 OpenFunction 中執行 Serverless 應用FunctionServer
- 在CentOS中使用docker執行nodejs應用CentOSDockerNodeJS
- 用Nim語言開發windows GUI圖形介面程式WindowsGUI
- 瘋狂的Web應用開源專案Web
- 不借助 Docker Desktop 在Mac上開發容器應用DockerMac
- 數學在計算機圖形學中的應用計算機
- Kubernetes 多叢集在開源專案 KubeSphere 的應用
- 如何優雅地恢復執行中的容器應用
- docker Portainer 作為容器的 GUI 管理DockerAIGUI
- 開源軟體在地圖資料處理中的應用地圖
- 在Linux中,如何進行容器技術的應用?Linux
- JWT在專案中的簡單應用JWT
- 【zz】WBS在專案控制中的應用
- UI2 在專案中的應用UI
- Docker容器中執行.net framework控制檯程式DockerFramework
- 在Docker容器內執行 vi 編輯器 | BaeldungDocker
- 使用Systemd執行Docker容器Docker