Docker Hub 上的软件工件

您可以使用 Docker Hub 存储任何类型的软件工件,而不仅仅是容器镜像。软件工件是软件开发过程中产生的任何有助于创建、维护或理解软件的项。Docker Hub 通过利用镜像清单中的 `config` 属性来支持 OCI 工件。

什么是 OCI 工件?

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

  • Helm chart
  • 软件物料清单 (SBOM)
  • 数字签名
  • 出处数据
  • 证明
  • 漏洞报告

Docker Hub 支持 OCI 工件,这意味着您可以使用一个仓库来存储和分发容器镜像以及其他资产。

OCI 工件的一个常见用例是 Helm chart。Helm chart 是一种打包格式,它定义了应用程序的 Kubernetes 部署。由于 Kubernetes 是一个流行的容器运行时,因此将应用程序镜像和部署模板托管在同一位置是有意义的。

将 OCI 工件与 Docker Hub 结合使用

您可以在 Docker Hub 上以与容器镜像类似的方式管理 OCI 工件。

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

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

示例

本节展示了一些使用 Docker Hub 上的 OCI 工件的示例。

推送 Helm chart

以下过程演示了如何将 Helm chart 作为 OCI 工件推送到 Docker Hub。

先决条件

  • Helm 3.0.0 或更高版本

步骤

  1. 创建一个新的 Helm chart

    $ helm create demo
    

    此命令生成样板模板 chart。

  2. 将 Helm chart 打包成一个 tarball。

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

    $ 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 上传到 `docker` 命名空间中的 `demo` 仓库。

  5. 转到 Docker Hub 上的仓库页面。页面的 **Tags** 部分显示 Helm chart 标签。

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

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

    Tag page of a Helm chart artifact

推送卷

以下过程演示了如何将容器卷作为 OCI 工件推送到 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` 命名空间中的 `demo` 仓库。`--artifact-type` 标志指定了一个特殊的媒体类型,使 Docker Hub 将该工件识别为容器卷。

  4. 转到 Docker Hub 上的仓库页面。该页面上的 **Tags** 部分显示卷标签。

    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** 部分显示工件标签。

    Repository page showing an artifact in the tag list
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.