Databricks CLIは、Docker認証、イメージタグ付け、Artifact Registryへのプッシュを組み合わせるためのヘルパーコマンド databricks air images push を提供します。 レジストリ リージョンを自動的に検出します。 このヘルパーは、 アーティファクトレジストリガイドの手動ステップの代わりに使えます。 ヘルパーはイメージの作成やワークロードの提出を行いません。
Prerequisites
- Databricks CLIバージョン1.19.0以上をインストールしてください。 「Databricks CLI のインストールまたは更新」を参照してください。
- イメージを保存したいワークスペースでArtifact Registryを設定してください。 「 アーティファクトレジストリで始める」をご覧ください。
- 宛先カタログとスキーマを作成または選択し、 必要なアーティファクトレジストリの権限を取得します。
- ローカルマシンにDockerをインストールして起動してください。 ご利用の
PATHには Docker がインストールされている必要があります。
ワークスペース認証の設定
画像を保存したいワークスペース用のワークスペースOAuthプロファイルを作成または更新してください:
databricks auth login --profile my-databricks-profile
Dockerの認証ヘルパーはこのワークスペースのOAuthプロファイルを必要とします。 サポートされている認証方法については、Docker 認証の設定を参照してください。
ローカル画像をプッシュする
たとえば、my-training-image:v1 という名前のローカル イメージを main.ml.training:v1 にプッシュする方法:
databricks air images push \
--profile my-databricks-profile \
--source my-training-image:v1 \
--catalog main \
--schema ml \
--artifact training:v1
このコマンドは、ワークロード YAML で environment.unity_catalog_image として使用する Unity Catalog のイメージ名を表示します。 たとえば、ワークロードでの Docker イメージの使用に示されているように、main.ml.training:v1 を使用します。
ヘルパーは、ローカルのソース イメージが存在する場合、それを再利用します。 そうでない場合は、linux/amd64 のソース イメージをプルします。
--pull を追加すると、ソース イメージがローカルに存在する場合でも、レジストリからその画像を再読み込みします。 イメージには linux/amd64 を使用する必要があります。 そのプラットフォーム用に、互換性のないローカルイメージを再構築してからプッシュしてください。 ソース イメージがプライベート レジストリにある場合は、ヘルパーを実行する前に、Docker をそのレジストリに対して認証してください。
画像の詳細をインタラクティブに入力するには、画像フラグなしで databricks air images push --profile my-databricks-profile 実行してください。 すべてのオプションを表示するには、databricks air images push --help を実行します。
別のレジストリからイメージをプッシュする
また、CLI ヘルパーを使用して、別の Container Registry にある既存のイメージを Artifact Registry にコピーすることもできます。
次の例では、非公開の Amazon Elastic Container Registry (ECR) リポジトリをソースとして使用しています。 たとえば、ECR への認証を行い、ソース イメージを取得できる資格情報を使用して、AWS CLI をインストール、構成します。 これらのAWS認証情報は、Databricksのプロファイルとは別個のものです。
まず、Docker をソースとなる ECR レジストリに対して認証します。 たとえば挙げられている AWS アカウント ID、リージョン、リポジトリ、イメージ タグを、ご利用の値に置き換えてください。 AWS リージョンは、宛先の Databricks ワークスペースではなく、ソースとなる ECR レジストリと一致している必要があります。 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内のソースイメージは変更されていません。 プッシュが成功したら、ワークロード YAML 内で environment.unity_catalog_image を main.ml.training:ecr-v1 に設定してください。