关于 Quay IO


Red Hat Quay 3.12

关于 Quay IO

Red Hat OpenShift Documentation Team

摘要

关于 Quay IO

前言

本指南为用户提供了使我们最强大、功能丰富的容器注册中心服务 Quay.io 所需的知识和工具。

第 1 章 quay.io 概述

Quay.io 是一个用于存储、构建和分发容器镜像和其他 OCI 工件的 registry。Quay.io 在开发人员、组织和企业间获得了广泛的流行度,以作为容器化生态系统中的领先平台之一建立自己。它为满足各种用户需求提供自由和付费的层。

在其核心上,Quay.io 充当存储、管理和分发容器镜像的集中存储库。Quay.io 非常灵活,易于使用,它提供了一个直观的 Web 界面,用户可以快速上传和管理其容器镜像。开发人员可以创建私有存储库,确保敏感或专有代码在其机构中保持安全。此外,用户可以设置访问控制和管理团队协作,从而在指定团队成员之间实现容器镜像的无缝共享。

Quay.io 通过集成的镜像扫描程序 Clair 解决了容器安全顾虑。该服务会自动扫描容器镜像以了解已知漏洞和安全问题,为开发人员提供对潜在风险的宝贵见解,并建议补救步骤。

Quay.io 过量自动化,并支持与流行的持续集成/持续部署(CI/CD)工具和平台集成,实现容器构建和部署流程的无缝自动化。因此,开发人员可以简化其工作流,从而显著降低人工干预并提高了整体开发效率。

Quay.io 满足大型和小型部署的需求。其架构和支持高可用性可确保组织可以依赖它用于关键任务应用程序。平台可以处理大量容器镜像流量,并提供有效的复制和分发机制,以将容器镜像传送到各种地理位置。

Quay.io 已作为容器爱好者的活跃中心建立。开发人员可以发现其他用户共享的大量预构建公共容器镜像,从而更轻松地为其项目查找有用的工具、应用程序和服务。这种开放共享生态系统促进了协作,加速容器社区内的软件开发。

随着容器化的继续在软件开发环境中发展,Quay.io 仍然处于最前沿的,不断改进和扩展其服务。该平台对于安全性、易于使用、自动化和社区参与的承诺已将其视为个人开发人员和大型机构的首选容器 registry 服务。

第 2 章 Quay.io 支持

技术支持是 Quay.io 容器注册表服务的关键方面,不仅有助于管理容器镜像,还可确保托管平台的功能和可用性。

为了帮助用户遇到与功能相关的问题,红帽提供了 Quay.io 客户对多个资源的访问权限。红帽知识库 包含可最大化红帽产品和技术潜力的宝贵内容。用户可以查找文章、产品文档和视频,以概述了安装、配置和使用红帽产品的最佳实践。它还充当已知问题解决方案的中心,提供简洁的根原因描述和补救步骤。

此外,Quay.io 客户还可以关注技术支持团队,以解决问题、排查问题并提供针对平台优化体验的解决方案。无论它涉及了解特定功能、自定义配置还是解决容器镜像构建问题,支持团队都专用于通过具有清晰和专业知识的每个步骤指导用户。

对于与 Quay.io 状态页上 未列出的服务中断或性能问题相关的事件,其中包括可用性和功能问题,给客户可以使用 红帽客户门户网站 引发技术支持票据。服务事件定义为影响平台的多个用户的计划外中断服务或减少服务质量。

通过这一全面的技术支持系统,Quay.io 确保用户可以自信地管理其容器镜像、优化其平台体验并克服可能出现的任何挑战。

第 3 章 Quay.io 用户界面概述

Quay.io 的用户界面(UI)是一个基本的组件,充当用户网关,用于管理平台生态系统中的容器镜像并与之交互。Quay.io 的 UI 旨在提供直观易用的界面,方便所有技能水平的用户轻松浏览和利用 Quay.io 的特性和功能。

本文档部分旨在向用户介绍 Quay.io UI 的关键元素和功能。它将涵盖 UI 布局、导航和关键功能等重要方面,为用户探索和制作大部分 Quay.io 容器注册表服务提供了稳定的基础。

在这个文档中,按步骤说明、可视化帮助和实用示例在以下主题中提供:

  • 探索应用程序和软件仓库
  • 使用 Quay.io 教程
  • pricing 和 Quay.io 计划
  • 登录和使用 Quay.io 功能

本文档一起确保用户可以快速获取 UI 的 nuances,并通过 Quay.io 成功浏览其容器化过程。

3.1. quay.io 登录页面

Quay.io 登录页面充当用户访问所提供的容器 registry 服务的中央 hub。本页提供了必要的信息和链接,以协助用户安全地存储、构建和部署容器镜像。

Quay.io 的登录页面包括到以下资源的链接:

  • 了解.在本页中,您可以搜索 Quay.io 数据库以查找各种应用程序和存储库。
  • 教程.在本页中,您可以逐步执行一个显示如何使用 Quay.io。
  • 定价.在本页中,您可以了解 Quay.io 提供的各种定价层。本页上还介绍了各种常见问题解答。
  • 登录。通过单击此链接,您会被重新定向到您的 Quay.io 存储库。

Quay.io header .

登录页面还包括关于计划维护的信息。在调度的维护期间,Quay.io 在只读模式下运行,并正常拉取功能。推送和构建在计划的维护期间无法正常运行。您可以通过进入到 Quay.io Status 页面并点 Subscribe To Updates 订阅有关 Quay.io 维护的更新。

Scheduled maintenance banner

登录页面还包括以下资源的链接:

  • 文档.本页提供了使用 Quay.io 的文档。
  • 术语.本页提供有关红帽在线服务的法律信息。
  • 隐私.本页提供有关红帽隐私声明的信息。
  • 安全性. 本页提供有关 Quay.io 安全性的信息,包括 SSL/TLS、加密、密码、访问控制、防火墙和数据弹性。
  • 关于.此页面包含有关所使用的软件包和项目以及产品简短历史的信息。
  • 联系。本页包含有关支持及联系红帽支持团队的信息。
  • 所有系统操作.此页面包含 Quay.io 的状态和维护简短历史记录的信息。
  • Cookie。单击此链接,会出现一个弹出框,供您设置 Cookie 首选项。

Quay.io footer .

您还可以在 内部查找有关 Trying Red Hat Quay 或在云中 尝试 Red Hat Quay 的信息,这会将您重定向到 pricing 页面。每个选项都提供免费试用。

3.1.1. 创建 Quay.io 帐户

Register for a Red Hat account 需要新的 Quay.io 用户,并创建一个 Quay.io 用户名。这些帐户会关联,但有两个不同的区别:

  • Quay.io 帐户可用于推送和拉取容器镜像,或将 Open Container Initiative 镜像推送到 Quay.io 以存储镜像。
  • Red Hat 帐户允许用户访问 Quay.io 用户界面。对于付费客户,这个帐户也可以用于 从红帽生态系统目录 访问镜像,该目录 可推送到其 Quay.io 存储库。

用户必须首先注册红帽帐户,然后创建一个 Quay.io 帐户。用户需要这两个帐户来正确使用 Quay.io 的所有功能。

3.1.1.1. 注册红帽帐户

使用以下步骤为 Quay.io 注册红帽帐户。

流程

  1. 导航到 红帽客户门户
  2. 在导航窗格中,单击 Log In
  3. 当导航到登录页面时,单击 Register for a Red Hat Account
  4. 输入红帽登录 ID。
  5. 输入密码。
  6. 输入以下个人信息:

    • 电子邮件地址
    • 电话号码
  7. 输入以下与您所在国家或地区相关的联系信息。例如:

    • 国家/区域
    • 地址
    • 邮政编码
    • 城市
    • County
  8. 选择并同意红帽的条款和条件。
  9. 单击 Create my account
  10. 导航到 Quay.io 并登录。
3.1.1.2. 创建 Quay.io 用户帐户

使用以下步骤创建 Quay.io 用户帐户。

先决条件

  • 您已创建了红帽帐户。

流程

  1. 如果需要,点 I am not a machine and confirming 来解析 captcha。您将被重定向到 Confirm Username 页面。
  2. Confirm Username 页面上,输入用户名。默认情况下生成一个用户名。如果同一用户名已存在,则在末尾添加一个数字,使其是唯一的。此用户名用作 Quay Container Registry 中的命名空间。
  3. 在决定用户名后,单击 Confirm Username。您会被重定向到 Quay.io Repositories 页面,它充当一个专用的 hub,用户可以在其中轻松访问和管理其存储库。在这个页面中,用户可以有效地组织、导航并与其容器镜像和相关资源交互。
3.1.1.3. Quay.io 单点登录支持

Red Hat Single Sign On (SSO)可用于 Quay.io。使用以下步骤设置带有 Quay.io 的 Red Hat SSO。对于大多数用户,这些帐户已经链接。但是,对于某些旧的 Quay.io 用户,可能需要这个过程。

先决条件

  • 您已创建了 Quay.io 帐户。

流程

  1. 导航到 Quay.io Recovery 页面
  2. 输入您的用户名和密码,然后单击 Sign in to Quay Container Registry
  3. 在导航窗格中,点击您的用户名 → 帐户设置
  4. 在导航窗格中,单击 External Logins and Applications
  5. 单击 Attach to Red Hat
  6. 如果您已在 Red Hat SSO 中签名,您的帐户会自动链接。否则,系统会提示您通过输入您的 Red Hat 登录或电子邮件和密码登录 Red Hat SSO。或者,您可能需要首先创建新帐户。

    登录 Red Hat SSO 后,您可以选择从登录页面中使用您的红帽帐户对 Quay.io 进行身份验证。

其他资源

3.1.2. 探索 Quay.io

Quay.io Explore 页面是一个有价值的 hub,允许用户获取 Quay.io 社区共享的大量容器镜像、应用程序和存储库。通过其直观、用户友好的设计,Explore 页面提供了强大的搜索功能,让用户能够轻松发现容器化的应用程序和资源。

3.1.3. 试用 Quay.io (已弃用)

注意

Red Hat Quay 指南目前已弃用,并将在 v2 UI 正式发布(GA)时删除。

Quay.io Tutorial 页面为用户提供并介绍 Quay.io 容器注册表服务。通过点 Continue Tutorial 用户了解如何在 Quay.io 上执行以下功能:

  • 通过 Docker CLI 登录 Quay Container Registry
  • 启动容器
  • 从容器创建镜像
  • 将存储库推送到 Quay Container Registry
  • 查看软件仓库
  • 设置构建触发器
  • 更改存储库的权限

3.1.4. 有关 Quay.io 定价的信息

除了免费层外,Quay.io 还提供多种具有增强优势的付费计划。

Quay.io 定价 页面提供有关 Quay.io 计划以及每个计划的相关价格的信息。每个层的成本可在 定价 页面中找到。所有 Quay.io 计划都包括以下优点:

  • 持续集成
  • 公共软件仓库
  • 机器人帐户
  • 团队
  • SSL/TLS 加密
  • 日志记录和审计
  • 发票历史记录

Quay.io 订阅由 Stripe 支付处理平台处理。需要一个有效的信用卡才能注册 Quay.io。

要注册 Quay.io,请使用以下流程:

流程

  1. 导航到 Quay.io Pricing 页面
  2. 决定一个计划,如 Small,然后单击 Buy Now。您将被重定向到 Create New Organization 页面。输入以下信息:

    • 机构名称
    • 机构电子邮件
    • 可选。如果要更大的计划,您可以选择不同的计划,例如 Small
  3. 解析 captcha,然后选择 Create Organization
  4. 您将被重定向到 Stripe。输入以下信息:

    • 卡信息,包括 MM/YYCVC
    • 卡中的名称
    • 国家/地区
    • ZIP (如果适用)
    • 如果要保存信息,请选中该框。
    • 电话号码
  5. 填写完所有框后,单击 Subscribe

第 4 章 Red Hat Quay tenancy 模型

在创建仓库以在 Quay.io 中包含容器镜像之前,您应该考虑这些存储库是如何构建的。使用 Quay.io 时,每个存储库都需要与组织或用户 进行连接。 这种关系为存储库定义所有权和访问控制。

4.1. 租期模型

Tenancy model

  • 组织 提供了一种在不属于单个用户的通用命名空间下共享存储库的方法。相反,这些存储库属于共享设置中的多个用户,如公司。
  • 团队 为机构提供了一种委托权限的方法。权限可以在全局级别(例如,在所有仓库间)或特定存储库设置。也可以为特定集合或用户组设置它们。
  • 用户可以通过 Web UI 或 使用 Podman 等客户端并使用其相应的登录命令(例如 $ podman login )来登录 registry。如果您使用 Quay.io,每个用户都会自动获得一个用户命名空间,例如 & lt;quay-server.example.com>/<user>/<username &gt ; 或 quay.io/<username >。
  • 机器人帐户 为非人类用户(如管道工具)提供对存储库的自动化访问权限。机器人帐户与 OpenShift Container Platform 服务帐户类似。通过添加该帐户(如给另一个用户或团队),可以将权限授予存储库中的机器人帐户。

4.2. 登录到 Quay

Quay.io 的用户帐户表示具有对平台特性和功能验证访问权限的个人。通过此帐户,您可以获取创建和管理存储库、上传和检索容器镜像以及控制这些资源的访问权限的能力。此帐户用于整理和监督 Quay.io 中的容器镜像管理。

注意

并非所有 Quay.io 功能都要求用户登录。例如,您可以在不登录的情况下从 Quay.io 匿名拉取镜像,只要您要拉取的镜像来自公共存储库。

用户有两个选项可用于登录到 Quay.io:

  • 通过 Quay.io 登录。

    此选项为用户提供旧的 UI,以及用于使用 beta UI 环境的选项,该环境遵循 PatternFly UI 原则。

  • 通过 Red Hat Hybrid Cloud Console 登录。

    此选项使用 Red Hat SSO 进行身份验证,并且是由红帽提供的公共管理服务。这个选项 始终 要求用户登录。与其他托管服务一样,Red Hat Hybrid Cloud Console 上的 Quay 通过遵循 PatternFly UI 原则来增强用户体验。

Red Hat Hybrid Cloud Console 上使用 Quay.io 和 Quay 的不同是微不足道的,包括免费层上的用户。无论您是直接使用 Quay.io,在 Hybrid Cloud Console 上,需要登录的功能(如推送到存储库),请使用您的 Quay.io 用户名规格。

4.2.1. 登录到 Quay.io

使用以下步骤登录到 Quay.io。

先决条件

  • 您已创建了红帽帐户和一个 Quay.io 帐户。如需更多信息,请参阅"创建 Quay.io 帐户"。

流程

  1. 导航到 Quay.io
  2. 在导航窗格中,选择 Sign In 并使用您的红帽凭据登录。
  3. 如果是第一次登录时,您必须确认自动生成的用户名。单击 Confirm Username 以登录。

    您将被重定向到 Quay.io 存储库登录页面。

    Quay.io repository landing page

4.2.2. 通过 Hybrid Cloud 控制台登录到 Quay

先决条件

  • 您已创建了红帽帐户和一个 Quay.io 帐户。如需更多信息,请参阅"创建 Quay.io 帐户"。

流程

  1. 导航到 Red Hat Hybrid Cloud Console 上的 Quay,并使用您的红帽帐户登录。您将被重定向到 Quay 存储库登录页面:

    Quay on the Red Hat Hybrid Cloud Console

第 5 章 Quay.io 组织概述

in = Quay.io 是一个机构是一组用户、存储库和团队。它提供了一种方式来组织和管理 registry 中的访问控制和权限。通过机构,管理员可以为用户和团队分配角色和权限。有关机构的其他有用信息包括:

  • 您不能将一个机构嵌入到另一个机构中。要划分组织,请使用 team。
  • 机构无法直接包含用户。您必须首先添加一个团队,然后为每个团队添加一个或多个用户。

    注意

    单个用户可以添加到组织内的特定存储库中。因此,这些用户不是 Repository Settings 页面中的任何团队的成员。Teams and Memberships 页面上的 Collaborators View 显示有权直接访问该机构中特定存储库的用户,而无需特别成为该机构的一部分。

  • 团队可以被设置在机构中,就像使用存储库和相关镜像的成员一样,或者作为具有特殊特权来管理机构的管理员一样。

用户可以创建自己的组织来共享容器镜像的存储库。这可以通过 Quay.io UI 完成。

5.1. 使用 UI 创建机构

使用以下步骤使用 UI 创建新机构。

流程

  1. 登录到您的 Red Hat Quay registry。
  2. 在导航窗格中,单击 Organization
  3. 单击 Create Organization
  4. 输入 组织名称,如 testorg
  5. 输入 机构电子邮件
  6. Create

现在,您的示例组织应在 Organizations 页面下填充。

5.2. 机构设置

使用 = Quay.io 时,可以使用 UI 调整一些基本组织设置。这包括调整常规设置,如与机构关联的电子邮件地址以及 时间机器设置,供管理员在标签被永久删除后调整。

使用以下步骤使用 v2 UI 更改您的机构设置。

流程

  1. 在 v2 UI 上,单击 Organizations
  2. 单击您要为其创建机器人帐户的组织名称,如 test-org
  3. Settings 选项卡。
  4. 可选。输入与机构关联的电子邮件地址。
  5. 可选。将 Time Machine 功能的分配时间设置为以下之一:

    • 几秒钟
    • 一天
    • 7 天
    • 14 天
    • 一个月
  6. 点击 Save

5.3. Red Hat Quay 软件仓库概述

存储库为存储一组相关容器镜像提供了一个中央位置。这些镜像可用于以标准化格式构建应用程序及其依赖项。

存储库按命名空间进行组织。每个命名空间可以有多个存储库。例如,您可能具有个人项目的命名空间、一个用于公司的命名空间,或者对于您机构中的特定团队有一个命名空间。

通过付费计划,Quay.io 为用户提供其存储库的访问控制。用户可以将存储库变为公共存储库,即任何人都可以从存储库拉取或下载、镜像,或者用户可以使其私有,限制对授权用户或团队的访问权限。

注意

Quay.io 的空闲层不允许私有存储库。您必须升级到 Quay.io 的已支付层,以创建私有存储库。如需更多信息,请参阅"有关 Quay.io 定价的信息"。

在 Quay.io 中创建存储库的方法有两种:使用相关 podman 命令推送镜像,或使用 Quay.io UI。您还可以使用 UI 删除存储库。

如果您在 UI 上不先通过命令行界面(CLI)推送镜像,则不会将创建的存储库设置为 Private,无论您拥有的计划是什么。

注意

建议您在推送镜像前在 Quay.io UI 上创建存储库。Quay.io 检查计划状态,如果计划未激活,则不允许创建私有存储库。

5.3.1. 使用 UI 创建存储库

使用以下步骤使用 Quay.io UI 创建存储库。

流程

使用以下步骤使用 v2 UI 创建存储库。

流程

  1. 单击导航窗格上的 Repositories
  2. 单击 Create Repository
  3. 选择一个命名空间,如 quayadmin,然后输入 Repository name,如 testrepo

    重要

    不要在存储库名称中使用以下词语:* build * trigger * tag

    当这些词语用于存储库名称时,用户无法访问存储库,且无法永久删除存储库。尝试删除这些仓库会返回以下错误: Failed to delete repository <repository_name>, HTTP404 - Not Found。

  4. Create

    现在,您的 example 存储库应该在 Repositories 页面中填充。

  5. 可选。点 SettingsRepository visibilityMake private 将存储库设置为私有。

5.3.2. 使用 Podman 创建软件仓库

使用正确的凭证,您可以使用 Quay.io 实例中尚不存在的 Podman 将镜像推送到 存储库。推送镜像指的是将容器镜像从本地系统或开发环境上传到容器 registry (如 Quay.io)的过程。将镜像推送到 registry 后,会创建一个存储库。

如果您在 UI 上不先通过命令行界面(CLI)推送镜像,则不会将创建的存储库设置为 Private,无论您拥有的计划是什么。

注意

建议您在推送镜像前在 Quay.io UI 上创建存储库。Quay.io 检查计划状态,如果计划未激活,则不允许创建私有存储库。

使用以下步骤通过推送镜像来创建镜像存储库。

先决条件

  • 您已下载并安装 podman CLI。
  • 已登录到 registry。
  • 您已拉取了镜像,如 busybox。

流程

  1. 从示例 registry 中拉取示例页面。例如:

    $ podman pull busybox
    Copy to Clipboard Toggle word wrap

    输出示例

    Trying to pull docker.io/library/busybox...
    Getting image source signatures
    Copying blob 4c892f00285e done
    Copying config 22667f5368 done
    Writing manifest to image destination
    Storing signatures
    22667f53682a2920948d19c7133ab1c9c3f745805c14125859d20cede07f11f9
    Copy to Clipboard Toggle word wrap

  2. 使用新存储库和镜像名称标记本地系统上的镜像。例如:

    $ podman tag docker.io/library/busybox quay.io/quayadmin/busybox:test
    Copy to Clipboard Toggle word wrap
  3. 将镜像推送到 registry。在这一步后,您可以使用浏览器在存储库中查看标记的镜像。

    $ podman push --tls-verify=false quay.io/quayadmin/busybox:test
    Copy to Clipboard Toggle word wrap

    输出示例

    Getting image source signatures
    Copying blob 6b245f040973 done
    Copying config 22667f5368 done
    Writing manifest to image destination
    Storing signatures
    Copy to Clipboard Toggle word wrap

5.4. 访问 Red Hat Quay 管理

作为 Quay.io 用户,您可以创建自己的存储库,并使其可以被属于实例的其他用户访问。或者,您可以创建组织,并将一组存储库直接关联到该组织,称为 组织存储库

机构存储库与基本存储库不同,组织旨在通过用户组设置共享存储库。在 Quay.io 中,一组用户可以是 团队,也可以是具有相同权限的用户或 单个用户。您还可以通过创建与 Robot Accounts 关联的凭证来访问用户存储库和组织存储库。机器人帐户使得各种容器客户端(如 Docker 或 Podman)可以轻松地访问您的存储库,而无需客户端具有 Quay.io 用户帐户。

5.5. 用户设置

User Settings 页面为用户提供了设置其电子邮件地址、密码、帐户类型、设置桌面通知、选择 avatar、删除帐户、调整 时间机器设置 以及查看账单信息的方法。

5.5.2. 调整用户设置

使用以下步骤调整用户设置。

流程

  • 要更改您的电子邮件地址,请为电子邮件地址选择当前 电子邮件地址。在弹出窗口中输入新电子邮件地址,然后单击 Change Email。在应用更改前,将发送验证电子邮件。
  • 若要更改密码,请单击" 更改密码 "。在两个框中输入新密码,然后单击 更改密码
  • 单击单个帐户 或 帐户类型 旁边的选项,更改 帐户类型。在某些情况下,您可能需要在更改帐户类型前保留机构。
  • 点击桌面通知旁边的选项来调整您的桌面 通知。用户可以启用或禁用此功能。
  • 您可以通过单击 Begin delete 来删除帐户。如果您有活跃的计划,或者您是唯一的管理员的机构的成员,则无法删除帐户。您必须通过输入命名空间来确认删除。

    重要

    删除帐户不可逆,将删除帐户的所有数据,包括存储库、创建构建触发器和通知。

  • 您可以通过单击 Time Machine 旁边的 drop-box 来设置 时间机器 功能。此功能指明标签被删除后的时间长度,即在收集垃圾回收前可在时间机器内访问该标签。选择时间后,单击 Save Expiration Time

5.5.3. 账单信息

您可以查看 用户设置 的账单信息。在这个部分中,提供了以下信息:

  • 当前计划.本节表示您注册的当前计划 Quay.io 计划。它还显示您拥有的私有存储库量。
  • 发票.如果您正处于付费计划,您可以点击 View Invoices 来查看发票列表。
  • 收据.如果您正处于付费计划,您可以选择是否收到您、其他用户或完全取消收据的付款邮件。

第 6 章 镜像标签概述

镜像标签 指的是分配给容器镜像的特定版本或变体的标签或标识符。容器镜像通常由代表镜像的不同部分的多个层组成。镜像标签用于区分镜像的不同版本或提供镜像的附加信息。

镜像标签具有以下优点:

  • 版本和发行版本: 镜像标签表示应用程序或软件的不同版本或发行版本。例如,您可能有一个标记为 v1.0 的镜像,代表更新版本的初始发行版本和 v1.1。这有助于维护镜像版本的明确记录。
  • 回滚和测试 :如果您遇到新镜像版本的问题,您可以通过指定标签来轻松地恢复到以前的版本。这在调试和测试阶段非常有用。
  • 开发环境 :使用不同环境时,镜像标签非常有用。您可以将 dev 标签用于开发版本,qa 进行质量保证测试,以及 prod 用于生产环境,各自具有相应的功能和配置。
  • 持续集成/持续部署(CI/CD) :CI/CD 管道通常使用镜像标签来自动化部署过程。新的代码更改可触发使用特定标签创建新镜像,从而启用无缝更新。
  • 功能分支 :当多个开发人员处理不同的功能或程序错误修复时,他们可以为更改创建不同的镜像标签。这有助于隔离和测试单个功能。
  • 自定义 :您可以使用镜像标签来自定义镜像具有不同配置、依赖项或优化,同时跟踪各个变体。
  • Security and Patching :当发现安全漏洞时,您可以使用更新的标签创建镜像的补丁版本,确保您的系统使用最新的安全版本。
  • Dockerfile 更改 :如果修改了 Dockerfile 或构建过程,您可以使用镜像标签来区分构建之前和更新的 Dockerfile 的镜像。

总体而言,镜像标签提供了一种结构化的方式来管理和组织容器镜像,实现高效的开发、部署和维护工作流。

6.1. 使用 UI 查看镜像标签信息

使用以下步骤使用 v2 UI 查看镜像标签信息。

先决条件

  • 您已将镜像标签推送到存储库。

流程

  1. 在 v2 UI 上,单击 Repositories
  2. 点存储库的名称。
  3. 点标签的名称。您会进入该标签的 Details 页面。该页面显示以下信息:

    • Name
    • 软件仓库
    • 摘要
    • 安全漏洞
    • 创建
    • 修改
    • Size
    • 标签
    • 如何获取镜像标签
  4. Security Report 查看标签的漏洞。您可以扩展公告列来打开 CVE 数据。
  5. Packages 查看标签的软件包。
  6. 单击存储库的名称,以返回到 Tags 页面。

6.2. 使用 UI 将新镜像标签添加到镜像

您可以添加新标签到 Quay.io 中的镜像。

流程

  1. 在 Red Hat Quay v2 UI 仪表板上,单击导航窗格中的 Repositories
  2. 单击具有镜像标签的存储库的名称。
  3. 单击菜单 kebab,然后单击 Add new tag
  4. 输入标签的名称,然后单击 Create tag

    新标签现在列在 Repository Tags 页面中。

6.3. 使用 UI 添加和管理标签

管理员可以使用以下流程为标签添加和管理标签。

流程

  1. 在 v2 UI 控制面板上,单击导航窗格中的 Repositories
  2. 单击具有镜像标签的存储库的名称。
  3. 点镜像菜单 kebab,然后选择 Edit labels
  4. Edit labels 窗口中,单击 Add new label
  5. 使用 key=value 格式输入镜像标签的标签,例如 com.example.release-date=2023-11-14

    注意

    当无法使用 key=value 格式时返回以下错误: Invalid label format, must be key value by =.

  6. 单击框的空格以添加标签。
  7. 可选。添加第二个标签。
  8. Save labels 将标签保存到镜像标签。返回以下通知: 成功创建标签
  9. 可选。点击标签上的同一镜像标签菜单 kebab → Edit labelsX 将其删除;或者,您可以编辑文本。点 Save labels。现在,标签已被删除或编辑。

6.4. 设置标签过期

可以使用标签过期功能,将镜像标签设置为在所选日期和时间从 Quay.io 存储库 过期。这个功能包括以下特征:

  • 当镜像标签过期时,会从存储库中删除。如果它是特定镜像的最后一个标签,则镜像也会被删除。
  • 过期时间基于每个标签设置。它没有作为整个存储库设置。
  • 标签过期或删除后,它不会立即从 registry 中删除。这取决于 时间机器 功能中分配的时间,定义何时永久删除标签或垃圾收集的时间。默认情况下,这个值设置为 14 天,但管理员可以将此时间调整为多个选项之一。直到垃圾回收发生的时间点,可以恢复标签更改。

标签过期时间可通过以下两种方式之一设置:

  • 在创建镜像时,通过在 Dockerfile 中设置 quay.expires-after= 标签。这会将一个时间设置为在构建镜像时过期。
  • 通过在 Quay.io UI 上选择过期日期。例如:

    Change tag expiration under the Options icon or from the EXPIRES column

设置标签过期可帮助自动清理旧的或未使用的标签,有助于减少存储空间。

6.4.1. 从存储库设置标签过期

流程

  1. 在 Red Hat Quay v2 UI 仪表板上,单击导航窗格中的 Repositories
  2. 单击具有镜像标签的存储库的名称。
  3. 点镜像菜单 kebab 并选择 Change expiration
  4. 可选。或者,您可以通过点多个标签框来批量添加过期日期,然后选择 ActionsSet expiration
  5. Change Tags Expiration 窗口中,设置一个到期日期,指定星期几、月份、月份和年份。例如,2023 年 11 月 15 日星期三。或者,您可以点击日历按钮并手动选择日期。
  6. 设置时间,例如 2:30 PM
  7. 单击 Change Expiration 以确认日期和时间。返回以下通知:成功将 标签测试的过期时间设置为 2023 年 11 月 15 日,2:26 PM
  8. 在 Red Hat Quay v2 UI Tags 页面中,您可以看到标签设置为过期。例如:

    Red Hat Quay v2 UI tag expiration

6.4.2. 设置 Dockerfile 中的标签过期

您可以使用 docker label 命令将标签(例如 quay.expires-after=20h )添加到镜像标签中,以便标签在指示的时间后自动过期。接受小时、天或周的以下值:

  • 1h
  • 2d
  • 3w

过期时间从镜像推送到 registry 的时间开始。

流程

  • 输入以下 docker label 命令,为所需的镜像标签添加标签。标签的格式应为 quay.expires-after=20h,以指示该标签应当在 20 小时后过期。使用所需的过期时间替换 20h。例如:

    $ docker label quay.expires-after=20h quay-server.example.com/quayadmin/<image>:<tag>
    Copy to Clipboard Toggle word wrap

6.5. 通过标签或摘要获取镜像

Quay.io 提供多种使用 Docker 和 Podman 客户端拉取镜像的方法。

流程

  1. 导航到存储库的 Tags 页面。
  2. 清单 下,单击 Fetch Tag 图标。
  3. 当出现弹出窗口时,用户会显示以下选项:

    • podman Pull (按标签)
    • Docker Pull (通过标签)
    • podman Pull (按摘要)
    • Docker Pull (按摘要)

      选择任何四个选项之一可返回相应客户端的命令,供用户拉取(pull)镜像。

  4. 单击 Copy Command 以复制该命令,该命令可用于命令行界面(CLI)。例如:

    $ podman pull quay.io/quayadmin/busybox:test2
    Copy to Clipboard Toggle word wrap

6.6. 使用 UI 查看 Red Hat Quay 标签历史记录

Quay.io 提供镜像及其各自镜像标签的综合历史记录。

流程

  1. 在 Red Hat Quay v2 UI 仪表板上,单击导航窗格中的 Repositories
  2. 单击具有镜像标签的存储库的名称。
  3. 单击 Tag History。在这个页面中,您可以执行以下操作:

    • 按标签名称搜索
    • 选择一个日期范围
    • 查看标签更改
    • 查看标签修改日期以及更改的时间

6.7. 删除镜像标签

删除镜像标签会从 registry 中移除镜像的特定版本。

要删除镜像标签,请使用以下流程:

流程

  1. 在 v2 UI 的 Repositories 页面上,单击您要删除的镜像的名称,如 quay/admin/busybox
  2. More Actions 下拉菜单。
  3. Delete

    注意

    如果需要,您可以单击 Make PublicMake Private

  4. 在框中键入 confirm,然后单击 Delete
  5. 删除后,您将返回到 Repositories 页面。

    注意

    根据分配给 时间机器 功能的时间量,可以恢复镜像标签。如需更多信息,请参阅"恢复标签更改"。

6.8. 使用 UI 恢复标签更改

Quay.io 提供了全面的 时间机器 功能,允许旧的镜像标签保留在存储库中设定的时间,以便他们可以恢复对标签所做的更改。此功能允许用户恢复标签更改,如删除标签。

流程

  1. 在 v2 UI 的 Repositories 页面上,单击您要恢复的镜像的名称。
  2. 单击 Tag History 选项卡。
  3. 在时间表中找到镜像标签已更改或删除的时间点。接下来,单击 Revert 下的选项,将标签恢复到其镜像。

第 7 章 查看和导出日志

为 Quay.io 中的所有存储库和命名空间收集活动日志。

查看 Quay.io 的使用日志可为操作和安全目的提供宝贵见解和优势。使用日志可能会显示以下信息:

  • 资源规划 :使用情况日志可以提供镜像拉取、推送和总体流量到 registry 的数量的数据。
  • 用户活动 :日志可帮助您跟踪用户活动,显示哪些用户访问和与注册表中的镜像交互。这对审计、了解用户行为和管理访问控制非常有用。
  • 使用模式 :通过研究使用模式,您可以深入了解哪些镜像很常见,使用哪些版本,以及不少访问哪些镜像。这些信息可帮助优先选择镜像维护和清理工作。
  • 安全审计 :使用情况日志允许您跟踪谁正在访问镜像和时间。这对安全审核、合规性以及调查任何未授权或可疑活动至关重要。
  • Image Lifecycle Management: Logs 可以显示要拉取、推送和删除哪些镜像。此信息对于管理镜像生命周期至关重要,包括弃用旧镜像并确保只使用授权的镜像。
  • 合规性和法规要求:许多行业具有强制跟踪和审计对敏感资源的访问要求。使用日志可帮助您演示遵守此类规范。
  • 识别异常行为 :使用 日志中异常或异常模式可能会表示潜在的安全漏洞或恶意活动。监控这些日志可帮助您更有效地检测和响应安全事件。
  • 趋势分析 :通过时间,使用量日志可以提供对 registry 的使用方式的趋势和见解。这可帮助您对资源分配、访问控制和镜像管理策略做出明智的决定。

可以通过多种方法访问日志文件:

  • 通过 Web UI 查看日志.
  • 导出日志以便可以在外部保存它们。
  • 使用 API 访问日志条目.

要访问日志,您必须具有所选存储库或命名空间的管理权限。

注意

通过 API 一次最多提供 100 个日志结果。要收集更多结果,您必须使用本章中描述的日志导出器功能。

7.1. 查看使用日志

日志可以提供关于使用 registry 的方法的宝贵信息。可以按照以下流程在 v2 UI 上的机构、存储库或命名空间查看日志。

流程

  1. 登录到您的 Red Hat Quay registry。
  2. 导航到您作为管理员的机构、存储库或命名空间。
  3. Logs

    Logs page

  4. 可选。通过向 FromTo box 添加日期来设置查看日志条目的日期范围。
  5. 可选。单击导出,以导出日志。您必须输入一个电子邮件地址或以 http://https:// 开头的有效回调 URL。这个过程可能需要一小时,具体取决于存在的日志数量。

7.2. 使用 UI 导出存储库日志

您可以获取更多日志文件,并使用 Export Logs 功能将其保存在 Quay.io 之外。这个功能有以下优点和限制:

  • 您可以为要从存储库收集的日志选择一个日期。
  • 您可以通过电子邮件附加或定向到回调 URL 来请求您发送日志。
  • 要导出日志,您必须是存储库或命名空间的管理员。
  • 为所有用户保留 30 天日志。
  • 导出日志只收集之前生成的日志数据。它不会流记录数据。
  • 收集日志并提供给您时,如果想要保存数据,则应立即复制这些数据。默认情况下,数据在一小时后过期。

使用以下步骤导出日志。

流程

  1. 选择具有管理员特权的存储库。
  2. Logs 选项卡。
  3. 可选。如果要指定特定的日期,请在 Fromto box 中输入范围。
  4. Export Logs 按钮。此时会出现 Export Usage Logs 弹出窗口,如下所示

    Enter email or callback URL to receive exported logs

  5. 输入电子邮件地址或回调 URL 以接收导出的日志。对于回调 URL,您可以使用指定域的 URL,例如 <webhook.site>。
  6. 选择 Confirm 以开始收集所选日志条目的流程。根据收集的日志记录数据量,这可能需要几分钟到几小时才能完成。
  7. 当日志导出完成后,会出现以下两个事件之一:

    • 收到一封电子邮件,提醒您所请求的导出日志条目的可用警报。
    • 返回来自 webhook URL 的日志导出请求的成功状态。此外,您也提供了一个到导出数据的链接,供您删除以下载日志。

第 8 章 Clair 安全扫描程序

Clair v4 (Clair)是一个开源应用程序,它利用静态代码分析来解析镜像内容和报告影响内容的漏洞。Clair 与 Quay.io 打包,由 Red Hat Quay 开发团队自动启用。

对于 Quay.io 用户,镜像会在推送到您的存储库后自动索引。然后,从 Clair 获取报告,它将镜像与其 CVE 的数据库匹配以报告安全信息。这个过程会在 Quay.io 上自动进行,且不需要手动重新批准。

8.1. 关于 Clair

Clair 使用来自国家漏洞数据库(NVD)的通用漏洞评分系统(CVSS)数据来增强漏洞数据,这是美国政府与安全相关的信息的美国政府存储库,包括各种软件组件和系统中的已知漏洞和安全问题。使用 NVD 中的分数为 Clair 提供以下优点:

  • 数据同步.Clair 可以定期将其漏洞数据库与 NVD 同步。这样可确保它具有最新的漏洞数据。
  • 匹配和增强.Clair 将容器镜像中发现的漏洞的元数据和标识符与来自 NVD 的数据进行比较。这个过程涉及将唯一标识符(如通用漏洞和暴露(CVE) ID)与 NVD 中的条目匹配。找到匹配项时,Clair 可以使用来自 NVD 的更多详细信息(如严重性分数、描述和引用)增强其漏洞信息。
  • 严重性分数.NVD 为漏洞分配严重性分数,如通用漏洞评分系统(CVSS)分数,以指示与每个漏洞相关的潜在影响和风险。通过合并 NVD 的严重性分数,Clair 可以针对它所检测到的漏洞的严重程度提供更多上下文。

如果 Clair 从 NVD 找到漏洞,则向 UI 上的用户报告了对容器镜像中检测到的漏洞的严重性和标准化评估。CVSS 增强数据提供以下优点:

  • 漏洞优先级排序.通过利用 CVSS 分数,用户可以根据自己的严重性来优先选择漏洞,帮助他们首先解决最重要的问题。
  • 评估风险.CVSS 分数可帮助 Clair 用户了解对容器化应用程序造成漏洞的潜在风险。
  • 通信严重性.CVSS 分数为 Clair 用户提供了一种标准化的方式,用于交流不同团队和机构中的漏洞的严重性。
  • 通知修复策略.CVSS 丰富数据可以指导 Quay.io 用户开发适当的补救策略。
  • 合规性和报告.将 CVSS 数据整合到 Clair 生成的报告中,可帮助组织展示其解决安全漏洞并遵守行业标准和法规的承诺。

8.1.1. Clair 漏洞数据库

Clair 使用以下漏洞数据库报告镜像中的问题:

  • Ubuntu Oval 数据库
  • Debian 安全跟踪器
  • Red Hat Enterprise Linux (RHEL) Oval 数据库
  • SUSE Oval 数据库
  • Oracle Oval 数据库
  • alpine SecDB 数据库
  • VMware Photon OS 数据库
  • Amazon Web Services (AWS) UpdateInfo
  • 开源漏洞(OSV)数据库

8.1.2. Clair 支持的依赖项

Clair 支持识别和管理以下依赖项:

  • Java
  • Golang
  • Python
  • Ruby

这意味着它可以分析和报告这些语言中项目依赖的第三方库和软件包,以便正常工作。

当包含 Clair 不支持的语言中软件包的镜像推送到您的存储库时,无法对这些软件包执行漏洞扫描。用户不会收到不支持的依赖项或软件包的分析或安全报告。因此,应考虑以下后果:

  • 安全风险.未扫描的漏洞的依赖项或软件包可能会给您的机构带来安全风险。
  • 合规问题.如果您的机构有特定的安全或合规要求、未扫描或部分扫描,容器镜像可能会导致与某些法规不合规。

    注意

    扫描的镜像被索引,并创建了漏洞报告,但可能会省略某些不支持的语言中的数据。例如,如果您的容器镜像包含 Lua 应用,则不会提供来自 Clair 的反馈,因为 Clair 不会检测到它。它可以检测容器镜像中使用的其他语言,并显示检测到这些语言的 CVE。因此,Clair 镜像 会根据 Clair 支持的内容进行完全扫描

8.2. 使用 UI 查看 Clair 安全扫描

您可以在 UI 上查看 Clair 安全扫描。

流程

  1. 导航到存储库,再单击导航窗格中的 Tags。此页面显示安全扫描的结果。
  2. 要显示有关多架构镜像的更多信息,请点 Child Manifests 以查看扩展视图中的清单列表。
  3. 单击 See Child Manifests 下的相关链接,例如,1 Unknown 以重定向到 Security Scanner 页面。
  4. Security Scanner 页面提供了标签的信息,如镜像的 CVE 易受影响,以及您可能可用的补救选项。
注意

镜像扫描仅列出 Clair 安全扫描程序发现的漏洞。用户对漏洞进行什么操作取决于用户。

8.3. Clair 严重性映射

Clair 提供了漏洞评估和管理的综合方法。它的一个重要功能是安全数据库严重性字符串的规范化。这个过程通过将漏洞的严重性映射到预定义的值集来简化对漏洞的评估。通过这个映射,客户端可以有效地响应漏洞的严重性,而无需对每个安全数据库的唯一严重性字符串进行解码。这些映射的严重性字符串与对应安全数据库中发现的严重性一致,确保漏洞评估的一致性和准确性。

8.3.1. Clair 严重性字符串

Clair 警报具有以下严重性字符串的用户:

  • Unknown
  • negligible
  • Medium
  • High
  • Critical

这些严重性字符串与相关安全数据库中找到的字符串类似。

alpine 映射

alpine SecDB 数据库不提供严重性信息。所有漏洞的严重性都将是 Unknown。

Expand
Alpine 严重性Clair 严重性

*

Unknown

AWS 映射

AWS UpdateInfo 数据库提供严重性信息。

Expand
AWS 严重性Clair 严重性

Medium

重要

High

critical

Critical

Debian 映射

Debian Oval 数据库提供严重性信息。

Expand
Debian 严重性Clair 严重性

*

Unknown

Unimportant

Medium

Medium

High

High

Critical

Oracle 映射

Oracle Oval 数据库提供严重性信息。

Expand
Oracle 严重性Clair 严重性

N/A

Unknown

Medium

重要

High

CRITICAL

Critical

RHEL 映射

RHEL Oval 数据库提供严重性信息。

Expand
RHEL 严重性Clair 严重性

None

Unknown

Moderate(中度)

Medium

重要的

High

Critical

Critical

SUSE 映射

SUSE Oval 数据库提供严重性信息。

Expand
重要性Clair 严重性

None

Unknown

Moderate(中度)

Medium

重要的

High

Critical

Critical

Ubuntu 映射

Ubuntu Oval 数据库提供严重性信息。

Expand
重要性Clair 严重性

Untriaged

Unknown

negligible

negligible

Medium

Medium

High

High

Critical

Critical

OSV 映射
Expand
表 8.1. CVSSv3
基本分数Clair 严重性

0.0

negligible

0.1-3.9

4.0-6.9

Medium

7.0-8.9

High

9.0-10.0

Critical

Expand
表 8.2. CVSSv2
基本分数Clair 严重性

0.0-3.9

4.0-6.9

Medium

7.0-10

High

第 9 章 构建容器镜像

构建容器镜像涉及为容器化应用程序创建蓝图。蓝图依赖于其他公共存储库中的基础镜像,它们定义如何安装和配置应用程序。

注意

因为蓝图依赖于其他公共软件仓库中的镜像,所以它们可能会受到速率限制。因此,您的构建 可能会失败

Quay.io 支持构建 Docker 和 Podman 容器镜像。此功能对于依赖容器和容器编排的开发人员和组织而言非常宝贵。

在 Quay.io 上,此功能在免费和支付的层计划中的工作方式相同。

注意

Quay.io 限制单个用户一次可以提交的同时构建数量。

9.1. 构建上下文

使用 Docker 或 Podman 构建镜像时,将指定目录成为 构建上下文。对于手动构建和构建触发器,这是正确的,因为 Quay.io 创建的 Build 与在本地计算机上运行 docker buildpodman build 不同。

如果未指定目录,Quay.io 构建上下文始终在 子目录中 指定,并在未指定目录时回退到 Build 源的根目录。

触发构建时,Quay.io 构建程序将 Git 存储库克隆到 worker 机器,然后在执行构建前输入构建上下文。

对于基于 .tar 归档的构建,构建工作程序提取存档并输入构建上下文。例如:

提取的构建存档

example
├── .git
├── Dockerfile
├── file
└── subdir
    └── Dockerfile
Copy to Clipboard Toggle word wrap

假设 Extracted Build 归档 是目录结构,它有一个 Github 存储库,名为 example。如果在 Build 触发器设置中没有指定子目录,或者在手动启动构建时指定,则构建在示例目录中运行。

如果在 Build 触发器设置中指定子目录,如 subdir,则构建中只有其中的 Dockerfile 才可以看到。这意味着您不能使用 Dockerfile 中的 ADD 命令来添加文件,因为它不在构建上下文之外。

与 Docker Hub 不同,Dockerfile 是 Quay.io 上的构建上下文的一部分。因此,它不能出现在 .dockerignore 文件中。

9.2. 构建触发器的标签命名

自定义标签可用于 Quay.io。

一个选项是包括分配给每个构建镜像标签的任何字符字符串。或者,您可以使用构建触发器的 Configure Tagging 部分中的以下标签模板来标记带有每个提交信息的镜像:

Configure Tagging

  • ${commit} :已发布的提交的完全 SHA
  • ${parsed_ref.branch}: 分支信息(如果可用)
  • ${parsed_ref.tag}: 标签信息(如果可用)
  • ${parsed_ref.remote} :远程名称
  • ${commit_info.date}: 签发提交的日期
  • ${commit_info.author.username}: 提交作者的用户名
  • ${commit_info.short_sha}: 提交 SHA 的前 7 个字符
  • ${committer.properties.username}: committer 的 Username

此列表未完成,但包含用于标记目的的最有用的选项。您可以在此页面中找到完整的标签模板模式。https://github.com/quay/quay/blob/abfde5b9d2cf7d7145e68a00c9274011b4fe0661/buildtrigger/basehandler.py#L96-L195

如需更多信息,请参阅为 Red Hat Quay 和 Quay.io 构建触发器中设置自定义标签模板

9.3. 跳过源 control-triggered 构建

要指定 Quay.io 构建系统应该忽略提交,请在您的提交消息中添加文本 [skip build][build skip]

9.4. 查看和管理构建

可以在 Quay.io UI 上查看和管理存储库构建。

流程

  1. 导航到 Quay.io 并选择存储库。
  2. 在导航窗格中,选择 Builds

9.5. 创建新构建

默认情况下,Quay.io 用户可以开箱即用的新构建。

先决条件

  • 您已导航到存储库的 Builds 页面。

流程

  1. Builds 页面上,单击 Start New Build
  2. 出现提示时,单击 Upload Dockerfile 以上传 Dockerfile 或在根目录中包含 Dockerfile 的存档。
  3. 单击 Start Build

    注意
    • 目前,在手动启动构建时,用户无法指定 Docker 构建上下文。
    • 目前,BitBucket 在 Red Hat Quay v2 UI 上不支持。
  4. 您将被重定向到构建,可实时查看。等待 Dockerfile 构建完成并推送。
  5. 可选。您可以点 Download Logs 下载日志,或 Copy Logs 来复制日志。
  6. 单击 back 按钮,以返回到 Repository Builds 页面,您可以在其中查看构建历史记录。

    Build history v2 UI

9.6. 构建触发器

构建触发器会在满足触发的条件时调用构建,如源控制推送,创建 webhook 调用,等等。

9.6.1. 创建构建触发器

使用以下步骤使用自定义 Git 存储库创建构建触发器。

注意

以下流程假设您还没有将 Github 凭证包含在 config.yaml 文件中。

先决条件

  • 您已导航到存储库的 Builds 页面。

流程

  1. Builds 页面上,单击 Create Build Trigger
  2. 选择所需的平台,如 Github、BitBucket、Gitlab 或使用自定义 Git 存储库。在本例中,我们使用来自 Github 的自定义 Git 存储库。
  3. 输入自定义 Git 存储库名称,例如 git@github.com:<username>/<repo>.git。然后,单击 Next
  4. 提示时,通过选择其中一个或两个选项来配置标记选项:

    • 使用分支或标签名称 标记清单。在选择此选项时,构建的清单会标记 git commit 的分支或标签名称。
    • 如果在默认分支上添加 latest 标签。在选择此选项时,如果构建在存储库的默认分支中进行了标记,则构建的清单具有 latest。

      另外,您可以添加自定义标记模板。您可以在这里输入多个标签模板,包括使用提交中的简短 SHA ID、时间戳、作者名称、提交者和分支名称作为标签。如需更多信息,请参阅 "Tag naming for Build triggers"。

      配置标记后,点 Next

  5. 出现提示时,选择调用触发器时要构建的 Dockerfile 的位置。如果 Dockerfile 位于 git 存储库的根目录并命名为 Dockerfile,请输入 /Dockerfile 作为 Dockerfile 路径。然后,单击 Next
  6. 出现提示时,选择 Docker 构建的上下文。如果 Dockerfile 位于 Git 存储库的根目录中,请输入 / 作为构建上下文目录。然后,单击 Next
  7. 可选。选择可选的机器人帐户。这可让您在构建过程中拉取私有基础镜像。如果您知道不使用私有基础镜像,您可以跳过这一步。
  8. 点击 Next。检查任何验证警告。如有必要,请在单击 Finish 前修复问题。
  9. 您会被警报,该触发器已被成功激活。请注意,使用这个触发器需要以下操作:

    • 您必须授予以下对 git 存储库的读取访问权限。
    • 您必须将存储库设置为 POST 到以下 URL,才能触发构建。

      保存 SSH Public Key,然后单击 return to <organization_name>/<repository_name>。您将被重定向到存储库的 Builds 页面。

  10. Builds 页面中,您现在有一个 Build 触发器。例如:

    Example Build trigger

9.6.2. 手动触发构建

可以按照以下流程手动触发构建。

流程

  1. Builds 页面中,启动新构建
  2. 出现提示时,选择 Invoke Build Trigger
  3. Run Trigger Now 来手动启动此过程。

    构建启动后,您可以在 Repository Builds 页面上看到 Build ID。

9.7. 设置自定义 Git 触发器

自定义 Git 触发器 是任何 Git 服务器充当构建触发器的通用方法。它依赖于 SSH 密钥和 webhook 端点。其他所有内容都保留给用户实施。

9.7.1. 创建触发器

创建自定义 Git 触发器与创建任何其他触发器类似,但以下情况除外:

  • Quay.io 无法自动检测与触发器搭配使用的正确 Robot 帐户。这必须在创建过程中手动完成。
  • 创建必须完成的触发器后,还有额外的步骤。这些步骤在以下部分中详细介绍。

9.7.2. 自定义触发器创建设置

在创建自定义 Git 触发器时,需要额外的步骤:

  1. 您必须提供在创建触发器时生成的 SSH 公钥的读取访问权限。
  2. 您必须设置 POST 到 Quay.io 端点的 webhook,以触发构建。

通过从 Settingsgear 图标选择 View Credentials,可以使用密钥和 URL。

从您的存储库中查看和修改标签

View and modify tags from your repository

9.7.2.1. SSH 公钥访问

根据 Git 服务器配置,可以通过多种方法安装 Quay.io 为自定义 Git 触发器生成的 SSH 公钥。

例如,Git 文档描述了一个小型服务器设置,在其中将密钥添加到 $HOME/.ssh/authorize_keys 将提供构建器(克隆存储库)的访问权限。对于任何未正式支持的 git 存储库管理软件,通常有一个位置来输入通常标记为 Deploy Keys 的密钥。

9.7.2.2. Webhook

要自动触发构建,必须使用以下格式将 .json 有效负载 POST 到 webhook URL:

这可根据服务器设置的不同方法完成,但在大多数情况下,可以使用 post-receive Git Hook 来完成。

注意

此请求需要一个包含 application/jsonContent-Type 标头才能有效。

Webhook 示例

{
  "commit": "1c002dd",                                   // required
  "ref": "refs/heads/master",                            // required
  "default_branch": "master",                            // required
  "commit_info": {                                       // optional
    "url": "gitsoftware.com/repository/commits/1234567", // required
    "message": "initial commit",                         // required
    "date": "timestamp",                                 // required
    "author": {                                          // optional
      "username": "user",                                // required
      "avatar_url": "gravatar.com/user.png",             // required
      "url": "gitsoftware.com/users/user"                // required
    },
    "committer": {                                       // optional
      "username": "user",                                // required
      "avatar_url": "gravatar.com/user.png",             // required
      "url": "gitsoftware.com/users/user"                // required
    }
  }
}
Copy to Clipboard Toggle word wrap

第 10 章 通知概述

Quay.io 支持向存储库添加通知,以了解在存储库生命周期中发生的各种事件。

第 11 章 开放容器计划支持

容器注册表最初设计为支持 Docker 镜像格式中的容器镜像。为了促进 Docker 之外的其他运行时,还创建了开放容器项目(OCI),以提供与容器运行时和镜像格式相关的标准化。大多数容器注册表支持 OCI 标准化,因为它基于 Docker 镜像清单 V2、Schema 2 格式。

除了容器镜像外,还出现各种工件不仅支持单个应用程序,而且支持整个 Kubernetes 平台。这些范围包括用于安全性和监管的 Open Policy Agent (OPA)策略,它们有助于应用程序部署中的 Helm chart 和 Operator。

Quay.io 是一个私有容器注册表,不仅存储容器镜像,还支持整个工具生态系统,以帮助管理容器。Quay.io 会努力与 OCI 1.1 镜像 和分发规格 兼容,并支持常见的介质类型,如 Helm chart (只要它们使用支持 OCI 的 Helm 版本)以及容器镜像清单或层组件中的各种任意介质类型。当 registry 对接受的介质类型更严格时,对 OCI 介质类型的支持与之前的 Quay.io 迭代不同。由于 Quay.io 现在与更广泛的介质类型一起工作,包括之前超出其支持范围的用户,现在它现在比标准容器镜像格式不仅仅是标准容器镜像格式,还具有新兴或不协调性类型。

除了对 novel 介质类型的扩展支持外,Quay.io 还可确保与 Docker 镜像(包括 V2_2 和 V2_1 格式)的兼容性。这种与 Docker V2_2 和 V2_1 镜像的兼容性演示了 Quay.io 为 Docker 用户提供无缝体验的承诺。此外,Quay.io 继续扩展对 Docker V1 拉取的支持,满足可能仍然依赖这个较早版本的 Docker 镜像的用户。

默认启用对 OCI 工件的支持。以下示例演示了如何使用一些介质类型,这些类型可用作使用其他 OCI 介质类型的示例。

11.1. Helm 和 OCI 的先决条件

Helm 简化应用程序是如何打包和部署的。Helm 使用名为 Charts 的打包格式,其中包含代表应用程序的 Kubernetes 资源。Quay.io 支持 Helm chart,只要它们是 OCI 支持的版本。

使用以下步骤预先配置您的系统以使用 Helm 和其他 OCI 介质类型。

最新版本的 Helm 可以在 Helm releases 页面中下载。

11.2. 使用 Helm chart

使用以下示例,从红帽社区实践(CoP)存储库下载并推送 etherpad chart。

先决条件

  • 您已登录到 Quay.io。

流程

  1. 输入以下命令添加 chart 存储库:

    $ helm repo add redhat-cop https://redhat-cop.github.io/helm-charts
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令在本地从 chart 仓库中更新可用 chart 的信息:

    $ helm repo update
    Copy to Clipboard Toggle word wrap
  3. 输入以下命令从存储库中提取 chart:

    $ helm pull redhat-cop/etherpad --version=0.0.4 --untar
    Copy to Clipboard Toggle word wrap
  4. 输入以下命令将 chart 打包到 chart 归档中:

    $ helm package ./etherpad
    Copy to Clipboard Toggle word wrap

    输出示例

    Successfully packaged chart and saved it to: /home/user/linux-amd64/etherpad-0.0.4.tgz
    Copy to Clipboard Toggle word wrap
  5. 使用 helm registry login 登录 Quay.io:

    $ helm registry login quay.io
    Copy to Clipboard Toggle word wrap
  6. 使用 helm push 命令将 chart 推送到存储库:

    helm push etherpad-0.0.4.tgz oci://quay.io/<organization_name>/helm
    Copy to Clipboard Toggle word wrap

    输出示例:

    Pushed: quay370.apps.quayperf370.perfscale.devcluster.openshift.com/etherpad:0.0.4
    Digest: sha256:a6667ff2a0e2bd7aa4813db9ac854b5124ff1c458d170b70c2d2375325f2451b
    Copy to Clipboard Toggle word wrap
  7. 通过删除本地副本,然后从存储库拉取 chart 来确保推送可以正常工作:

    $ rm -rf etherpad-0.0.4.tgz
    Copy to Clipboard Toggle word wrap
    $ helm pull oci://quay.io/<organization_name>/helm/etherpad --version 0.0.4
    Copy to Clipboard Toggle word wrap

    输出示例:

    Pulled: quay370.apps.quayperf370.perfscale.devcluster.openshift.com/etherpad:0.0.4
    Digest: sha256:4f627399685880daf30cf77b6026dc129034d68c7676c7e07020b70cf7130902
    Copy to Clipboard Toggle word wrap

11.3. Cosign OCI 支持

Cosign 是一个可用于签署和验证容器镜像的工具。它使用 ECDSA-P256 签名算法和红帽的简单签名有效负载格式来创建存储在 PKIX 文件中的公钥。私钥存储为加密的 PEM 文件。

Cosign 目前支持以下内容:

  • 硬件和 KMS 签名
  • bring-your-own PKI
  • OIDC PKI
  • 内置二进制透明性和时间戳服务

使用以下步骤直接安装 Cosign。

先决条件

  • 已安装 Go 版本 1.16 或更高版本。

流程

  1. 输入以下命令 直接安装 Cosign :

    $ go install github.com/sigstore/cosign/cmd/cosign@v1.0.0
    Copy to Clipboard Toggle word wrap

    输出示例

    go: downloading github.com/sigstore/cosign v1.0.0
    go: downloading github.com/peterbourgon/ff/v3 v3.1.0
    Copy to Clipboard Toggle word wrap

  2. 输入以下命令为 Cosign 生成键值对:

    $ cosign generate-key-pair
    Copy to Clipboard Toggle word wrap

    输出示例

    Enter password for private key:
    Enter again:
    Private key written to cosign.key
    Public key written to cosign.pub
    Copy to Clipboard Toggle word wrap

  3. 输入以下命令为键值对签名:

    $ cosign sign -key cosign.key quay.io/user1/busybox:test
    Copy to Clipboard Toggle word wrap

    输出示例

    Enter password for private key:
    Pushing signature to: quay-server.example.com/user1/busybox:sha256-ff13b8f6f289b92ec2913fa57c5dd0a874c3a7f8f149aabee50e3d01546473e3.sig
    Copy to Clipboard Toggle word wrap

    如果您遇到 error: signing quay-server.example.com/user1/busybox:test: get remote image: GET https://quay-server.example.com/v2/user1/busybox/manifests/test: UNAUTHORIZED: 访问所请求的资源没有授权;映射[] 错误,因为 Cosign 依赖于 ~./docker/config.json 进行授权,您可能需要执行以下命令:

    $ podman login --authfile ~/.docker/config.json quay.io
    Copy to Clipboard Toggle word wrap

    输出示例

    Username:
    Password:
    Login Succeeded!
    Copy to Clipboard Toggle word wrap

  4. 输入以下命令查看更新的授权配置:

    $ cat ~/.docker/config.json
    {
    	"auths": {
    		"quay-server.example.com": {
    			"auth": "cXVheWFkbWluOnBhc3N3b3Jk"
    		}
    	}
    Copy to Clipboard Toggle word wrap

11.4. 安装和使用 Cosign

使用以下步骤直接安装 Cosign。

先决条件

  • 已安装 Go 版本 1.16 或更高版本。
  • 您已在 config.yaml 文件中将 FEATURE_GENERAL_OCI_SUPPORT 设置为 true

流程

  1. 输入以下命令 直接安装 Cosign :

    $ go install github.com/sigstore/cosign/cmd/cosign@v1.0.0
    Copy to Clipboard Toggle word wrap

    输出示例

    go: downloading github.com/sigstore/cosign v1.0.0
    go: downloading github.com/peterbourgon/ff/v3 v3.1.0
    Copy to Clipboard Toggle word wrap

  2. 输入以下命令为 Cosign 生成键值对:

    $ cosign generate-key-pair
    Copy to Clipboard Toggle word wrap

    输出示例

    Enter password for private key:
    Enter again:
    Private key written to cosign.key
    Public key written to cosign.pub
    Copy to Clipboard Toggle word wrap

  3. 输入以下命令为键值对签名:

    $ cosign sign -key cosign.key quay.io/user1/busybox:test
    Copy to Clipboard Toggle word wrap

    输出示例

    Enter password for private key:
    Pushing signature to: quay-server.example.com/user1/busybox:sha256-ff13b8f6f289b92ec2913fa57c5dd0a874c3a7f8f149aabee50e3d01546473e3.sig
    Copy to Clipboard Toggle word wrap

    如果您遇到 error: signing quay-server.example.com/user1/busybox:test: get remote image: GET https://quay-server.example.com/v2/user1/busybox/manifests/test: UNAUTHORIZED: 访问所请求的资源没有授权;映射[] 错误,因为 Cosign 依赖于 ~./docker/config.json 进行授权,您可能需要执行以下命令:

    $ podman login --authfile ~/.docker/config.json quay.io
    Copy to Clipboard Toggle word wrap

    输出示例

    Username:
    Password:
    Login Succeeded!
    Copy to Clipboard Toggle word wrap

  4. 输入以下命令查看更新的授权配置:

    $ cat ~/.docker/config.json
    {
    	"auths": {
    		"quay-server.example.com": {
    			"auth": "cXVheWFkbWluOnBhc3N3b3Jk"
    		}
    	}
    Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat