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

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.xdnf.cn/news/171325.html

相关文章:

  • ReACT Agent 实战
  • 面试:结构体默认是对齐的嘛?如何禁止对齐?
  • 遥控器信号传输与信号灯指示要点!
  • 解决新搭建的centos虚拟器,yum下载不了的问题
  • 【音视频】SDL窗口显示
  • DIFY教程第一集:安装Dify配置环境
  • 广度优先搜索(BFS)算法详解
  • 23种设计模式-行为型模式之命令模式(Java版本)
  • 鸿蒙系统应用开发全栈指南
  • HarmonyOS Next~鸿蒙系统流畅性技术解析:预加载与原生架构的协同进化
  • 神经编译革命:如何用脑机接口直接编程量子计算机?
  • 用Function Calling让GPT查询数据库(含示例)
  • 【Git】初始Git及入门命令行
  • 03.使用spring-ai玩转MCP
  • IdeaVim 配置与使用指南
  • 【Part 2安卓原生360°VR播放器开发实战】第二节|基于等距圆柱投影方式实现全景视频渲染
  • 位置差在坐标系间的相互转换
  • C++类和对象(上)
  • Spark SQL开发实战:从IDEA环境搭建到UDF/UDAF自定义函数实现
  • 《TVM模式匹配实战:从DFPatternNode到DFPattern的高级用法》
  • OceanBase数据库-学习笔记2-C#/C++程序如何访问
  • C++如何使用调试器(如GDB、LLDB)进行程序调试保姆级教程(2万字长文)
  • 使用 Autofac 实现依赖注入
  • 嵌入式软件--stm32 DAY 4 中断系统
  • Linux日志处理命令多管道实战应用
  • Python爬虫实战:获取网yi云音乐飙升榜的歌曲数据并作分析,为歌单推荐做参考
  • Spark SQL核心概念与编程实战:从DataFrame到DataSet的结构化数据处理
  • 《一键式江湖:Docker Compose中间件部署108式》开篇:告别“配置地狱”,从此笑傲云原生武林!》
  • python+adafruit_pca9685 测试舵机存储当前角度
  • 知识体系_数据量纲化处理方式