Databricks CLIを使用してイメージをプッシュする
Databricks CLI は、Docker 認証、イメージのタグ付け、および アーティファクトレジストリ へのプッシュを組み合わせるためのヘルパー コマンド databricks air images push を提供します。レジストリ リージョンを自動的に検出します。アーティファクトレジストリ ガイドの手動ステップの代わりに、このヘルパーを使用できます。ヘルパーは、イメージを構築したり、ワークロードをサブミットしたりしません。
前提条件
- Databricks CLIバージョン1.19.0以降をインストールします。「Databricks CLIのインストールまたは更新」を参照してください。
- イメージを格納するワークスペースでアーティファクトレジストリをセットアップします。アーティファクト レジストリを使ってみるを参照してください。
- 送信先カタログとスキーマを作成または選択し、必要なアーティファクトレジストリ権限を取得します。
- ローカルマシンにDockerをインストールして起動します。Dockerを
PATHで使用できる必要があります。
ワークスペース認証の構成
イメージを保存するワークスペースのワークスペース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ヘルパーを使用して、別のコンテナーレジストリからアーティファクトレジストリに既存のイメージをコピーすることもできます。
次の例では、ソースとしてプライベート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 に設定します。