保姆级教程:在Ubuntu 22.04上搞定Apollo 10.0 Cyber RT的Docker环境(含网络问题解决)

张开发
2026/4/21 16:28:44 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 22.04上搞定Apollo 10.0 Cyber RT的Docker环境(含网络问题解决)
从零构建Apollo Cyber RT开发环境Ubuntu 22.04全流程实战指南当自动驾驶技术从实验室走向产业化Apollo平台已成为开发者入门的黄金标准。作为其核心通信框架Cyber RT的实时性与可靠性直接影响整个系统的表现。本文将带你用Docker在Ubuntu 22.04上搭建完整的Apollo 10.0开发环境——不同于简单的命令罗列我会深入每个操作背后的设计逻辑并针对国内开发者特有的网络环境提供完整解决方案。1. 环境准备为什么选择Docker在开始敲命令前我们需要理解Apollo官方推荐Docker的深层原因。传统开发方式需要手动安装ROS、Protobuf等数十个依赖项版本冲突和缺失库文件会让80%的初学者卡在环境配置阶段。Docker通过以下机制彻底解决了这些问题环境隔离内核级虚拟化保证CUDA、GCC等关键组件的版本与主机完全独立快速回滚镜像快照功能可在构建失败时立即恢复到干净状态团队协作apolloauto/apollo官方镜像已预装所有依赖确保团队环境一致1.1 硬件与系统要求组件最低配置推荐配置CPU4核x86_648核及以上内存8GB16GBGPU存储50GB SSD100GB NVMe系统Ubuntu 20.04Ubuntu 22.04 LTS提示虽然Apollo支持CPU模式但建议配备NVIDIA显卡驱动版本≥515以获得完整感知模块功能1.2 基础软件安装首先更新系统并安装Docker引擎# 卸载旧版本 sudo apt remove docker docker-engine docker.io containerd runc # 设置APT源 sudo apt update sudo apt install -y ca-certificates curl gnupg 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 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 # 验证安装 sudo docker run hello-world配置NVIDIA Container Toolkit需提前安装显卡驱动distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install -y nvidia-container-toolkit sudo systemctl restart docker2. Apollo源码获取与容器启动2.1 源码克隆优化方案官方GitHub仓库在国内访问缓慢推荐使用镜像源# 国内用户首选速度提升10倍以上 git clone https://gitee.com/ApolloAuto/apollo.git -b v10.0 --depth1 # 国际用户 git clone https://github.com/ApolloAuto/apollo.git -b v10.0 --recursive关键参数解析-b v10.0明确指定版本分支避免默认main分支的兼容性问题--depth1仅克隆最新提交节省80%下载时间适合初次体验--recursive完整克隆子模块需用于二次开发2.2 容器启动的三种模式进入源码根目录后根据使用场景选择启动方式完整开发模式含可视化工具aem start # Apollo Environment Manager纯Cyber RT模式资源占用减少40%./docker/scripts/dev_start.sh --cyber国内加速模式使用阿里云镜像./docker/scripts/dev_start.sh -g cn启动后进入容器的正确姿势# 常规方式会创建新终端窗口 ./docker/scripts/dev_into.sh # 保持当前终端适合远程SSH场景 docker exec -it apollo_dev /bin/bash3. 构建过程中的典型问题解决3.1 网络超时问题深度分析构建时常见的Connection timed out错误通常源于依赖下载超时Bazel默认使用Google域名下载依赖镜像拉取失败部分基础镜像存储在gcr.io证书验证问题企业网络可能拦截HTTPS请求解决方案一替换下载源修改apollo/.bazelrc文件build --distdir/apollo-distdir build --repository_cache/apollo-repo-cache build --crosstool_topapollo//tools:gcc7_host build --define CYBER_RT_WITH_GPUON build --action_envHTTP_PROXYhttp://your_proxy:port # 仅在企业内网需要解决方案二预下载依赖包官方提供了离线资源包约2.5GBwget https://apollo-pkg-beta.cdn.bcebos.com/archive/10.0/apollo_deps.tar.gz tar xzf apollo_deps.tar.gz -C /apollo3.2 权限问题一网打尽当遇到Permission denied时按以下顺序排查Docker组权限sudo groupadd docker sudo usermod -aG docker $USER newgrp docker # 立即生效容器内文件权限# 在容器内执行 sudo chown -R apollo:apollo /apolloBazel缓存清理./apollo.sh clean --bazel4. Cyber RT功能验证与调试技巧4.1 实时日志配置优化默认配置下Cyber RT日志写入文件调试时建议开启终端输出# 修改/apollo/cyber/setup.bash export GLOG_alsologtostderr1 # 第42行附近 export GLOG_colorlogtostderr1 # 彩色输出 export GLOG_minloglevel0 # 显示DEBUG级别日志 # 立即生效 source /apollo/cyber/setup.bash4.2 双终端通信测试在第一个终端运行发布者./bazel-bin/cyber/examples/talker \ --channeltest_channel \ --interval500 # 发布间隔(ms)在第二个终端运行订阅者./bazel-bin/cyber/examples/listener \ --channeltest_channel \ --delay0 # 处理延迟(ms)预期看到类似输出I0725 14:30:15.389432 12345 talker.cc:45] Publishing message: Hello Cyber RT! 0 I0725 14:30:15.890113 54321 listener.cc:56] Received message: Hello Cyber RT! 04.3 性能监控技巧通过Cyber RT内置工具查看通信状态# 查看通道列表 cyber_monitor # 查看单个通道详情按TAB切换视图 cyber_monitor -c test_channel # 性能分析需提前安装perf ./scripts/cyber_benchmark.sh talker listener5. 开发环境的高级定制5.1 VSCode远程开发配置安装Remote-Containers插件创建.devcontainer/devcontainer.json{ name: Apollo Cyber RT, dockerComposeFile: ../docker-compose.yml, service: dev, workspaceFolder: /apollo, extensions: [ ms-vscode.cpptools, llvm-vs-code-extensions.vscode-clangd ] }5.2 自定义Docker镜像创建Dockerfile.customFROM apolloauto/apollo:cyber-x86_64-10.0 # 安装个人工具链 RUN apt update apt install -y \ tmux \ htop \ python3-pip # 配置开发环境 COPY .bashrc /home/apollo/ RUN chown apollo:apollo /home/apollo/.bashrc构建并运行docker build -t my-apollo -f Dockerfile.custom . ./docker/scripts/dev_start.sh -i my-apollo在项目后期当需要频繁修改Cyber RT源码时建议将以下目录挂载为volume/apollo/cyber核心框架代码/apollo/bazel-apollo编译缓存/apollo/log运行时日志

更多文章