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

WSL2 docker GUI 界面

在 WSL2 docker 中运行GUI界面。
具体流程和远程显示Ubuntu界面类似,链接, 更简单一点, 少了 ssh 的部分。

  1. 安装好wsl2 和 docker

wsl2 运行GUI程序,windows 会默认弹出窗口。 可以安装 gedit 测试一下

  1. windows 下载并运行 Xlaunch.

    • 运行
  2. docker 环境中设置 DISPLAY 变量。

    • ros 为例, 下载并运行,进入 docker 镜像。
    • echo 'export DISPLAY={your windows WSL2 IP}:0.0' >> ~/.bashrc
    • 运行 rviz, 即可正常显示 GUI
      在这里插入图片描述

说明

  1. Windows IP:在这里插入图片描述

  2. 可以测试在docker中能不能ping通主机。

    • 安装 ping。apt install iputils-ping
    • 关闭 Windows 防火墙
    • 也可以用windows 主机名代替 IP。
      在这里插入图片描述
      可以使用 DISPLAY=DESKTOP-8SPQ0E8:0.0 来表示, 前提是ping DESKTOP-8SPQ0E8可以ping通。
  3. 新建 docker container
    docker run -it --name ros-noetic ros:noetic-robot-focal

参考:

  1. wsl ros docker, https://blog.csdn.net/enwuone/article/details/121412077
  2. https://jackkawell.wordpress.com/2019/09/11/setting-up-ros-in-windows-through-docker/

Update: WSL2 Docker VNC 连接图形界面

  1. 下载并运行镜像, 以Ubuntu20.04为例.

    # 下载
    docker pull ubuntu:20.04
    # 创建 container
    docker run --gpus all --name ubuntu20_vnc -p 5090:5090 -p 6001:6001 --network hosts ubuntu:20.04
    
    • 只使用 程序GUI, 只需要 container 可以 ping 通 主机IP即可, 默认的网络链接就可以(默认的是bridge), docker 网络链接 介绍;

    • 使用VNC服务, 需要 container 和 主机 双向 ping 通. 采用host, 保证主机和container在同一个局域网下.

      默认 bridge的连接在这里插入图片描述
      host的连接
      在这里插入图片描述

  2. 安装 vncserver

    • 安装桌面环境

      apt-get update
      apt-get install xorg openbox vim
      
    • 安装 xfce4 桌面环境

      apt install xfce4 xfce4-goodies xfce4-terminal 
      update-alternatives --config x-terminal-emulator  # 配置终端
      
    • 安装 tightvncserver

      apt install tightvncserver
      
  3. 配置VNC

    • 运行 vncserver , 创建链接密码
      在这里插入图片描述

    • 关闭刚刚创建的 VNCserver:
      vncserver -kill :1

    • 修改xstartup文件 (vim ~/.vnc/xstartup), 添加下列内容

      #!/bin/sh
      xrdb $HOME/.Xresources
      startxfce4 &
      
    • 为了保证VNC服务正常启动,需要配置xstartup为可执行文件。

      chmod +x ~/.vnc/xstartup
      
    • 重新启动 vncserver
      在这里插入图片描述

  4. 主机启动 VNC view 链接, 默认端口 5901

参考链接 1

参考链接2

相关文章:

  • Python与ArcGIS系列(十三)UpdateCursor方法
  • webWorker解决单线程中的一些小问题和性能优化
  • 【C++】string类的接口综合运用
  • 第四阶|自在行草 暄桐教室,林曦书法 从书法之美到生活之美
  • PHP TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据
  • 关于前端的学习思考-父子盒子溢出问题
  • 视频字幕处理+AI绘画,Runway 全功能超详细使用教程(4)
  • Pandas进阶:文本处理
  • 王者荣耀java版
  • git rebase冲突说明(base\remote\local概念说明)
  • uni-app+vue3 封装全局函数(详细完整的方法)
  • SQL中left join、right join、inner join等的区别
  • 快速了解ChatGPT(大语言模型)
  • CentOS部署python Flask项目
  • 一文带你了解网络安全简史
  • 网络安全技术
  • AES加密技术:原理与应用
  • 使用策略模式彻底消除if-else
  • 记一次简单的PHP反序列化字符串溢出
  • gitlab高级功能之CI/CD组件 - 实践(二)
  • 上海市国防动员办公室副主任吴斌接受审查调查
  • 《克莱默夫妇》导演罗伯特·本顿去世,终年92岁
  • 人民日报评外卖平台被约谈:摒弃恶性竞争,实现行业健康发展
  • 外国游客“在华扫货”热:“带空箱子到中国!”
  • 美国三大指数全线高开:纳指涨逾4%,大型科技股、中概股大涨
  • 朝着解决问题的正确方向迈进——中美经贸高层会谈牵动世界目光