查看原文
其他

技术文档丨Apollo Docker 镜像构建过程

阿波君 Apollo开发者社区 2022-07-29


从自动驾驶技术出发,Apollo开发者社区带你一起探索自动驾驶开发的奥秘,给每一位对自动驾驶充满热爱的你带来最实质的帮助,助力你的每一次研发。本文将介绍 Apollo Docker 镜像构建过程,主要从以下几点为大家进行详细讲解。

  • 概览

  • 构建 CyberRT 镜像

  • 构建 Apollo 开发图像

  • 构建 Docker 镜像

  • 提示

  • 添加新程序



Apollo 在 Docker 容器中运行,基本上有两种类型的 Apollo Docker 镜像:CyberRT 和 Dev。CyberRT 映像仅适用于只想使用 CyberRT 框架的开发人员,而 Dev 映像则用于构建和运行整个 Apollo 项目。


目前,支持两种 CPU 架构:x86_64aarch64.
dev.aarch64图像截至今天仍然是在制品。预计将在未来几个月内完成。
在下文中,我将简要描述构建这些 Docker 镜像的步骤。



键入./build_docker.sh -h帮助获取信息:

Usage: build_docker.sh -f <Dockerfile> [Options]Available options: -c,--clean Use "--no-cache=true" for docker build -m,--mode "build" for build everything from source if possible, "download" for using prebuilt ones -g,--geo Enable geo-specific mirrors to speed up build. Currently "cn" and "us" are supported. -d,--dist Whether to build stable("stable") or experimental("testing") Docker images -t,--timestamp Specify Cyber image timestamp to build Dev image from it. Format: yyyymmdd_hhmm (e.g 20210205_1520) --dry Dry run (for testing purpose) -h,--help Show this message and exitE.g., build_docker.sh -f cyber.x86_64.dockerfile -m build -g cn    build_docker.sh -f dev.aarch64.dockerfile -m download -d testing

在这里,该-g/--geo选项用于启用基于地理位置的设置(APT 和 PYPI 镜像等)。现在支持两种代码 ( us& cn),默认为us

要构建最新的 CyberRT 映像,只需运行:

./build_docker.sh -f cyber.<TARGET_ARCH>.dockerfile

中国大陆用户可以指定-g cn加快构建过程:

./build_docker.sh -f cyber.<TARGET_ARCH>.dockerfile -g cn


运行以下命令来构建 Apollo Dev 映像

build_docker.sh -f dev.<TARGET_ARCH>.dockerfile

成功后,如下所示的消息将显示在屏幕底部。

Successfully built baca71e567e6Successfully tagged apolloauto/apollo:dev-x86_64-18.04-20200824_0339Built new image apolloauto/apollo:dev-x86_64-18.04-20200824_0339



Apollo Runtime Docker 与 Release Build 输出结合使用,以便于部署。您可以运行以下命令来构建自己的 Apollo Runtime Docker 镜像。

# Generate required APT packages./apollo.sh release -c -r
cd docker/build# Copy the generated package list for docker buildcp /apollo/output/syspkgs.txt .
cp runtime.x86_64.dockerfile.sample runtime.x86_64.dockerfilebash build_docker.sh -f runtime.x86_64.dockerfile


注意:Apollo Runtime Docker 仅支持 x86_64,因为 Release Build 尚未准备好用于 Aarch64。


建立日志

CyberRT 和 Dev Docker 镜像的构建日志位于 /opt/apollo/build.log,其中包含 Docker 构建期间依赖包的下载链接和校验和。

启用本地 HTTP 缓存以加快构建速度

你可以通过在运行 Docker的主机上执行以下步骤来启用本地 HTTP 缓存以加快包下载:

  • 将所有必备软件包下载到一个目录(例如$HOME/archive),其中包含构建日志中列出的url。注意他们的校验和。

  • 切换到该存档目录,并在端口8388启动本地 HTTP 缓存服务器。

cd $HOME/archivenohup python3 -m http.server 8388 &
注意:本地 HTTP 缓存机制的另一个优点是,它对最终图像大小的影响很小。即使缓存的包丢失或损坏,仍然可以从原始 URL 下载。
  • 重新运行build_docker.sh



新安装程序的最佳实践是:

  • Well tested.

使其正常工作,并且不要破坏其他安装程序,例如库的不兼容版本。

  • Standalone.

有关于基底的最小假设,这意味着,你可以依赖于基本图像和installers/installer_base.sh. 除此之外,您应该在自己的安装程序中安装所有依赖项。

  • Thin.

它将在最终图像中生成一个新图层,因此请使其尽可能薄。例如,清理所有中间文件:

wget xxx.zip# Unzip, make, make installrm -fr xxx.zip xxx
  • Cross-architecture.

完全适用于不同的体系结构,例如x86_64和 aarch64。



*《Apollo Docker Image Build Process

https://github.com/ApolloAuto/apollo/blob/master/docker/build/README.md


以上就是“Apollo Docker 镜像构建过程”的全部内容,如果大家对Apollo开放平台和套件感兴趣,可以添加『Apollo小哥哥』(微信号:apollo_xzs)为好友,进入技术交流群,跟开发者们一起讨论哦。



©️原创归作者所有,如需转载,请注明出处,另有法律责任。





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存