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客户端中

相关推荐

  1. docker 容器内部UI映射host

    2024-07-15 21:00:03       20 阅读
  2. docker 容器 network host 模式启动

    2024-07-15 21:00:03       25 阅读
  3. 6.Docker端口映射容器互联

    2024-07-15 21:00:03       29 阅读
  4. 【Linux+Docker】修改Docker容器中的hosts文件

    2024-07-15 21:00:03       25 阅读
  5. Docker容器内容总结

    2024-07-15 21:00:03       24 阅读
  6. Docker 第八章 : Docker 容器端口映射

    2024-07-15 21:00:03       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 21:00:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 21:00:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 21:00:03       45 阅读
  4. Python语言-面向对象

    2024-07-15 21:00:03       55 阅读

热门阅读

  1. 2024 7.8~7.14 周报

    2024-07-15 21:00:03       15 阅读
  2. [C/C++入门][循环]14、计算2的幂(2的n次方)

    2024-07-15 21:00:03       17 阅读
  3. 云原生周刊:Score 成为 CNCF 沙箱项目|2024.7.15

    2024-07-15 21:00:03       22 阅读
  4. 数据分析——Python网络爬虫(四){爬虫库的使用}

    2024-07-15 21:00:03       15 阅读
  5. 数据分析_计划

    2024-07-15 21:00:03       20 阅读
  6. FPGA之术语

    2024-07-15 21:00:03       16 阅读
  7. [C++ 基础入门 - inline和 nullptr]

    2024-07-15 21:00:03       15 阅读
  8. STL常用容器及使用总结

    2024-07-15 21:00:03       19 阅读
  9. MiniCPM-V

    MiniCPM-V

    2024-07-15 21:00:03      18 阅读
  10. Mybatis

    Mybatis

    2024-07-15 21:00:03      17 阅读
  11. ORA-12518: TNS: 监听程序无法分发客户机连接

    2024-07-15 21:00:03       13 阅读
  12. 解决PyCharm配置错误:深入剖析与实战指南

    2024-07-15 21:00:03       19 阅读
  13. 关于VUE2在页面离开时,丢弃所有未完成的请求

    2024-07-15 21:00:03       16 阅读