在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容器中執行ASP.NET MVC應用程式DockerASP.NETMVC
- Docker容器中執行.Net Core應用程式Docker
- Docker命令-docker exec-在執行的容器中執行命令Docker
- 在Docker中,可以在一個容器中同時執行多個應用程序嗎?Docker
- 在Linux上以容器方式執行安卓系統的開源專案:WaydroidLinux安卓
- 在Docker中,如何停止所有正在執行的容器?Docker
- Docker入門系列之一:在一個Docker容器裡執行指定的web應用DockerWeb
- 在容器中執行Java應用程式的提示和工具 - Even HoltheJava
- Docker中Mysql容器內如何執行SQL檔案?DockerMySql
- 用golang官方Docker映象執行專案GolangDocker
- Kubernetes 多叢集在開源專案 KubeSphere 的應用
- SpringBoot 專案如何在tomcat容器中執行Spring BootTomcat
- 顛覆Docker?最新Kata開源容器專案引熱議Docker
- idea執行springboot開源專案GunsIdeaSpring Boot
- 不借助 Docker Desktop 在Mac上開發容器應用DockerMac
- 甘特圖在六西格瑪專案中的應用
- 在 OpenFunction 中執行 Serverless 應用FunctionServer
- 在Linux中,如何進行容器技術的應用?Linux
- SpringBoot專案在Eclipse/MyEclipse中執行Spring BootEclipse
- docker Portainer 作為容器的 GUI 管理DockerAIGUI
- 如何優雅地恢復執行中的容器應用
- UI2 在專案中的應用UI
- JWT在專案中的簡單應用JWT
- 開源軟體在地圖資料處理中的應用地圖
- 在Docker容器內執行 vi 編輯器 | BaeldungDocker
- Youki:用 Rust 編寫的更快Docker容器執行時RustDocker
- 在Docker中執行SpringBoot程式DockerSpring Boot
- 在專案裡快速執行史上最強開源大模型「Llama 3.1」大模型
- Docker實戰之執行專案Docker
- 使用docker執行CentOS容器DockerCentOS
- Android Studio在android Emulator中執行的專案黑屏Android
- Docker容器中執行.net framework控制檯程式DockerFramework
- Laravel 專案 使用 Windows docker 執行php 容器 及 mysql 容器時,連不起資料庫。LaravelWindowsDockerPHPMySql資料庫
- 應用容器引擎-DockerDocker
- PFMEA在專案風險管理中的應用
- 在 SAP 雲平臺上部署和執行 Docker 應用Docker
- Docker容器中應用程式的log輸出管理Docker
- 無快不破,在本地 docker 執行 IDEA 裡面的專案?DockerIdea