
Apollo10.0 Docker部署实战指南企业级开发环境搭建与优化在自动驾驶技术快速迭代的今天Apollo平台作为行业领先的开源解决方案其10.0版本通过Docker容器化部署大幅提升了开发环境的可移植性和一致性。本文将带您深入探索从零开始构建Apollo10.0开发环境的完整路径特别针对企业团队协作场景提供定制化配置方案。1. 环境准备与系统优化1.1 操作系统选择与基础配置Apollo10.0对Ubuntu系统的支持矩阵如下表所示部署方式推荐系统版本架构支持Docker容器Ubuntu 18.04/20.04/22.04x86_64Ubuntu 20.04aarch64本机部署Ubuntu 22.04x86_64Ubuntu 20.04aarch64对于生产环境部署建议采用Ubuntu 22.04 LTS版本执行以下系统优化命令# 更新软件源并升级系统 sudo apt update sudo apt full-upgrade -y # 安装基础开发工具链 sudo apt install -y build-essential cmake git curl gnupg2 ca-certificates # 优化系统参数针对自动驾驶开发调整 echo vm.max_map_count262144 | sudo tee -a /etc/sysctl.conf sudo sysctl -p1.2 Docker引擎深度配置Apollo要求Docker版本不低于19.03推荐安装最新稳定版# 卸载旧版本如有 sudo apt remove docker docker-engine docker.io containerd runc # 安装Docker官方GPG密钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 将当前用户加入docker组 sudo usermod -aG docker $USER newgrp docker注意企业环境中建议配置私有镜像仓库和资源限制可通过修改/etc/docker/daemon.json实现2. GPU加速环境配置2.1 NVIDIA驱动与CUDA工具链Apollo10.0要求CUDA 11.8环境驱动版本建议≥520.61.05# 检查现有驱动版本 nvidia-smi --query-gpudriver_version --formatcsv,noheader # 添加官方PPA源 sudo add-apt-repository ppa:graphics-drivers/ppa -y sudo apt update # 安装推荐驱动版本以535为例 sudo apt install -y nvidia-driver-535 # 验证驱动安装 nvidia-smi2.2 NVIDIA Container Toolkit集成实现Docker容器内GPU加速的关键组件# 添加NVIDIA仓库密钥 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 update sudo apt install -y nvidia-container-toolkit # 配置Docker运行时 sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker # 验证GPU容器支持 docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi3. Apollo环境管理工具部署3.1 AEM工具链安装Apollo Environment Manager (AEM) 是管理多版本环境的核心组件# 添加Apollo官方GPG密钥 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 ar /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 # 安装AEM工具 sudo apt update sudo apt install -y apollo-neo-env-manager-dev # 验证安装 aem --version3.2 多工程环境隔离方案企业开发中常需同时维护多个Apollo工程推荐目录结构~/apollo_projects/ ├── team_a/ │ ├── application-core/ │ ├── application-perception/ ├── team_b/ │ ├── custom-project/ │ └── shared-components/ └── resources/ ├── records/ └── maps/创建新工程时使用--name参数指定唯一标识git clone https://github.com/ApolloAuto/application-core.git team-alpha cd team-alpha aem start --name team_alpha_env4. 示例工程实战部署4.1 工程初始化与依赖管理以application-core工程为例# 克隆工程仓库 git clone https://github.com/ApolloAuto/application-core.git cd application-core # 初始化环境配置 bash setup.sh # 启动容器环境GPU版本 aem start --gpu # 进入开发环境 aem enter # 安装核心依赖 buildtool build -p core4.2 车型配置与数据播放Apollo10.0采用模块化配置方案# 查看可用配置 ls profiles/ # 激活sample配置 aem profile use sample # 下载测试数据包 mkdir -p $HOME/.apollo/resources/records wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record -P $HOME/.apollo/resources/records/ # 获取高精地图 buildtool map get sunnyvale4.3 Dreamview可视化调试启动增强版可视化工具aem bootstrap start --plus访问http://localhost:8888后按以下流程操作选择Default Mode并接受用户协议在Mode Settings页面Operations选择RecordRecords选择demo_3.5.recordHDMap选择Sunnyvale Big Loop点击底部播放按钮5. 企业级部署优化技巧5.1 容器资源配额管理在/etc/docker/daemon.json中添加资源限制{ default-runtime: nvidia, runtimes: { nvidia: { path: nvidia-container-runtime, runtimeArgs: [] } }, exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2, storage-opts: [ overlay2.override_kernel_checktrue ] }5.2 离线部署方案在内网环境中准备离线包# 导出基础镜像 docker save apolloauto/apollo:dev-x86_64-10.0 | gzip apollo10.0-image.tar.gz # 打包软件仓库 tar czvf apollo-repo.tar.gz /etc/apt/sources.list.d/apolloauto.list /etc/apt/keyrings/apolloauto.gpg # 离线安装命令 sudo tar xzvf apollo-repo.tar.gz -C / sudo apt update --allow-insecure-repositories sudo apt install -y apollo-neo-env-manager-dev --allow-unauthenticated docker load apollo10.0-image.tar.gz5.3 持续集成流水线示例.gitlab-ci.yml配置片段stages: - build - test apollo_build: stage: build image: docker:20.10 services: - docker:20.10-dind variables: DOCKER_HOST: tcp://docker:2375 DOCKER_DRIVER: overlay2 script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:10.0 . - docker push $CI_REGISTRY_IMAGE:10.0 apollo_test: stage: test image: $CI_REGISTRY_IMAGE:10.0 script: - aem start - buildtool test -p core6. 常见问题排查手册6.1 GPU相关错误处理问题现象容器内nvidia-smi命令报错解决方案# 检查宿主机驱动状态 nvidia-smi # 验证容器运行时配置 docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi # 重新配置runtime sudo nvidia-ctk runtime configure --runtimedocker sudo systemctl restart docker6.2 网络连接问题问题现象buildtool下载依赖超时优化方案# 设置镜像加速 aem config set registry.mirror https://mirror.baidubce.com # 或者使用代理需企业网络支持 export https_proxyhttp://corporate-proxy:3128 export http_proxyhttp://corporate-proxy:31286.3 存储空间不足问题现象Docker容器启动失败扩容方案# 查看存储驱动状态 docker info | grep Storage # 清理无用容器和镜像 docker system prune -af # 修改存储位置如有更大分区 sudo systemctl stop docker sudo rsync -a /var/lib/docker /new/storage/path sudo mv /var/lib/docker /var/lib/docker.bak sudo ln -s /new/storage/path/docker /var/lib/docker sudo systemctl start docker在实际企业部署中我们发现合理配置/etc/docker/daemon.json中的storage-opts参数可以显著提升IO性能特别是在使用NVMe SSD的研发工作站上。同时建议为每个工程团队分配独立的Docker网络段避免端口冲突。