Docker Hub 上的软件工件

您可以使用 Docker Hub 来存储任何类型的软件工件,而不仅仅是 容器镜像。软件工件是在软件期间生成的任何项目 有助于创建、维护或 了解软件。Docker Hub 通过利用 OCI 对象支持 镜像清单上的 config 属性。

什么是 OCI 构件?

OCI 对象是与软件应用程序相关的任何任意文件。一些 示例包括:

  • Helm 图表
  • 软件物料清单 (SBOM)
  • 数字签名
  • 来源数据
  • 证明
  • 漏洞报告

支持 OCI 构件的 Docker Hub 意味着您可以使用一个资料档案库来存储 以及分发容器镜像和其他资产。

OCI 构件的一个常见用例是 Helm 图表。Helm 图表是一种打包 格式,用于定义应用程序的 Kubernetes 部署。自 Kubernetes 以来 是容器的常用运行时,因此托管应用程序镜像是有意义的 和部署模板都集中在一个位置。

将 OCI 对象与 Docker Hub 结合使用

您可以像管理容器一样在 Docker Hub 上管理 OCI 对象 镜像。

将 OCI 对象推送到注册表和从注册表中拉取是使用 Registry 客户端。ORAS CLI 是一个命令行工具,提供管理 注册表中的 OCI 构件。如果您使用 Helm 图表,Helm CLI 会提供内置的 用于将图表推送到注册表和从注册表拉取图表的功能。

注册表客户端调用对 Docker Hub 注册表 API 的 HTTP 请求。这 注册表 API 符合 OCI 分发规范中定义的标准协议。

例子

本节介绍有关将 OCI 对象与 Docker Hub 结合使用的一些示例。

推送 Helm Chart

以下过程显示如何将 Helm 图表作为 OCI 构件推送到 Docker Hub 的 Docker Hub 中。

先决条件:

  • Helm 版本 3.0.0 或更高版本

步骤:

  1. 创建新的 Helm Chart

    $ helm create demo
    

    此命令将生成样板模板图表。

  2. 将 Helm Chart 打包到 tarball 中。

    $ helm package demo
    Successfully packaged chart and saved it to: /Users/hubuser/demo-0.1.0.tgz
    
  3. 使用您的 Docker 凭证通过 Helm 登录到 Docker Hub。

    $ helm registry login registry-1.docker.io -u hubuser
    
  4. 将 chart 推送到 Docker Hub 存储库。

    $ helm push demo-0.1.0.tgz oci://registry-1.docker.io/docker
    

    这会将 Helm Chart tarball 上传到命名空间中的存储库。demodocker

  5. 转到 Docker Hub 上的存储库页面。页面的 Tags 部分 显示 Helm 图表标签。

    List of repository tags
  6. 选择标签名称以转到该标签的页面。

    该页面列出了一些用于处理 Helm Chart 的有用命令。

    Tag page of a Helm chart artifact

推送卷

以下过程显示如何将容器卷作为 OCI 构件推送到 Docker Hub 的 Docker Hub 中。

先决条件:

  • ORAS CLI 版本 0.15 或更高版本

步骤:

  1. 创建要用作卷内容的虚拟文件。

    $ touch myvolume.txt
    
  2. 使用 ORAS CLI 登录到 Docker Hub。

    $ oras login -u hubuser registry-1.docker.io
    
  3. 将文件推送到 Docker Hub。

    $ oras push registry-1.docker.io/docker/demo:0.0.1 \
      --artifact-type=application/vnd.docker.volume.v1+tar.gz \
      myvolume.txt:text/plain
    

    这会将卷上传到命名空间中的存储库。该标志指定了一种特殊的媒体类型,该媒体类型使 Docker Hub 将构件识别为容器卷。demodocker--artifact-type

  4. 转到 Docker Hub 上的存储库页面。该页面上的 Tags 部分 显示 volume 标签。

    Repository page showing a volume in the tag list

推送通用构件文件

以下过程显示如何将通用 OCI 对象推送到 Docker Hub。

先决条件:

  • ORAS CLI 版本 0.15 或更高版本

步骤:

  1. 创建您的构件文件。

    $ touch myartifact.txt
    
  2. 使用 ORAS CLI 登录到 Docker Hub。

    $ oras login -u hubuser registry-1.docker.io
    
  3. 将文件推送到 Docker Hub。

    $ oras push registry-1.docker.io/docker/demo:0.0.1 myartifact.txt:text/plain
    
  4. 转到 Docker Hub 上的存储库页面。该页面上的 Tags 部分 显示 artifact 标签。

    Repository page showing an artifact in the tag list