参考文章:

https://zhuanlan.zhihu.com/p/409747958

ros2 docker配置 - 知乎 (zhihu.com)

Docker打包本地环境为tar包给别人使用_docker镜像打包成tar包_Matrix_1127的博客-CSDN博客

结合以上多篇博客,自己动手操作并记录笔记

一、安装docker

sudo apt install docker.io

二、ros2 docker镜像下载

docker pull osrf/ros:humble-desktop

三、拉取完成使用下面的命令就可以进入已经安装好的镜像

sudo docker run -it osrf/ros:humble-desktop

注意:每运行一次该指令,就会在本地生成一个新的容器,分配一个新的容器ID

四、重启和关闭容器

新开一个终端

查看本地存在的容器:

sudo docker ps -a

启动容器:

sudo docker start fa647741f188 

进入刚刚生成的ros2容器,假设容器id前缀是fa647741f188 :

sudo docker exec -it fa647741f188  /bin/bash

再次进入容器启动ros2

root@fa647741f188:/# ros2

bash: ros2: command not found

这是因为新终端没有自动添加环境变量,解决办法:

直接输入下面的命令追加bashrc即可

echo 'source /opt/ros/humble/setup.bash'>> ~/.bashrc

追加完成后source即可:

source ~/.bashrc

五、把建好的容器打包给其他人使用

先退出容器:exit或者ctrl + D

提交全部更改到本地容器:docker commit 【容器ID】

此时的容器会生成一个新的未命名的镜像。我们需要对它重新命名,

镜像重命名:docker tag 0bc42f7ff218【镜像ID】 sqlmap_docker:v1【名称:版本】

镜像打包:docker save sqlmap_docker:v1 > /root/sqlmap_docker .tar  其中/root/指定存放的路径。

打包完成可以在相应目录下看到多了一个tar包,这就是你装好环境的docker镜像。

把这个镜像的tar包发送给别人, 然后他那边导入你的镜像:docker load -i sqlmap_docker .tar,运行这个镜像,进入对应的容器,然后就可以在相应目录下运行你的代码了。

六、其他Docker指令

数据卷持久化

我们需要把docker容器内的某个目录映射到宿主机的某个目录下面,这样可以保证容器关闭,宿主机断电后数据不会丢失。

sudo docker run -it -v /home/lzy/dockerfile/ros2/:/root ros2:latest /bin/bash

# sudo docker run -it -v 宿主机目录(绝对路径):容器目录(绝对路径) 镜像名称(ros2:latest) /bin/bash

查看本地存在的容器:

sudo docker ps -a

查看正在运行的容器:

sudo docker ps

进入刚刚生成的ros2容器,假设容器id前缀是fe:

sudo docker exec -it fe /bin/bash

停止容器:

sudo docker stop fe

启动容器:

sudo docker start fe

删除容器:

sudo docker rm fe

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐