第 1 章 Red Hat Quay 构建概述
Red Hat Quay 构建 或仅构建 是一项支持自动化容器镜像构建的功能。构建 功能使用 worker 节点从 Dockerfile 或其他构建规格构建镜像。这些构建可以通过 GitHub 等存储库(如 GitHub)的 webhook 手动或自动触发,允许用户将持续集成(CI)和持续交付(CD)管道集成到其工作流中。
OpenShift Container Platform 和 Kubernetes 集群上的 Red Hat Quay 支持构建功能。对于基于 Operator 的部署和 Kubernetes 集群,构建是使用协调和处理 构建作业的构建 管理器 创建的。构建 支持在裸机平台和使用虚拟 构建器在虚拟 平台上构建 Dockerfile。这种通用性使组织能够适应现有基础架构,同时利用 Red Hat Quay 的容器镜像构建功能。
Red Hat Quay 构建 功能的主要功能包括:
- 由代码提交或版本控制事件触发的自动化构建
- 支持 Docker 和 Podman 容器镜像
- 对构建环境和资源的精细控制
- 与 Kubernetes 和 OpenShift Container Platform 集成以实现可扩展构建
- 与裸机和虚拟化基础架构的兼容性
直接在裸机平台上的容器中运行构建与使用虚拟机时没有同样的隔离,但它仍然提供良好的保护。
构建 非常复杂,建议管理员审查 构建自动化架构指南,然后再继续。
1.1. 构建容器镜像
构建容器镜像涉及为容器化应用程序创建蓝图。蓝图依赖于其他公共存储库中的基础镜像,它们定义如何安装和配置应用程序。
Red Hat Quay 支持构建 Docker 和 Podman 容器镜像。此功能对于依赖容器和容器编排的开发人员和组织而言非常宝贵。
1.1.1. 构建上下文
使用 Docker 或 Podman 构建镜像时,将指定目录成为 构建上下文。对于手动构建和构建触发器,这是正确的,因为由 创建的构建与在本地机器上运行 docker build
或 podman build
不同。
从 Build 设置的 子目录中 始终指定构建上下文,如果未指定目录,则回退到 Build 源的根目录。
触发构建时,Build worker 会将 Git 存储库克隆到 worker 机器,然后在执行构建前输入构建上下文。
对于基于 .tar
归档的构建,构建工作程序提取存档并输入构建上下文。例如:
提取的构建存档
example ├── .git ├── Dockerfile ├── file └── subdir └── Dockerfile
假设 Extracted Build 归档 是目录结构,它有一个 Github 存储库,名为 example。如果在 Build 触发器设置中没有指定子目录,或者在手动启动构建时指定,则构建在示例目录中运行。
如果在 Build 触发器设置中指定子目录,如 subdir
,则构建中只有其中的 Dockerfile 才可以看到。这意味着您不能使用 Dockerfile 中的 ADD
命令来添加文件,因为它不在构建上下文之外。
与 Docker Hub 不同,Dockerfile 是构建上下文的一部分,因此它不能出现在 .dockerignore
文件中。