此方法制作的镜像可以直接在docker容器的伪终端对ros2工程进行命令行操作,从而运行工程。
基础知识:
登陆镜像仓库
sudo docker login
退出镜像仓库
sudo docker logout
查看镜像
sudo docker images
删除镜像
sudo docker rmi 镜像ID
查看容器ID
sudo docker ps
退出容器
sudo docker container stop 容器ID
删除容器
sudo docker rm 容器ID
实际操作:
1.安装docker,推荐小鱼的一键安装
wget http://fishros.com/install -O fishros && . fishros
2.拉取ros2镜像,笔者使用的是官方提供的foxy镜像
sudo docker pull --platform amd64 ros:foxy
3.打开终端,创建容器,-t选项让Docker分配一个伪终端并绑定到容器的标准输入上,
-i则让容器的标准输入保持打开
sudo docker run -t -i --name=ros_container ros:foxy /bin/bash
4.打开伪终端,在容器的伪终端设置环境变量
扫描二维码关注公众号,回复:
14842960 查看本文章
source /opt/ros/foxy/setup.bash
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
5.打开伪终端,在容器伪终端创建放置工程源代码的路径
mkdir -p /home/project_ws/src
6.打开终端,复制工程到容器目录中
sudo docker cp /home/liusipei/project_ws/src/fs 容器ID:/home/project_ws/src
7.打开伪终端,进入容器内工程fs的工作空间目录
cd /home/project_ws
8.打开伪终端,编译容器目录中的工程
colcon build
9.打开伪终端,设置工程环境变量
source /home/project_ws/install/setup.bash
echo "source /home/project_ws/install/setup.bash" >> ~/.bashrc
10.打开终端,提交生成ros_project_image镜像
sudo docker commit 容器ID ros_project_image:v1.0
11.打开终端,将镜像上传到镜像仓库,就可以在其它电脑将ros2工程下载并直接运行了
sudo docker push 仓库名/ros_project_image:v1.0