【Ubuntu20.04】Apollo10.0 Docker容器部署+常见错误解决

官方参考文档【点击我】

Apollo 10.0 版本开始,支持本机和Docker容器两种部署方式。

如果您使用本机部署方式,建议使用x86_64架构的Ubuntu 22.04操作系统或者aarch64架构的Ubuntu 20.04操作系统。

如果您使用Docker容器部署方式,可以使用x86_64架构的Ubuntu 18.04、20.04、22.04 操作系统或者aarch64架构的Ubuntu 20.04操作系统。

本文使用Docker容器部署,操作系统为Ubuntu 20.04。

步骤一:安装基础软件

1. 安装 Ubuntu Linux

目前 Apollo 支持 Ubuntu 18.04 Ubuntu 20.04 以及 Ubuntu 22.04

更新相关软件:

sudo apt-get update
sudo apt-get upgrade

更新过程中可能出现下载速度超级慢的问题或者以下错误:

Error1:sudo apt-get install 出现无法定位软件包问题

Error2:仓库xxx没有release文件/不再含有release文件

一种快速解决方法就是换源:

这里使用的是清华源【点击我】,进入之后页面如下

具体修改/etc/apt/sources.list文件,我的配置如下:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
# deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

2. 安装 Docker Engine

Apollo 依赖于 Docker 19.03+。安装 Docker 引擎,您可以根据官方文档进行安装:

  • 参见 Install Docker Engine on Ubuntu。
  • 或者通过 Apollo 提供的安装脚本直接安装:
wget http://apollo-pkg-beta.bj.bcebos.com/docker_install.sh
bash docker_install.sh

使用Apollo 提供的安装脚本直接安装可能会出现错误,可以采用自己手动安装进行配置

  Docker Engine手动安装
1.更新软件包
sudo apt update

2.安装依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common

3.添加Docker官方GPG密钥
sudo -i
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-ce.gpg

4.验证,0EBFCD88 是公钥的指纹。执行这个命令后,系统会显示与该指纹相关的公钥信息
sudo apt-key fingerprint 0EBFCD88

5.添加Docker阿里稳定版软件源
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

6.再次更新软件包
sudo apt update

7.安装默认最新版
sudo apt install docker-ce docker-ce-cli containerd.io
安装特定版docker:
sudo apt-cache madison docker-ce  # 显示可用版本
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io # 将需要的版本替换VERSION_STRING

8.测试,安装好后默认启动
sudo docker run hello-world
如果输出“Hello from Docker!”则表示Docker已经成功安装。
但是这一部分是大概率不能成功的:
	Unable to find image 'hello-world:latest' locally
	docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 4.78.139.54:443: connect: connection refused.
	See 'docker run --help'.
因为一般这种情况就是因为docker默认的镜像源是Dockerhub,而这个网站在域外。所以和Ubuntu换国内源一样,我们也可以对docker换国内镜像源。参考:https://blog.csdn.net/Lichen0196/article/details/137355517  和 
 https://www.cnblogs.com/OneSeting/p/18532166

9.查看有哪些镜像
sudo docker images

10.配置用户组(给当前用户分配docker权限)
创建docker用户组:
	sudo groupadd docker
添加当前用户到docker组:
	sudo usermod -aG docker 【用户】
重启或者执行命令使之生效:
	newgrp docker
测试是否可以免sudo运行
	docker run hello-world

11.配置开机自启动
启动:sudo systemctl start docker
开机自启:sudo systemctl enable docker && sudo systemctl enable containerd.service

步骤二(可选):获取 GPU 支持

Apollo某些模块需要GPU的支持才能够编译、运行(例如感知模块),如果您需要使用此类模块,需要安装Nvidia显卡驱动以及Nvidia container toolkit以获取GPU支持。

只适用于ubuntu系统,虚拟机无法安装显卡驱动,wsl请自行上网搜索 注意:如果您之前已经安装过Nvidia显卡驱动,即往终端输入nvidia-smi能够正常输出,可以跳过1.安装显卡驱动小节

1.安装驱动 

从 Apollo 10.0 开始,CUDA 最低版本要求为 11.8 ,因此推荐使用 520.61.05 以上版本的驱动,CUDA 版本与 驱动版本的兼容信息可参考 Nvidia 官方文档 。 显卡驱动和CUDA版本兼容性,由于nvidia的硬件更新的很快,因此会遇到显卡驱动和CUDA版本不兼容的情况,以下为我们测试的畅通链路。

您可以通过 Nvidia 官网来下载驱动 nvidia-driver-535.179

下载之后,找到相应的文件夹打开终端输入安装指令:

以 NVIDIA-Linux-x86_64-535.179.run 为例

sudo chmod 777 NVIDIA-Linux-x86_64-535.179.run
suod ./NVIDIA-Linux-x86_64-535.179.run

 安装完毕后,您可以通过 nvidia-smi 指令来检查驱动是否安装成功,如果一切正常,您可以看到类似以下的提示:

Mon Nov 11 16:35:59 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 555.42.06              Driver Version: 555.42.06      CUDA Version: 12.5     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 2070 ...    Off |   00000000:06:00.0 Off |                  N/A |
| 30%   36C    P8              4W /  215W |     200MiB /   8192MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
 
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      1095      G   /usr/lib/xorg/Xorg                             35MiB |
|    0   N/A  N/A      1972      G   /usr/lib/xorg/Xorg                             94MiB |
|    0   N/A  N/A      2102      G   /usr/bin/gnome-shell                           59MiB |
+-----------------------------------------------------------------------------------------+

2. 安装 Nvidia container toolkit

为了在容器内获得 GPU 支持,在安装完 docker 后需要安装 NVIDIA Container Toolkit。 运行以下指令安装 NVIDIA Container Toolkit:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get -y update
sudo apt-get install -y nvidia-container-toolkit

注意,这一步可能出现错误,如若不能够解决,可以采取手动安装方式

安装完毕后,配置 NVIDIA Container Toolkit 

sudo nvidia-ctk runtime configure --runtime=docker

配置完成后重启docker

sudo systemctl restart docker
手动安装 Nvidia container toolkit

本节参考博客【点击我】

  1. 下载安装包,进入此链接【请点击我】下载以下文件链接:

  2. 安装下载包,终端切换到下载目录下,执行以下命令安装:

    dpkg -i ./lib*  ./nvidia*
    
  3. 重新加载daemon文件和docker

    systemctl daemon-reload
    systemctl restart docker
  4. 查看nvidia-docker 版本

    nvidia-docker -v
    nvidia-docker version
  5. 修改/etc/docker/daemon.json,如下:

    {
        "default-runtime": "nvidia",
        "runtimes": {
            "nvidia": {
                "path": "nvidia-container-runtime",
                "runtimeArgs": []
            }
        }
    }

步骤三:安装 Apollo 环境管理工具

 Apollo 环境管理工具是一个帮忙管理和启动 Apollo 环境的命令行工具。

1. 安装依赖软件

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

2. 在宿主机添加 Apollo 软件源的 gpg key,并设置好源和更新

# 添加 gpg key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://apollo-pkg-beta.cdn.bcebos.com/neo/beta/key/deb.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/apolloauto.gpg
sudo chmod a+r /etc/apt/keyrings/apolloauto.gpg
 
# 设置源并更新
echo \
    "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/apolloauto.gpg] https://apollo-pkg-beta.cdn.bcebos.com/apollo/core"\
    $(. /etc/os-release && echo "$VERSION_CODENAME") "main" | \
    sudo tee /etc/apt/sources.list.d/apolloauto.list
sudo apt-get update

3. 安装aem:

sudo apt install apollo-neo-env-manager-dev --reinstall

安装成功后即可使用

aem -h

至此,安装工作完成,后序就是下载工程等任务。

参考

  1. Apollo 自动驾驶开放平台
  2. ubuntu20.04和Centos7离线安装docker及nvidia-container-toolkit

  3. 解决Error Get "https://registry-1.docker.io/v2/":环境报错问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/948306.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot整合Logback

Logback介绍 描述 Logback是由log4j创始人设计的另外一种开源日志组件&#xff0c;性能比log4j要好。相对是一个可靠、通用、快速而又灵活的Java日志框架。 Logback主要分三个模块 1、logback-core&#xff1a;其他两个模块的基础模块 2、logback-classic&#xff1a;它是lo…

仓库叉车高科技安全辅助设备——AI防碰撞系统N2024G-2

在当今这个高效运作、安全第一的物流时代&#xff0c;仓库作为供应链的中心地带&#xff0c;其安全与效率直接关系到企业的命脉。 随着科技的飞速发展&#xff0c;传统叉车作业模式正逐步向智能化、安全化转型&#xff0c;而在这场技术革新中&#xff0c;AI防碰撞系统N2024G-2…

学习笔记|arduino uno r3| RGB 灯珠|Atmega328P|PWM|analogWrite|analogRead函数: RGB灯珠呼吸灯

目录 RGB 灯珠呼吸灯实验RGB 灯珠实验概述工作原理组件清单接线程序代码编译和执行 Tips&#xff1a; Arduino常用的函数解释analogWrite(pin, value)函数analogRead(pin)函数 总结 RGB 灯珠呼吸灯实验 RGB 灯珠实验概述 1-三色LED黑板模块的PCB颜色为黑色&#xff0c;使用5M…

杰发科技——使用ATCLinkTool解除读保护

0. 原因 在jlink供电电压不稳定的情况下&#xff0c;概率性出现读保护问题&#xff0c;量产时候可以通过离线烧录工具避免。代码中开了读保护&#xff0c;但是没有通过can/uart/lin/gpio控制等方式进行关闭&#xff0c;导致无法关闭读保护。杰发所有芯片都可以用本方式解除读保…

ICLR2017 | I-FGSM | 物理世界中的对抗样本

Adversarial Examples in The Physical World 摘要-Abstract引言-Introduction生成对抗图像的方法-Methods of Generating Adversarial Images对抗样本的图片-Photos of Adversarial Examples对抗图像的破坏率-Destruction Rate of Adversarial Images实验设置-Experimental Se…

MySQL(四)MySQL Select语句

1. MySQL Select语句 1.1. 基本查询语句 mysql>select 列名 from 表名;(基本结构查询某一列) mysql>select 列名1,列名2 from 表名;(查询所有列多列) mysql>select * from 表名;(*代表查询所有列) 查询时可以给列设定别名通过as 关键字&#xff0c;别名可以是汉字&a…

高并发写利器-组提交,我的Spring组件实战

高并发写优化理论 对于高并发的读QPS优化手段较多&#xff0c;最经济简单的方式是上缓存。但是对于高并发写TPS该如何提升&#xff1f;业界常用的有分库分表、异步写入等技术手段。但是分库分表对于业务的改造十分巨大&#xff0c;涉及迁移数据的麻烦工作&#xff0c;不会作为…

C++Primer 变量

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【模型】Qwen2-VL 服务端UI

1. 前言 最近在测试VLM模型&#xff0c;发现官方的网页demo&#xff0c;代码中视频与图片分辨率可能由于高并发设置的很小&#xff0c;导致达不到预期效果&#xff0c;于是自己研究了一下&#xff0c;搞了一个简单的前端部署&#xff0c;自己在服务器部署了下UI界面&#xff0…

分布式事务介绍 Seata架构与原理+部署TC服务 示例:黑马商城

1. 什么是分布式事务? 在分布式系统中&#xff0c;如果一个业务需要多个服务合作完成&#xff0c;而且每一个服务都有事务&#xff0c;多个事务必须同时成功或失败&#xff0c;这样的事务就是分布式事务。其中的每个服务的事务就是一个分支事务。整个业务称为全局事务。 打个比…

uni-app:实现普通选择器,时间选择器,日期选择器,多列选择器

效果 选择前效果 1、时间选择器 2、日期选择器 3、普通选择器 4、多列选择器 选择后效果 代码 <template><!-- 时间选择器 --><view class"line"><view classitem1><view classleft>时间</view><view class"right&quo…

C++Primer 基本类型

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

纯前端实现将pdf转为图片(插件pdfjs)

需求来源 预览简历功能在移动端&#xff0c;由于用了一层iframe把这个功能嵌套在了app端&#xff0c;再用一个iframe来预览&#xff0c;只有ios能看到&#xff0c;安卓就不支持&#xff0c;查了很多资料和插件&#xff0c;原理基本上都是用iframe实现的。最终转换思路&#xf…

基于FPGA的出租车里程时间计费器

基于FPGA的出租车里程时间计费器 功能描述一、系统框图二、verilog代码里程增加模块时间增加模块计算价格模块上板视频演示 总结 功能描述 &#xff08;1&#xff09;&#xff1b;里程计费功能&#xff1a;3公里以内起步价8元&#xff0c;超过3公里后每公里2元&#xff0c;其中…

Unix 域协议汇总整理

Unix 域协议是一种用于同一台计算机上进程间通信&#xff08;IPC&#xff09;的技术。它提供了一种比基于网络的套接字更高效的方式来在本地进程中交换数据。Unix 域协议使用文件系统作为通信的媒介&#xff0c;并且只限于在同一台计算机上运行的进程之间进行通信。 Unix 域套接…

JVM学习:CMS和G1收集器浅析

总框架 一、Java自动内存管理基础 1、运行时数据区 运行时数据区可分为线程隔离和线程共享两个维度&#xff0c;垃圾回收主要是针对堆内存进行回收 &#xff08;1&#xff09;线程隔离 程序计数器 虚拟机多线程是通过线程轮流切换、分配处理器执行时间来实现的。为了线程切换…

1.C语言教程:历史、特点、版本与入门示例

目录 1.历史2.特点3.版本4.编译5.Hello World 示例 1.历史 本篇原文为&#xff1a;C语言教程&#xff1a;历史、特点、版本与入门示例。 更多C进阶、rust、python、逆向等等教程&#xff0c;可去此站查看&#xff1a;酷程网 C 语言的诞生源于 Unix 系统的开发需求。 1969 年…

lec7-路由与路由器

lec7-路由与路由器 1. 路由器硬件 路由器的硬件部分&#xff1a; 断电失去&#xff1a; RAM断电不失去&#xff1a;NVRAM&#xff0c; Flash&#xff0c; ROMinterface也算是一部分 路由器是特殊组件的计算机 console 口进行具体的调试 辅助口&#xff08;Auxiliary&…

spring防止重复点击,两种注解实现(AOP)

第一种&#xff1a;EasyLock 简介 为了简化可复用注解&#xff0c;自己实现的注解&#xff0c;代码简单随拿随用 使用方式 1.创建一个注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface EasyLock {long waitTime() default …

Linux-Ubuntu之I2C通信

Linux-Ubuntu之I2C通信 一&#xff0c;I2C通信原理1.写时序2.读时序 二&#xff0c;代码实现三&#xff0c;显示 一&#xff0c;I2C通信原理 使用I2C接口驱动AP3216C传感器&#xff0c;该传感器能实现两个效果&#xff0c;一个是感应光强&#xff0c;另一个是探测物体与传感器…