Docker Hub 上的 OCI 工件

你可以使用 Docker Hub 儲存任何型別的軟體工件,而不僅僅是容器映象。Docker Hub 透過利用映象清單上的 config 屬性來支援 OCI 工件。

什麼是 OCI 工件?

OCI 工件是與軟體應用程式相關的任何任意檔案。一些示例包括

  • Helm Charts
  • 軟體物料清單(SBOM)
  • 數字簽名
  • 來源資料
  • 證明
  • 漏洞報告

Docker Hub 支援 OCI 工件意味著你可以使用一個倉庫來儲存和分發容器映象以及其他資產。

OCI 工件的一個常見用例是 Helm Charts. Helm Charts 是一種打包格式,定義了應用程式的 Kubernetes 部署。由於 Kubernetes 是容器的流行執行時,因此將應用程式映象和部署模板託管在一個地方是有意義的。

使用 Docker Hub 與 OCI 工件

你管理 Docker Hub 上的 OCI 工件的方式與管理容器映象類似。

推送和拉取 OCI 工件到/從登錄檔是使用登錄檔客戶端完成的。 ORAS CLI 是一個命令列工具,提供了在登錄檔中管理 OCI 工件的功能。如果你使用 Helm Charts, Helm CLI 提供了將圖表推送到/拉取自注冊表的內建功能。

登錄檔客戶端呼叫 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
    

    此命令會生成一個樣板模板圖表。

  2. 將 Helm Chart 打包成一個 tarball。

    $ helm package demo
    Successfully packaged chart and saved it to: /Users/hubuser/demo-0.1.0.tgz
    
  3. 使用你的 Docker ID 憑據登入 Docker Hub 到 Helm。

    $ helm registry login registry-1.docker.io -u hubuser
    
  4. 將圖表推送到 Docker Hub 倉庫。

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

    這會將 Helm Chart tarball 上傳到 docker 名稱空間中的 demo 倉庫。

  5. 轉到 Docker Hub 上的倉庫頁面。頁面的“標籤”部分顯示了 Helm Chart 標籤。

    List of repository tags
  6. 選擇標籤名稱以轉到該標籤的頁面。

    該頁面列出了幾個用於處理 Helm Charts 的有用命令。

    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 上的倉庫頁面。該頁面上的“標籤”部分顯示了卷標籤。

    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 上的倉庫頁面。該頁面上的“標籤”部分顯示了工件標籤。

    Repository page showing an artifact in the tag list