泡泡机器人SLAM与你一同成长❤
可视化
其实关键就是添加一个可视化的应用,如X11 apps (and GL), is the key for display inside the docker,e.g.
1 |
|
1 |
|
-e DISPLAY=$DISPLAY
,after this the gui inside the docker will show in the host machine--privileged
,will make all extend equippment available for the docker
打开界面
有几种方式可以在Docker中设置界面,openbox,vnc等。这里选择的是ros-vnc来进行可视化界面的,vnc其实是一个功能, ubuntu自带的某些软件也有这个功能,VNC-Viewer免费版即可。 比如直接启动如下容器:
1 |
|
调整分辨率
1 |
|
通过ssh连接
打开本机控制台,输入:
1 |
|
ssh -o 'UserKnownHostsFile=/dev/null' root@localhost -p [port]
port表示端口号,保持和开启镜像时映射的端口一致。在控制台使用下述ssh链接打开的容器:ssh root@localhost -p 2222
也可以设置自定义的ssh密码,如asc123
1 |
|
也可以随机选择端口号,P会系统自动给一个端口,可以避免端口冲突
1 |
|
通过docker port
查看当前开了哪些端口,然后找到想要的端口
同时使用ssh和可视化界面
1 |
|
-p
将本地5900端口映射到容器,服务于vnc进行可视化-e
SSHPW= 设置ssh连接的密码为xxx-p
将本地2222端口映射到容器,服务于ssh进行连接-e RESOLUTION=1920x1280
设置分辨率为1080p-v
表示将本地D:/data路径挂在到容器对应的/data下,amazinghao/ubuntu:graph_slam_updated 为镜像名。
退出之后再打开
- 按照前述方法用vnc或者ssh打开Docker的一个镜像并生成容器之后,通过exit退出当前容器,若是后续还想再进去,此时如果通过run命令就会再次产生一个容器,而你在之前的容器中所做的操作就不会保留。
- 因此这时需要通过start,打开之前操作过现在状态是exit的容器,用attach建立连接,此时如果通过
docker ps -a
可以发现之前的容器又可以打开了,并且端口号是可用的。
- 另外如果想要在exit容器时,容器不退出,应该使用exec命令打开镜像
docker exec -it 24d1106f11b8 /bin/bash
,此时也会发现容器时可用的了。
深度学习环境的界面可视化
在使用3D Gaussian Splatting进行场景重建时,有一个可视化界面需要使用,因此需要直接能够从Docker容器中打开,在容器初始化时需要做一些额外的配置,
1 |
|
- 既有了cuda支持,又有了可视化界面。
Docker远程Debug
首先代码是在本地,以文件夹挂载的方式挂载到容器中。
Python文件的Debug
这里借助的是vscode来实现代码Debug。首先通过Remote-Container/Remote-SSH插件连接到容器中,点击运行->打开配置,即如下类似的文件settings.json(位于本地.vscode路径下):
1 |
|
设置好之后可以F5开启调试了,打断点和单步调试都可以用。
C++的Debug
TODO
其他问题
vnc首次可以连接成功,但是再次连接时失败,打开vnc5900时提示,connected closed unxepectedly。
解决方案: 这是需要使用start将上次的docker容器打开就可以了,连接失败的原因可能是因为端口被占用了。