Databricks CLI 提供輔助指令 databricks air images push,用於結合 Docker 認證、映像標籤及推送至 Artifact Registry。 它會自動偵測登錄區域。 你可以使用這個輔助工具,取代 Artifact Registry 指南中的手動步驟。 這個助手不會建立映像檔或提交工作負載。
Prerequisites
- 安裝 Databricks CLI 版本 1.19.0 或更高版本。 請參閱安裝或更新 Databricks CLI。
- 在你想存放映像的工作區設置 Artifact Registry。 請參閱「開始使用文物登錄」。
- 建立或選擇目的地目錄與架構,並取得 所需的 Artifact 登錄權限。
- 在你的本機上安裝並啟動 Docker。 Docker 必須在你的
PATH.
設定工作區認證
建立或刷新你想存放影像的工作區 OAuth 設定檔:
databricks auth login --profile my-databricks-profile
Docker 憑證助手需要這個工作空間的 OAuth 設定檔。 有關支援的認證方法,請參見 Set up Docker Authentication。
推送本地映像
例如,將一個名為 my-training-image:v1main.ml.training:v1:
databricks air images push \
--profile my-databricks-profile \
--source my-training-image:v1 \
--catalog main \
--schema ml \
--artifact training:v1
這個指令會印出 Unity 目錄的映像檔名稱,就像 environment.unity_catalog_image 你的工作負載 YAML 一樣使用。 在此範例中,請使用 main.ml.training:v1,如 在工作負載中使用 Docker 映像 所示。
當本地原始影像存在時,輔助工具會重用。 否則,它會拉取 linux/amd64 的來源映像。 新增 --pull,即可從登錄重新整理來源映像,即使該映像在本機已可使用。 圖片必須使用 linux/amd64。 在推送前,先重建一個不相容的本地映像檔。 如果來源映像檔位於私有登錄檔中,請先讓 Docker 向該登錄檔完成驗證,再執行輔助工具。
要互動式輸入圖片細節,請執行 databricks air images push --profile my-databricks-profile,但不要使用圖片旗標。 執行 databricks air images push --help 以查看所有選項。
從另一個登錄推送映像檔
你也可以使用 CLI 助手,將現有映像檔從另一個容器映像檔登錄庫複製到 Artifact Registry。
以下範例使用私有 Amazon Elastic Container Registry (ECR) 儲存庫作為來源。 以這個例子來說,安裝並設定 AWS CLI 的憑證,這些憑證可以驗證到 ECR 並拉取原始映像檔。 這些 AWS 憑證與您的 Databricks 設定檔彼此獨立。
首先,向來源 ECR 登錄驗證 Docker。 將範例 AWS 帳號 ID、區域、儲存庫和圖片標籤替換成你自己的數值。 AWS 區域必須與來源 ECR 登錄檔相符,而非目標 Databricks 工作區。 請參閱 AWS 文件中的 私有登錄檔驗證。
aws ecr get-login-password --region us-west-2 | \
docker login --username AWS --password-stdin \
123456789012.dkr.ecr.us-west-2.amazonaws.com
接著將完整的 ECR 映像 URI 作為 --source 傳遞:
databricks air images push \
--profile my-databricks-profile \
--source 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-training-image:v1 \
--catalog main \
--schema ml \
--artifact training:ecr-v1 \
--pull
即使映像已快取於本地,旗 --pull 標仍會從 ECR 擷取 linux/amd64 影像。 輔助工具會利用你本地的 Docker 安裝來拉取、標記並推送映像檔。 ECR 中的原始影像未曾更改。 推送成功後,在你的工作負載中設定 environment.unity_catalog_image 為 main.ml.training:ecr-v1 YAML。