在 WSL2 docker
中运行GUI界面。
具体流程和远程显示Ubuntu界面类似,链接, 更简单一点, 少了 ssh 的部分。
- 安装好wsl2 和 docker
wsl2 运行GUI程序,windows 会默认弹出窗口。 可以安装
gedit
测试一下
-
windows 下载并运行
Xlaunch
. -
docker 环境中设置
DISPLAY
变量。- 以
ros
为例, 下载并运行,进入 docker 镜像。 echo 'export DISPLAY={your windows WSL2 IP}:0.0' >> ~/.bashrc
- 运行
rviz
, 即可正常显示 GUI
- 以
说明
-
Windows IP:
-
可以测试在docker中能不能ping通主机。
- 安装 ping。
apt install iputils-ping
- 关闭 Windows 防火墙
- 也可以用windows 主机名代替 IP。
可以使用DISPLAY=DESKTOP-8SPQ0E8:0.0
来表示, 前提是ping DESKTOP-8SPQ0E8
可以ping通。
- 安装 ping。
-
新建 docker container
docker run -it --name ros-noetic ros:noetic-robot-focal
参考:
- wsl ros docker, https://blog.csdn.net/enwuone/article/details/121412077
- https://jackkawell.wordpress.com/2019/09/11/setting-up-ros-in-windows-through-docker/
Update: WSL2 Docker VNC 连接图形界面
-
下载并运行镜像, 以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
的连接
-
-
安装
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
-
-
配置VNC
-
运行
vncserver
, 创建链接密码
-
关闭刚刚创建的 VNCserver:
vncserver -kill :1
-
修改xstartup文件 (
vim ~/.vnc/xstartup
), 添加下列内容#!/bin/sh xrdb $HOME/.Xresources startxfce4 &
-
为了保证VNC服务正常启动,需要配置xstartup为可执行文件。
chmod +x ~/.vnc/xstartup
-
重新启动
vncserver
-
-
主机启动 VNC view 链接, 默认端口 5901
update: 不同局域网下的开发环境搭建 2024/1/17
场景描述: 自己有一台电脑A在一个局域网环境下。一台移动办公的电脑B,不停切换网络环境,和电脑A不在一个局域网环境。我现在需要电脑B远程连接电脑A,进行远程开发。由于开发过程需要图形界面的交互,所以我需要:
- 稳定的网络连接状态
- 较大的带宽,支持图形界面连接。
- 方便搭建,不要太麻烦
经过一段时间的尝试和体验,最终找到了一个目前非常满意的方案。:)
zerotier 内网穿透
- 类似的 国内代替有 花生壳。 这种方法配置起来也比较简单,就是构建了一个虚拟的局域网,然后可以通过ssh 直接输入局域网IP连接。
- 具体操作网上介绍非常多,就不细说了。由于自己现在所处的环境是跨运营商的,国内+香港的环境,自己也测试了几款内网穿透的app,总体来说,偶尔ssh连接,vscode写写代码还是ok的。但是网速非常的慢,涉及到图片传输基本上都不行了。更不要说上面图形界面了。
- 可能是由于自己网络环境的问题,ssh 不稳定,总是断。
购买内网穿透服务
-
在某宝上,可以直接购买内网穿透的服务,一般是卖家会给一个网址和端口号,相当于通过它们的中继服务器,将两台电脑连接。经过测试,网速和带宽都能够满足自己需求,价格还很便宜【不做推荐,大家自行搜索】。
-
购买到服务之后,在电脑A,按照卖家给的方式设置好之后,就可以和之前的 IP 连接ssh很想了。
ssh ssh -p ip_port usr@xxx.xx
ip_port
和xxx.xx
都是卖家会提供给你的。 -
现在,两台电脑A和电脑B,有了具体的端口连接(
xxxx.xx:ip_port
), 并且这个连接是通过中继服务器设置的。我们接下来需要做-
- 测试连接的性能
-
- 图形界面连接
-
-
测试连接的性能
- 两台电脑安装
iperf3
sudo apt-get install iperf3
- 通过 ssh 进行本地端口映射【
省钱小trick :)
】,测量 ssh 连接的质量
电脑A:服务端,被连接的电脑
电脑B:客户端iperf3 -s -p 8080 # 通过 8080 端口监听
- 先使用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
)
- 连接之前做好端口映射,