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
- Installez la CLI Databricks version 1.19.0 ou supérieure. Consultez Installer ou mettre à jour la CLI Databricks.
- Configurer Artifact Registry dans le workspace où vous souhaitez stocker l'image. Consultez Prise en start d'Artifact Registry.
- Créez ou sélectionnez un catalogue et un schéma de destination, puis obtenez les privilèges Artifact Registry requis.
- Installez et start Docker sur votre machine locale. Docker doit être disponible sur votre
PATH.
Configurer l'authentification du Workspace
Créer ou refresh un profil OAuth Workspace pour le workspace dans lequel vous souhaitez stocker l'image :
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:
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.
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:
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.