【Ubuntu 20.04】Apollo 10.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/":环境报错问题

    作者:暮色念了红尘

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Ubuntu 20.04】Apollo 10.0 Docker容器部署疑难解析与常见错误处理

    发表回复