一个并发、缓存高效的构建工具包,可将源码转换为构建产物,是 Docker 构建所使用的底层引擎。
- Star
- 144
- Fork
- 58
- 未关闭 Issue
- 16
- 最近提交
- 昨天
这是什么?
rules_img 是一组用于在 Bazel 构建过程中直接生成 OCI 容器镜像的规则,无需 Docker daemon。它同时支持 Bzlmod 和 WORKSPACE 两种配置方式,可以把任意 *_binary 目标(如 C++、Go、Python、Java、Rust 等)打包成镜像,并自动从目标中推导出 entrypoint、cmd、环境变量和工作目录。
项目重点关注构建性能。基础镜像采用浅层拉取,只获取 manifest 和配置,CUDA 这类大型镜像的层仅在真正需要时才下载。每个层在一个 action 中生成,相同文件通过硬链接去重。项目提供 eager、lazy、CAS registry 和 BES 等多种推送策略,可以让镜像从远程执行环境或 Bazel 远程缓存直接上传,不必经过本机。此外还支持多平台镜像索引、eStargz 和 SOCI 懒加载,以及文件系统和磁盘镜像格式的层。
核心功能
- 01在 Bazel 中构建 OCI 镜像,无需 Docker daemon,构建可复现。
- 02可将任意 *_binary 目标打包为容器镜像,自动设置 entrypoint 和 cmd。
- 03基础镜像浅层拉取,仅在需要时才下载层数据。
- 04通过硬链接对各层中的相同文件去重。
- 05提供多种推送策略,包括从 Bazel 远程缓存中惰性推送。
- 06支持多平台镜像索引,以及 eStargz 和 SOCI 懒加载。
适用场景
- 在已有的 Bazel 单体仓库中为 C++、Go、Python 或 Java 服务构建容器镜像。
- 构建基于 CUDA 等大型基础镜像的工作负载,避免在每台构建机上下载全部基础层。
- 在 CI 或远程执行集群中直接把镜像推送到镜像仓库,无需把层复制到构建主机。
- 通过同一套 Bazel 配置生成 linux/amd64 和 linux/arm64 的多架构镜像。
快速上手
- 1
在 MODULE.bazel 文件中添加 rules_img
- 2
可选:在 .bazelrc 文件中配置默认设置
使用前须知
- 当前版本为 0.3.x,API 在各版本之间可能仍会变化。
- 部分功能(如磁盘镜像)被标注为实验性功能。
标签
常见问题
- rules_img 是什么?
- 用于在 Bazel 中构建 OCI 容器镜像的规则集,支持浅层拉取基础镜像、层去重和减少本地数据传输的推送策略。 rules_img 是一组用于在 Bazel 构建过程中直接生成 OCI 容器镜像的规则,无需 Docker daemon。它同时支持 Bzlmod 和 WORKSPACE 两种配置方式,可以把任意 *_binary 目标(如 C++、Go、Python、Java、Rust 等)打包成镜像,并自动从目标中推导出 entrypoint、cmd、环境变量和工作目录。
- rules_img 可以免费使用吗?用的什么许可证?
- rules_img 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- rules_img 还在维护吗?
- 活跃维护中。rules_img 最近一次提交是在 2026年11月6日。
- rules_img 适合用来做什么?
- 在已有的 Bazel 单体仓库中为 C++、Go、Python 或 Java 服务构建容器镜像。 构建基于 CUDA 等大型基础镜像的工作负载,避免在每台构建机上下载全部基础层。 在 CI 或远程执行集群中直接把镜像推送到镜像仓库,无需把层复制到构建主机。 通过同一套 Bazel 配置生成 linux/amd64 和 linux/arm64 的多架构镜像。
- rules_img 怎么安装和运行?
- 在 MODULE.bazel 文件中添加 rules_img 可选:在 .bazelrc 文件中配置默认设置
- 在哪里获取 rules_img?
- 源代码和安装说明在 GitHub 上:https://github.com/bazel-contrib/rules_img
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
无守护进程的命令行工具,用于运行、构建和管理 OCI 容器、镜像、卷和 Pod,兼容 Docker 命令行。
无需 Docker daemon,通过 Maven 或 Gradle 为 Java 应用构建优化的 Docker/OCI 镜像。
用 Go 编写的应用内核,在用户态拦截 Linux 系统调用来隔离容器,可作为 runsc OCI 运行时使用。
Clair 是一个开源的容器镜像静态分析工具,用于检测镜像中的已知安全漏洞。
用于在本地图形化构建、运行和管理容器与 Kubernetes 的桌面应用,基于 Podman 等容器引擎。