Docker Hub 上的軟體構件

您可以使用 Docker Hub 來儲存任何種類的軟體構件,而不僅僅是容器映像檔。軟體構件是軟體開發過程中產生的任何項目,有助於軟體的建立、維護或理解。 Docker Hub 透過利用映像檔資訊清單上的 config 屬性來支援 OCI 構件。

什麼是 OCI 構件?

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

  • Helm Chart
  • 軟體物料清單 (SBOM)
  • 數位簽章
  • 來源資料
  • 證明
  • 弱點報告

Docker Hub 支援 OCI 構件意味著您可以使用一個儲存庫來儲存和發佈容器映像檔以及其他資產。

OCI 構件的常見用例是 Helm Chart將 OCI 構件與 Docker Hub 搭配使用

您在 Docker Hub 上管理 OCI 構件的方式與容器映像檔類似。

使用登錄檔用戶端將 OCI 構件推送到登錄檔或從登錄檔中提取。 ORAS CLIHelm CLIOCI 發佈規格範例

本節顯示一些將 OCI 構件與 Docker Hub 搭配使用的範例。

推送 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 認證,使用 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 上傳到 docker 命名空間中的 demo 儲存庫。

  5. 前往 Docker Hub 上的儲存庫頁面。頁面的**標籤**區段會顯示 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 上的儲存庫頁面。該頁面上的**標籤**區顯示磁碟區標籤。

    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