Docker Hub 上的軟體構件
您可以使用 Docker Hub 儲存任何類型的軟體構件,而不僅僅是容器映像檔。軟體構件是指軟體開發過程中產生的、有助於軟體創建、維護或理解的任何項目。Docker Hub 通過利用映像檔清單 (manifest) 中的 config 屬性來支援 OCI 構件。
什麼是 OCI 構件?
OCI 構件可以是任何與軟體應用程式相關的任意檔案。一些範例包括:
- Helm Charts
- 軟體物料清單 (SBOM)
- 數位簽章
- 起源數據 (Provenance data)
- 證明
- 弱點報告
Docker Hub 支援 OCI 構件意味著您可以使用同一個儲存庫來儲存和分發容器映像檔以及其他資產。
OCI 構件的一個常見用例是 Helm charts。Helm charts 是一種定義應用程式 Kubernetes 部署的封裝格式。由於 Kubernetes 是熱門的容器執行環境,將應用程式映像檔和部署模板託管在同一個地方非常合理。
在 Docker Hub 中使用 OCI 構件
您在 Docker Hub 上管理 OCI 構件的方式與管理容器映像檔的方式類似。
推送和拉取 OCI 構件到登錄檔 (registry) 是通過登錄檔客戶端完成的。ORAS CLI 是一個提供在登錄檔中管理 OCI 構件功能的命令列工具。如果您使用 Helm charts,Helm CLI 提供了內建功能,用於向登錄檔推送和從中拉取 charts。
登錄檔客戶端會發出 HTTP 請求到 Docker Hub 登錄檔 API。該登錄檔 API 符合 OCI 分發規範中定義的標準協定。
範例
本節展示了一些在 Docker Hub 中使用 OCI 構件的範例。
推送 Helm Chart
以下步驟展示了如何將 Helm chart 作為 OCI 構件推送至 Docker Hub。
先決條件
- Helm 3.0.0 或更高版本
步驟
建立一個新的 Helm chart
$ helm create demo此命令會產生一個樣板模板 chart。
將 Helm chart 封裝成 tarball。
$ helm package demo Successfully packaged chart and saved it to: /Users/hubuser/demo-0.1.0.tgz使用您的 Docker 憑證登入 Docker Hub。
$ helm registry login registry-1.docker.io -u hubuser將 chart 推送至 Docker Hub 儲存庫。
$ helm push demo-0.1.0.tgz oci://registry-1.docker.io/docker這會將 Helm chart tarball 上傳到
docker命名空間下的demo儲存庫。前往 Docker Hub 上的儲存庫頁面。頁面的 **Tags** 部分會顯示 Helm chart 標籤。

選擇標籤名稱以進入該標籤的頁面。
該頁面列出了一些處理 Helm charts 的實用命令。

推送儲存卷 (Volume)
以下步驟展示了如何將容器儲存卷作為 OCI 構件推送至 Docker Hub。
先決條件
- ORAS CLI 0.15 或更高版本
步驟
建立一個虛擬檔案用作儲存卷內容。
$ touch myvolume.txt使用 ORAS CLI 登入 Docker Hub。
$ oras login -u hubuser registry-1.docker.io將檔案推送至 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 能識別該構件為容器儲存卷。前往 Docker Hub 上的儲存庫頁面。該頁面上的 **Tags** 部分會顯示儲存卷標籤。

推送通用構件檔案
以下步驟展示了如何將通用 OCI 構件推送至 Docker Hub。
先決條件
- ORAS CLI 0.15 或更高版本
步驟
建立您的構件檔案。
$ touch myartifact.txt使用 ORAS CLI 登入 Docker Hub。
$ oras login -u hubuser registry-1.docker.io將檔案推送至 Docker Hub。
$ oras push registry-1.docker.io/docker/demo:0.0.1 myartifact.txt:text/plain前往 Docker Hub 上的儲存庫頁面。該頁面上的 **Tags** 部分會顯示構件標籤。
