【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 引擎,您可以根据官方文档进行安装:

使用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/":环境报错问题

相关推荐
wanhengidc1 小时前
网络爬虫会对服务器造成哪些影响?
运维·服务器·爬虫
一丝晨光7 小时前
如何构建ObjC语言编译环境?构建无比简洁的clang编译ObjC环境?Windows搭建Swift语言编译环境?
linux·c语言·开发语言·windows·macos·objective-c·clang
m0_465215797 小时前
IP服务模型
服务器·网络·tcp/ip
shelby_loo8 小时前
使用 Docker 部署 pSQL 服务器 的教程
服务器·docker·容器
passionup8 小时前
linux 命令笔记
linux·运维·笔记
Linux运维老纪8 小时前
K8s 分布式存储后端(K8s Distributed Storage Backend)
服务器·分布式·云原生·容器·kubernetes·云计算·运维开发
入眼皆含月10 小时前
《运维:技术的基石,服务的保障》
运维
熬夜苦读学习11 小时前
linux 进程补充
linux·运维·服务器
别致的影分身12 小时前
Linux 传输层协议 UDP 和 TCP
linux·tcp/ip·udp
索然无味io12 小时前
Linux基础
linux·运维·服务器·学习·安全·web安全·网络安全