这篇文章解决的重点是,如何通过windows,或者ubuntu,访问服务器,并且把服务器的docker容器里的内容远程可视化出来,这种方法并不能对docker进行桌面可视化,但是可以保证弹出的窗口是可视化的,例如gedit,gazebo,rviz这些内容。
效果展示:
一、可视化配置
服务器可视化需要使用到Mobaxterm软件,下载地址如下:MobaXterm free Xserver and tabbed SSH client for Windows
下载完成后使用Mobaxterm打开设置,进行如下配置:
配置完毕后,使用ssh登录服务器,输入:
xhost +
解除Xserver的访问限制。 每次登录服务器后需确保执行,否则后续运行算法时不能可视化界面,并且会报错: QXcbConnection: Could not connect to display localhost:10.0 如果屏幕输出: access control disabled, clients can connect from any host ,则配置无误。
最后输入
xclock
如果能弹出一个时钟窗口,则表示可视化配置成功:
二、docker使用
首先使用
docker images查询已有镜像
由于使用的是ssh连接服务器,使用docker挂载到自己的目录使用:
sudo docker run -it -p 50003:22 –gpus all -v /your_name:/data –device=/dev/dri –group-add video –volume=/tmp/.X11-unix:/tmp/.X11-unix –env="DISPLAY=$DISPLAY" –env="QT_X11_NO_MITSHM=1" –name=ros_noetic -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all osrf/ros:noetic-desktop-full /bin/bash
/home/you_name这里需要修改为自己服务器上使用的文件路径,这回将其将其挂载到容器的/data目录。
osrf/ros:noetic-desktop-full 表示使用的是名字为osrf/ros,标签为noetic-desktop-full的镜像。
–name=ros_noetic: 为容器指定一个名称ros_noetic,可以任意取 –device=/dev/dri: 将主机的/dev/dri设备添加到容器中,通常用于图形加速。 –group-add video: 将容器的用户添加到主机的video组,通常与图形设备相关。 –volume=/tmp/.X11-unix:/tmp/.X11-unix: 将主机的X11 Unix套接字目录挂载到容器中,允许容器显示X11应用程序。 –env=“DISPLAY=$DISPLAY”: 设置环境变量DISPLAY,用于X11应用程序定位X服务器。 –env=“QT_X11_NO_MITSHM=1”: 禁用QT的MIT-SHM扩展,该扩展在某些X服务器配置中可能会导致问题。(必须加)
经过上述配置后,可以在/data文件夹下看到挂载目录下的文件:
使用ctrl+D或者输入exit即可退出容器,推出容器后,使用 docker ps -a 即可看到刚刚创建的容器
若是想要再次进入,使用 sudo docker start -ia id 即可进入,例如:
sudo docker start -ia b91b6df3c30e
再次进入容器后再次输入xclock查看是否能接收到服务器的窗口,若是出现
表示并未安装 ,需要先安装:
首先更新软件包列表
sudo apt update
安装xclock。在终端中输入以下命令来安装xclock:
sudo apt install x11-apps
再次输入xclock测试,若是能够弹出时钟窗口,则表示配置完毕了。
若是出现以下报错,则需要配置bashrc或者/etc/profile
1、配置配置.bashrc :使用: 在终端输入:
echo 'export DISPLAY=mobaxterm非本地DISPLAY端口:0.0' >> ~/.bashrc mobaxterm 非本地DISPLAY端口:0.0 查看方式:打开mobaxterm一个新页面,10.102.95.74:0.0 就是 “mobaxterm 非本地DISPLAY端口:0.0 ” 然后:source ~/.bashrc
若是配置.bashrc后还是不行,配置/etc/profile 若是docker没有vi编辑器,使用 echo 'export DISPLAY=10.102.95.74:0.0' >> /etc/profile 最后:source /etc/profile注:如果之后运行rviz、gazebo无法显示,可以尝试看看是否端口变了,更换端口后即可
补充:tmux使用
Tmux 可用于在一个终端窗口中运行多个终端会话。不仅如此,还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话。
使用sudo apt-get install tmux安装 运行ros 先使用tmux打开窗口
按下ctrl+b 再输入’%‘进行左右分屏,若是输入”则上下分配: 按下ctrl+d 则是关闭窗口
到此、配置便结束了。
评论前必须登录!
注册