赞
踩
在进行ROS项目开发时,如果只有一台Windows电脑,我们可以考虑使用WSL或Docker来搭建ROS环境。在尝试了两种方式后,我们认为使用Docker容器更为方便和安全。本文的特色在于解决了ROS仿真软件在Docker容器中可视化的问题。
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源 1。
具体而言,Docker就是一个轻量级的虚拟机,可以让我们在每个独立的container容器(类似 iPhone 的 app)中进行开发而不会干扰host系统,非常安全可靠。
Windows中安装 Docker Desktop: https://www.docker.com/products/docker-desktop/
值得注意的是,官方文档有说明 “借助 Docker Desktop for Windows 中支持的 WSL 2 后端,可以在基于 Linux 的开发环境中工作并生成基于 Linux 的容器,同时使用 Visual Studio Code 进行代码编辑和调试,并在 Windows 上的 Microsoft Edge 浏览器中运行容器” 2。
翻译过来就是,在win11系统中利用WSL2安装的Ubuntu系统可以共享 win11中安装的docker desktop,且unregister WSL2中某个Distribution 后docker container还在。只需确保如下设置:
docker version #查看版本
docker ps #列出运行中的containers
docker ps -a #列出所有containers,包括运行中的和已停止的container。
docker info #列出几乎images&containers所有相关信息
docker image ls #列出所有镜像
docker container ls #列出运行中的containers
docker run <options> <image_name> #运行指定镜像
docker run -it <image_name> #以交互模式运行指定镜像
docker stop <options> <container_id> #关闭指定container
docker start <options> <container_id> #重启指定container
docker exec <options> <container_id> #进入指定容器
docker exec -it <container_id> #以交互模式进入指定容器
docker pull <image_name> #从docker hub 里拉取镜像
也可以从Docker Desktop里直接拉取镜像
docker push <options> <image_name> #将本地镜像上传至docker hub,但体积太大的会被拒绝
docker commit <options> <container_id> <new_image_name> #将container转化为image
下载docker image到本地
docker save <image_name> > <image_name.tar> #将image打包下载到本地
导入本地docker image
docker load --input <image_name.tar> #导入打包好的image
docker taf <image_id> <docker_image_name:version> #给image改名
清理无用的docker iamge 和 container3 (慎重!删除后不可恢复)
docker system prune # 命令可以用于清理磁盘,删除关闭的container、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
docker system prune -a # 命令清理得更加彻底,可以将没有container使用的Docker image以及没有使用的container全部都删掉。
确保host主机有Nvidia GPU,下载Nvidia发布的docker images.
当初使用docker就是为了在windows下使用ROS。查阅官方说明3,在docker container中可视化需要如下操作:
1.docker image 在Ubuntu(WSL2)下创建的
2. 在 Ubuntu中输入:
docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --device=/dev/dri:/dev/dri -p 8080:10000 <docker_image_name> bash
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。