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