【docker/ros】docker容器中安装melodic-ros-core过程总结

序言
  • 问题:基于Dockerfile制作镜像,需要基于cuda的基础镜像,同时又希望使用ros基础镜像。一个思路是通过docker history --no-trunc=true imageId > image_dockerfile分别解析两个基础镜像的制作过程再整合到同一个Dockerfile,这种方法暂未尝试;第二种方式,先基于cuda基础镜像创建镜像,再安装ros然后通过docker commit生成镜像
  • 本文记录在docker容器中安装medolic-ros-core的过程
1. 安装前准备
  • ros的安装过程总体参考了 Ubuntu18.04安装Ros,这篇文章还是比较靠谱的,不过它安装的是ros-melodic-desktop-full

  • 开始安装前先下载rosdistro,下载地址:github rosdistro,如果github打不开,从下边的地址下载,地址来源:rosdistro下载安装,解决rosdep init失败的时候要用

    链接:https://pan.baidu.com/s/1ZjMcvqOvLRa_iTdXis8ufg 
    提取码:01e2
    
  • 补充介绍ros镜像相关:可在网站docker hub: ros查找不同的ros docker镜像版本,选择tag搜索想要的ros版本,如 melodic-ros-core,简单查了下,melodic-ros-base是在core版本基础上拓展得到的,额外安装了一些基础工具和库;点开镜像我们能看到它的镜像层image layer,可看到镜像构建的过程,在容器内安装ros-core时使用了其中的一些命令

2. 容器内安装melodic-ros-core

安装步骤如下

2.1 更新镜像地址和keys

echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-latest.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

2.2 软件更新并安装ros-core

apt-get update && apt-get install --no-install-recommends ros-melodic-ros-core=1.4.1-0*

安装过程需要输入时区,选择6 Asia 和 70 Shanghai继续安装

2.3 设置环境变量

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc && source ~/.bashrc

2.4 安装库依赖

apt install -y python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

2.5 rosdep初始化

rosdep init

如果报错:ERROR: cannot download default sources list from
在这里插入图片描述
按照如下方式解决:

(1) 将下载好的rosdistro包放到容器内,如 /home/ 目录下,文件/文件夹拷贝命令

docker cp rosdistro containerId:/home

(2) 拷贝后文件路径为 /home/rosdistro,修改目录下rosdep/sources.list.d/20-default.list文件,替换其中的地址为本地文件地址

vim /home/rosdistro/rosdep/sources.list.d/20-default.list

修改后如下
在这里插入图片描述
(3) 修改/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py文件中的DEFAULT_SOURCES_LIST_URL

vim /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

修改后如下
在这里插入图片描述

(4) 修改/usr/lib/python2.7/dist-packages/rosdep2/rep3.py文件中的REP3_TARGETS_URL

vim /usr/lib/python2.7/dist-packages/rosdep2/rep3.py

修改后如下
在这里插入图片描述
(5) 修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py文件中的DEFAULT_INDEX_URL

vim /usr/lib/python2.7/dist-packages/rosdistro/__init__.py

修改后如下
在这里插入图片描述
(6) 然后再执行rosdep init或sudo rosdep init

执行成功的界面如下
在这里插入图片描述

2.6 rosdep更新

rosdep update

执行成功的界面如下
在这里插入图片描述

2.7 清理安装残留

apt-get autoclean -y && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

至此就完成了容器内melodic-ros-core的安装,执行roscore测试一下。如果安装过程中有碰到其他问题,欢迎留言讨论

 


参考文章:

docker hub ros镜像层
ubuntu18.04安装ros
下载rosdistro
解决rosdep init参考
ros base对比ros core

created by shuaixio, 2022.06.18

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化技术,可以在不同的操作系统上运行应用程序。Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。 以下是一些常用的DockerDocker Compose命令: ### Docker - `docker run`: 运行一个Docker容器。 - `docker ps`: 列出正在运行的Docker容器。 - `docker images`: 列出所有本地镜像。 - `docker build`: 使用Dockerfile构建一个Docker镜像。 - `docker push`: 将本地镜像上传到Docker Hub或其他Docker镜像仓库。 - `docker pull`: 从Docker Hub或其他Docker镜像仓库下载一个镜像。 - `docker rm`: 删除一个或多个Docker容器。 - `docker rmi`: 删除一个或多个本地Docker镜像。 ### Docker Compose - `docker-compose up`: 构建并启动一个Docker Compose应用。 - `docker-compose down`: 停止并删除一个Docker Compose应用。 - `docker-compose ps`: 列出正在运行的Docker Compose服务。 - `docker-compose logs`: 查看一个Docker Compose服务的日志。 - `docker-compose exec`: 在一个Docker Compose服务执行一个命令。 - `docker-compose build`: 构建一个Docker Compose服务的镜像。 - `docker-compose pull`: 下载一个Docker Compose服务的镜像。 ### Docker Compose配置文件 Docker Compose使用YAML格式的配置文件来定义多容器Docker应用程序。以下是一个示例配置文件: ``` version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" ``` - `version`: 定义配置文件使用的Docker Compose版本。 - `services`: 包含一个或多个Docker容器服务的列表。 - `build`: 构建一个Docker镜像。 - `image`: 使用现有的Docker镜像。 - `ports`: 映射容器端口到主机端口。在此示例容器的5000端口将映射到主机的5000端口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值