Pousser des images avec la CLI Databricks
Bêta
Cette fonctionnalité est en version Bêta. Pour l’utiliser, un administrateur de Workspace doit activer les prévisualisations Fonctionnalités bêta du Runtime IA et Registre d’artefacts Databricks depuis la page de prévisualisation du Workspace.
La CLI de Databricks fournit la commande d'assistance databricks air images push pour combiner l'authentification Docker, le marquage d'image et l'envoi à Artifact Registry. Elle détecte automatiquement la région du registre. Vous pouvez utiliser cette aide au lieu des étapes manuelles du guide Artifact Registry. L'assistant ne crée pas d'images ni ne soumet 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.
- Configurez Artifact Registry dans le workspace où vous souhaitez stocker l'image. Reportez-vous à Prise en start d'Artifact Registry.
- Créez ou sélectionnez un catalogue et un schéma de destination, et obtenez les privilèges requis pour Artifact Registry.
- Installez et start Docker sur votre machine locale. Docker doit être disponible sur votre
PATH.
Configurer l’authentification du workspace
Créez ou refresh un profil OAuth de workspace pour le workspace où vous souhaitez stocker l’image :
databricks auth login --profile my-databricks-profile
L’assistant d’identification Docker nécessite ce profil OAuth de workspace. Pour les méthodes d'authentification prises en charge, voir Configurer l'authentification Docker.
Push d'une image locale
Par exemple, poussez 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 d'image Unity Catalog à utiliser comme environment.unity_catalog_image dans votre 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 en existe une. Sinon, il extrait l'image source pour linux/amd64. Ajoutez --pull pour refresh une image source depuis son registre même si elle est disponible localement. Les images doivent utiliser linux/amd64. Reconstruisez 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'assistant.
Pour saisir les détails de l’image de manière interactive, exécutez databricks air images push --profile my-databricks-profile sans les indicateurs d’image. Exécutez databricks air images push --help pour toutes les options.
Transférer une image depuis un autre registre
Vous pouvez également utiliser l'assistant CLI pour copier une image existante d'un registre de conteneurs à un autre vers Artifact Registry.
L'exemple suivant utilise un repository privé Amazon Elastic Container Registry (ECR) comme source. Pour cet exemple, installez et configurez le AWS CLI avec des identifiants capables de s'authentifier auprès d'ECR et d'extraire 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'exemple d'identifiant de compte AWS, de région, de repository et de tag d'image par vos propres valeurs. La région AWS doit correspondre au registre ECR source, et non au workspace Databricks de destination. Voir Authentification privée au registre 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, transmettez l’URI de l’image ECR complète 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
Le flag --pull extrait 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, étiqueter et transférer l'image. L’image source dans ECR reste inchangée. Une fois le push réussi, définissez environment.unity_catalog_image sur main.ml.training:ecr-v1 dans votre YAML de charge de travail.