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 或更高版本
步驟
建立一個新的 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 with Helm。
$ 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 chart 的有用命令。
推送卷
以下過程演示瞭如何將容器卷作為 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** 部分顯示工件標籤。