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


update: 不同局域网下的开发环境搭建 2024/1/17

场景描述: 自己有一台电脑A在一个局域网环境下。一台移动办公的电脑B,不停切换网络环境,和电脑A不在一个局域网环境。我现在需要电脑B远程连接电脑A,进行远程开发。由于开发过程需要图形界面的交互,所以我需要:

  1. 稳定的网络连接状态
  2. 较大的带宽,支持图形界面连接。
  3. 方便搭建,不要太麻烦

经过一段时间的尝试和体验,最终找到了一个目前非常满意的方案。:)

zerotier 内网穿透

  • 类似的 国内代替有 花生壳。 这种方法配置起来也比较简单,就是构建了一个虚拟的局域网,然后可以通过ssh 直接输入局域网IP连接。
  • 具体操作网上介绍非常多,就不细说了。由于自己现在所处的环境是跨运营商的,国内+香港的环境,自己也测试了几款内网穿透的app,总体来说,偶尔ssh连接,vscode写写代码还是ok的。但是网速非常的慢,涉及到图片传输基本上都不行了。更不要说上面图形界面了。
  • 可能是由于自己网络环境的问题,ssh 不稳定,总是断。

购买内网穿透服务

  • 在某宝上,可以直接购买内网穿透的服务,一般是卖家会给一个网址和端口号,相当于通过它们的中继服务器,将两台电脑连接。经过测试,网速和带宽都能够满足自己需求,价格还很便宜【不做推荐,大家自行搜索】。

  • 购买到服务之后,在电脑A,按照卖家给的方式设置好之后,就可以和之前的 IP 连接ssh很想了。

    ssh ssh -p ip_port usr@xxx.xx
    

    ip_portxxx.xx 都是卖家会提供给你的。

  • 现在,两台电脑A和电脑B,有了具体的端口连接(xxxx.xx:ip_port), 并且这个连接是通过中继服务器设置的。我们接下来需要做

      1. 测试连接的性能
      1. 图形界面连接
  • 测试连接的性能

    • 两台电脑安装 iperf3
      sudo apt-get install iperf3
    • 通过 ssh 进行本地端口映射【省钱小trick :)】,测量 ssh 连接的质量
      电脑A:服务端,被连接的电脑
      iperf3 -s -p 8080     # 通过 8080 端口监听
      
      电脑B:客户端
      • 先使用ssh 连接,将本地端口8080 映射成服务端8080端口,这样做的目的就是本地(电脑B)从8080端口走的数据,会被转发到服务端(电脑A)的8080端口
      ssh -L 8080:localhost:8080 -p ip_port usr@xxxx.com  ## 通过ssh 进行本地端口和远程端口的绑定
      
      • 然后再本地运行 iperf3 的测试
      iperf3 -c localhost -p 8080
      
  • 图形界面连接
    windows 的 远程桌面连接 连接Ubuntu。 测试过向日葵,vnc,ssh,发现 windows 的 `远程桌面连接是做好的,基本上可以做到就和再本地开发一样,非常的厉害。 同样的网络条件下,ssh 转化GUI窗口就非常的卡。

    Windows远程桌面Ubuntu22.04(xrdp或向日葵)-Ubuntu系列02
    注意事项

    • 连接之前做好端口映射, xrdp 默认端口是3389。 具体方法就是创建一个ssh连接,把服务器端的 3389 端口连接到本地的一个端口(下面图片示例就是选择了3389),然后就可以直接连接了。
    • xrdp 连接黑屏 服务器端的电脑用户必须要注销(log out)
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值