Push des images avec la ligne de commande Databricks

La ligne de commande Databricks fournit la commande databricks air images push helper pour combiner l’authentification Docker, le taggage d’images et la poussée vers le Registre des Artefacts. Il détecte automatiquement la région du Registre. Vous pouvez utiliser cet outil à la place des étapes manuelles du guide du Registre des Artefacts. L’assistant ne construit pas d’images ni ne soumet de charges de travail.

Prerequisites

Configurer l’authentification de l’espace de travail

Créez ou rafraîchissez un profil OAuth d’espace de travail pour l’espace de travail où vous souhaitez stocker l’image :

databricks auth login --profile my-databricks-profile

L’assistant aux identifiants Docker nécessite ce profil OAuth d’espace de travail. Pour les méthodes d’authentification prises en charge, voir Configurer l’authentification Docker.

Envoyer une image en local

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 imprime le nom de l’image du catalogue Unity à 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’elle existe. Sinon, il récupère l’image source de linux/amd64. Ajoutez --pull pour rafraîchir une image source de son registre même si elle est disponible localement. Les images doivent utiliser linux/amd64. Reconstruire une image locale incompatible pour cette plateforme 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 l’outil d’assistance.

Pour saisir les détails de l’image en mode interactif, 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 registry

Vous pouvez aussi utiliser l’aide CLI pour copier une image existante d’un autre Container Registry vers Artifact Registry.

L’exemple suivant utilise un dépôt privé Amazon Elastic Container Registry (ECR) comme source. Pour cet exemple, installez et configurez la CLI AWS avec des identifiants capables de s’authentifier à l’ECR et d’extraire l’image source. Ces identifiants AWS sont distincts de votre profil Databricks.

D’abord, authentifier Docker auprès du registre ECR source. Remplacez l’exemple d’identifiant de compte AWS, la région, le dépôt et l’étiquette image par vos propres valeurs. La région AWS doit correspondre au registre ECR source, et non à l’espace de travail Databricks de destination. Voir l’authentification du registre privé 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

Ensuite, on transmet l’URI complet de l’image ECR en tant que --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’option --pull récupère l’image linux/amd64 depuis ECR, même si elle est déjà en cache localement. L’assistant utilise votre installation Docker locale pour extraire, taguer et pousser l’image. L’image source dans l’ECR est restée inchangée. Une fois le push effectué avec succès, définissez environment.unity_catalog_image sur main.ml.training:ecr-v1 dans le fichier YAML de votre charge de travail.