docker(3) -- 圖形界面

1. 前言

在wsl(8) – 圖形界面文章中介紹了wsl2默認是支持圖形界面的,現在我們嘗試下在docker中運行gui程序試試看。

2. x11-apps

  1. 啟動一個docker,安裝一些gui小程序,然后運行,發現會失敗。ubuntu_base詳見文章wsl(6) – 安裝docker。
# ubuntu_base是我基于ubuntu編譯的一個鏡像
$ docker run -it ubuntu_base
# 此處進入容器,更新包緩存
xflm@92d001fc657f:~$ sudo apt update
# 安裝幾個x11小程序
xflm@92d001fc657f:~$ sudo apt install x11-apps
# 運行一個gui程序
xflm@92d001fc657f:~$ xeyes
Error: Can't open display:
# 查看環境變量DISPLAY為空,表示沒有定義
xflm@92d001fc657f:~$ echo $DISPLAY
  1. wsl中的/tmp/.X11-unix/X0映射到docker中,然后設置docker的DISPLAY環境變量。docker_path詳見文章docker(2) – 啟動后修改目錄和網絡。
# 退出容器,回到wsl中,使用docker_path腳本向docker中添加文件
$ docker_path 92d001fc657f /tmp/.X11-unix/X0:/tmp/.X11-unix/X0
# 重新啟動容器
$ docker start -i 92d001fc657f 
# 進入容器,可以看到文件添加成功
xflm@92d001fc657f:~$ ll /tmp/.X11-unix/X0
srwxrwxrwx 1 ubuntu ubuntu 0 Apr 27 15:03 /tmp/.X11-unix/X0
# 設置DISPLAY環境變量
xflm@92d001fc657f:~$ export DISPLAY=:0
# 運行gui和層序,可以正常顯示
xflm@92d001fc657f:~$ xeyes

3. 啟動參數

由上可知,docker可以使用宿主機wsl的xserver進行圖像顯示,但是需要將宿主機的unix socket映射到docker中,因此我們可以在啟動docker時就映射好。

# -it 使用當前終端交互的方式運行容器
# -e 用于追加環境變量
# -v 用于掛載宿主中的文件到docker中
# 容器關閉后,重啟容器,環境變量DISPLAY和掛載的X0文件仍將存在
$ docker run -it -e DISPLAY=:0 -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 ubuntu_base

上一篇:docker(2) – 啟動后修改目錄和網絡
下一篇:docker(3) – 圖形界面
目錄:全部文章合集

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903244.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker容器跑定時任務腳本

最近搞了一個Docker容器跑腳本,想設置一個定時任務,每天8點運行一次,結果死活不成功。排查了一天,有一點當局者迷了,明明時間是對的,明明時區是對的,定時任務也是啟動的,它就是不執行…

【Linux】什么是完全限定域名

FQDN 是 “完全限定域名” (Fully Qualified Domain Name) 的縮寫。 FQDN 是一個互聯網上特定計算機或主機的完整且唯一的域名。它詳細說明了該主機在域名系統 (DNS) 層級結構中的確切位置。 一個 FQDN 通常由以下幾個部分組成,從左到右依次是: 主機名…

小結:BFD

*BFD(雙向轉發檢測,Bidirectional Forwarding Detection)是一種快速、輕量級的故障檢測機制,用于檢測網絡中兩點之間的連通性。它廣泛應用于各種場景 1. 檢測 IP 鏈路 應用場景: BFD 用于檢測兩臺設備之間的 IP 層連…

配置Spark歷史服務器,輕松查看任務記錄

在大數據處理中,Spark是一個強大的分布式計算框架。但當Spark服務重啟后,之前的運行記錄就會消失,給我們排查問題和分析任務執行情況帶來不便。這時,配置Spark歷史服務器就顯得尤為重要,它能幫助我們保存和查看歷史任務…

(六)RestAPI 毛子(外部導入打卡/游標分頁/Refit/Http resilience/批量提交/Quartz后臺任務/Hateoas Driven)

文章目錄 項目地址一、外部導入打卡功能1.1 創建實體1. Entry實體2. EntryImport實體3. 添加數據庫配置4. 創建表 1.2 創建DTOs1.3 創建GetEnties Controller 二、游標分頁2.1 創建所需要的DTOs1. 創建游標分頁的請求參數2. 創建CollectionResponse3. 添加游標編碼和解碼的DTO …

Node.js CSRF 保護指南:示例及啟用方法

解釋 CSRF 跨站請求偽造 (CSRF/XSRF) 是一種利用用戶權限劫持會話的攻擊。這種攻擊策略允許攻擊者通過誘騙用戶以攻擊者的名義提交惡意請求,從而繞過我們的安全措施。 CSRF 攻擊之所以可能發生,是因為兩個原因。首先,CSRF 攻擊利用了用戶無法辨別看似合法的 HTML 元素是否…

Flink介紹——實時計算核心論文之Dataflow論文總結

數據流處理的演變與 Dataflow 模型的革新 在大數據處理領域,流式數據處理系統的發展歷程充滿了創新與變革。從早期的 S4 到 Storm,再到 MillWheel,每一個系統都以其獨特的方式推動了技術的進步。S4 以其無中心架構和 PE(Processi…

Arduino 入門學習筆記(五):KEY實驗

Arduino 入門學習筆記(五):KEY實驗 開發板:正點原子ESP32S3 例程源碼在文章頂部可免費下載(審核中…) 1. GPIO 輸入功能使用 1.1 GPIO 輸入模式介紹 在上一文章中提及到 pinMode 函數, 要對…

Centos9安裝docker

1. 卸載docker 查看是否安裝了docker yum list | grep docker卸載老版本docker,拷貝自官網 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine卸載新版本…

Pgvector+R2R搭建RAG知識庫

背景 R2R是一個采用Python編寫的開源AI RAG框架項目,與PostgreSQL技術棧集成度高,運行需求資源少(主要是本人的Macbook air m1內存只有8G)的特點,對部署本地私有化化AI RAG應用友好。 Resource Recommendations Whe…

go中redis使用的簡單介紹

目錄 一、Redis 簡介 二、Go中Redis的使用 1. 安裝Go Redis包 2. 單機模式 連接示例 3. 哨兵模式 依賴 連接示例 三、Redis集群 1. 集群模式 集群部署 部署結構 使用redis-cli創建集群 連接示例 四、常用數據結構與操作 1. 字符串(String&#xff0…

北京工業大學25計專上岸經驗分享

1.個人情況介紹 本科就讀于河北雙非,專業為計算機科學與技術,四級三次498,六級兩次460,拿過幾次校級獎學金,競賽經歷有藍橋杯國三、數學競賽省二。本科成績排名靠前,保研保7排8,遺憾選擇考研繼…

在 Ubuntu 24.04 系統上安裝和管理 Nginx

1、安裝Nginx 在Ubuntu 24.04系統上安裝Nginx,可以按照下面的步驟進行: 1.1、 更新系統軟件包列表 在安裝新軟件之前,需要先更新系統的軟件包列表,確保獲取到最新的軟件包信息。打開終端,執行以下命令: …

HarmonyOS4+NEXT星河版入門與項目實戰(26)-----版本控制與代碼托管

引言 隨著移動應用開發技術的不斷進步,華為推出的鴻蒙操作系統(HarmonyOS)以及其配套的集成開發環境DevEco Studio逐漸成為開發者關注的焦點。對于新手開發者來說,掌握版本控制和代碼托管不僅是提高工作效率的關鍵,也是團隊協作的重要基礎。本文將介紹如何在使用DevEco S…

利用Arcgis自己繪制shp文件

1.選擇自己想要創建的shp文件的位置 我是直接創建在連接文件夾中 2.右鍵-新建-shp 3.設置名稱、要素類型、空間參考 4、點擊創建要素 5、右側選擇圖層、創建面 6、開始繪制,雙擊任意位置結束繪制 之后可以改一下shp文件的名字

【C/C++】深入理解指針(六)

文章目錄 深入理解指針(六)1.sizeof和strlen的對比1.1 sizeof1.2 strlen1.3 sizeof和strlen的對? 2.數組和指針筆試題解析2.1 ?維數組2.2 字符數組代碼1:代碼2:代碼3:代碼4:代碼5:代碼6: 2.3 ?維數組 3.…

探索大語言模型(LLM):語言模型從海量文本中無師自通

文章目錄 引言:當語言模型學會“自己教自己”一、自監督學習:從“無標簽”中挖掘“有監督”信號二、語言模型的自監督訓練范式:兩大經典路徑1. 掩碼語言模型(Masked Language Modeling, MLM)——以BERT為例2. 自回歸語…

2025.5.4機器學習筆記:PINN文獻閱讀

2025.5.4周報 文獻閱讀題目信息摘要創新點網絡架構實驗結論不足以及展望 文獻閱讀 題目信息 題目: Physics-Informed Neural Network Approach for Solving the One-Dimensional Unsteady Shallow-Water Equations in Riverine Systems期刊: Journal o…

Unity Post Processing 小記 【使用泛光實現燈光亮度效果】

一、前言 本篇適用于Unity 2018 - 2019及以上版本,以默認渲染管線為例。文章內容源于個人研究嘗試與網絡資料收集,可能存在不準確之處。初衷是因新版本制作時老的Bloom插件失效,經研究后分享開啟Bloom效果的方法。若在項目中使用Post Proces…

牟乃夏《ArcGIS Engine地理信息系統開發教程》學習筆記3-地圖基本操作與實戰案例

目錄 一、開發環境與框架搭建 二、地圖數據加載與文檔管理 1. 加載地圖文檔(MXD) 2. 動態添加數據源 三、地圖瀏覽與交互操作 1. 基礎導航功能 2. 書簽管理 3. 量測功能 四、要素選擇與屬性查詢 1. 屬性查詢 2. 空間查詢 五、視圖同步與鷹眼…