当前位置: 首页 > news >正文

docker 容器内部UI映射host

方法有很多, 目前我总计一个我自己尝试成功的方法,通过xpra。

Xpra可以看作是screentmux的图形版本,支持远程X11应用程序的显示和交互。

在远程服务器上,安装Xpra:

sudo apt-get install xpra

启动Xpra服务器会话:

xpra start :100

在本地机器上,安装并运行Xpra客户端,连接到远程服务器: 

xpra attach ssh:user@remote-server:100

这个进程会一直运行,shell keep住重新启动其他shell 

在远程服务器上,运行Docker容器命令,并设置DISPLAY环境变量为Xpra显示:

export DISPLAY=:100
xhost +local:root
docker run -it --rm \-e SDL_VIDEODRIVER=x11 \-e DISPLAY=$DISPLAY \--env='DISPLAY' \--gpus all \--ipc host \--privileged \--network host \-p 8080:8081 \-v /tmp/.X11-unix:/tmp/.X11-unix:rw \-v file_locations:/storage \-v /weights:/weights \openpcdet:cuda11 \xfce4-terminal --title=openPCDet

如果需要映射一个桌面, 则需要安装类似Xfce4这种基于X11开发的桌面ui,这里的实例仅仅针对内部的窗口映射到host. 

总结一下原理:
 

  • Xpra会话

    • 在远程服务器上启动一个Xpra会话,指定会话号,例如:100。Xpra会创建一个虚拟的X11显示,会话号用于标识这个会话。
  • 客户端连接

    • 在本地机器上使用Xpra客户端连接到远程服务器上的Xpra会话。这会将远程会话中的图形界面应用程序显示在本地机器上。
  • Docker容器配置

    • 在远程服务器上运行Docker容器时,通过设置环境变量DISPLAY:100,将Docker容器中的图形界面应用程序的显示输出到Xpra会话。
    • 使用xhost +local:root命令允许本地root用户访问X服务器,这样Docker容器(通常以root用户身份运行)就可以访问X11显示。
  • 数据流

    • Docker容器中的图形界面应用程序通过Xpra会话显示在远程服务器上。
    • Xpra会话将图形界面数据传输到本地机器上,显示在本地的Xpra客户端中

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • STM32智能工业自动化监控系统教程
  • 科普文:详解23种设计模式
  • 代码随想录——分割等和子集(Leetcode LCR 101)
  • 【STC89C51单片机】定时器/计数器的理解
  • Lianwei 安全周报|2024.07.15
  • LLM 构建Data Multi-Agents 赋能数据分析平台的实践之④:数据分析之三(数据展示)
  • Jenkins 安装、部署与配置
  • JVM:自动垃圾回收
  • flutter ios打包 xcode报错module ‘xxx‘ not found
  • Python爬虫入门篇学习记录
  • 使用Nginx实现高效负载均衡
  • 零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码
  • Guava LocalCache源码分析:LocalCache生成
  • 在组件中显示tuku的照片
  • 记录一次Android推流、录像踩坑过程
  • HashMap ConcurrentHashMap
  • JSONP原理
  • Mocha测试初探
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python_OOP
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vue 个人积累(使用工具,组件)
  • 模型微调
  • 前端技术周刊 2019-02-11 Serverless
  • 前端性能优化--懒加载和预加载
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 温故知新之javascript面向对象
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​Python 3 新特性:类型注解
  • ​补​充​经​纬​恒​润​一​面​
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #考研#计算机文化知识1(局域网及网络互联)
  • (poj1.2.1)1970(筛选法模拟)
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (五)c52学习之旅-静态数码管
  • (学习日记)2024.01.19
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)基于IDEA的JAVA基础1
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)母版页和相对路径
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET Core跨平台微服务学习资源
  • .NET 设计一套高性能的弱事件机制
  • .NET 通过系统影子账户实现权限维持
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .NET委托:一个关于C#的睡前故事
  • /boot 内存空间不够
  • [ C++ ] STL---string类的使用指南
  • [20180129]bash显示path环境变量.txt
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [BZOJ2208][Jsoi2010]连通数