Aller au contenu principal

Envoyer des images avec la CLI Databricks

La CLI Databricks fournit la commande d'assistance databricks air images push pour combiner l'authentification Docker, le balisage d'image et l'envoi vers Artifact Registry. Il détecte automatiquement la région du registre. Vous pouvez utiliser cet assistant au lieu des étapes manuelles dans le guide d'Artifact Registry. L'assistant ne crée pas d'images et ne soumet pas de charges de travail.

Prérequis​

Configurer l'authentification du Workspace​

Créer ou refresh un profil OAuth Workspace pour le workspace dans lequel vous souhaitez stocker l'image :

Shell
databricks auth login --profile my-databricks-profile

L’assistant d’identification Docker requiert ce profil OAuth du workspace. Pour connaître les méthodes d’authentification prises en charge, consultez la page Configurer l’authentification Docker.

Transférer une image locale​

Par exemple, envoyez une image locale nommée my-training-image:v1 vers main.ml.training:v1:

Shell
databricks air images push \
--profile my-databricks-profile \
--source my-training-image:v1 \
--catalog main \
--schema ml \
--artifact training:v1

La commande affiche le nom de l'image Unity Catalog à utiliser comme environment.unity_catalog_image dans votre fichier YAML de charge de travail. Pour cet exemple, utilisez main.ml.training:v1, comme indiqué dans Utiliser une image Docker dans une charge de travail.

L’assistant réutilise une image source locale lorsqu’il y en a une. Sinon, l’image source est extraite pour linux/amd64. Ajoutez --pull pour refresh une image source à partir de son registre, même si elle est disponible localement. Les images doivent utiliser linux/amd64. Reconstruisez une image locale incompatible pour cette plate-forme avant de l’envoyer. Si l’image source se trouve dans un registre privé, authentifiez Docker auprès de ce registre avant d’exécuter le programme d’assistance.

Pour saisir les détails de l'image de manière interactive, exécutez databricks air images push --profile my-databricks-profile sans les options d'image. Exécutez databricks air images push --help pour afficher toutes les options.

Envoyer une image depuis un autre registre​

Vous pouvez également utiliser l’assistant CLI pour copier une image existante d’un autre registre de conteneurs vers Artifact Registry.

L'exemple suivant utilise un repository Amazon Elastic Container Registry (ECR) privé comme source. Pour cet exemple, installez et configurez l'AWS CLI avec des identifiants capables de s'authentifier auprès d'ECR et de récupérer l'image source. Ces identifiants AWS sont distincts de votre profil Databricks.

Tout d'abord, authentifiez Docker auprès du registre ECR source. Remplacez l'identifiant de compte AWS, la région, le repository et l'étiquette d'image d'exemple par vos propres valeurs. La région AWS doit correspondre au registre ECR source, et non au workspace Databricks de destination. Consultez la section Private registry authentication dans la documentation AWS.

Shell
aws ecr get-login-password --region us-west-2 | \
docker login --username AWS --password-stdin \
123456789012.dkr.ecr.us-west-2.amazonaws.com

Transmettez ensuite l'URI de l'image ECR complète sous la forme --source:

Shell
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

L'indicateur --pull récupère l'image linux/amd64 depuis ECR même si elle est déjà mise en cache localement. L'assistant utilise votre installation Docker locale pour extraire, étiqueter et envoyer l'image. L'image source dans ECR reste inchangée. Une fois l'envoi réussi, définissez environment.unity_catalog_image sur main.ml.training:ecr-v1 dans le fichier YAML de votre charge de travail.