用Databricks的CLI推送镜像

Important

此功能在 Beta 版中。 要使用该功能,工作区管理员必须从工作区预览页面启用 AI 运行时测试版功能和Databricks 工件注册表预览。

Databricks CLI 提供了辅助命令 databricks air images push ,将 Docker 认证、映像标签和推送到 Artifact Registry 结合起来。 它会自动检测注册表区域。 你可以用这个辅助工具代替 Artifact Registry 指南中的手动步骤。 助手不构建镜像或提交工作负载。

Prerequisites

配置工作区认证

为要存储映像的工作区创建或刷新工作区 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

该命令会打印 Unity Catalog 镜像名称,以便在您的工作负载 YAML 中用作 environment.unity_catalog_image。 在这个例子中,使用 main.ml.training:v1,如“ 在工作负载中使用 Docker 镜像”所示。

当本地源映像存在时,该帮助程序会复用它。 否则,它会拉取 linux/amd64 的源图像。 添加 --pull,这样即使本地已有源映像可用,也从其注册表刷新。 图像必须使用 linux/amd64。 在该平台上重新构建不兼容的本地映像,然后再推送。 如果源镜像在私有注册表中,运行辅助工具前先将 Docker 认证到该注册表。

要以交互方式输入映像详细信息,请在不带映像标志的情况下运行 databricks air images push --profile my-databricks-profile。 运行 databricks air images push --help 以查看所有选项。

从另一个镜像仓库推送镜像

你也可以使用 CLI 助手将其他容器注册表中的现有映像复制到 Artifact Registry。

以下示例使用了一个私有的亚马逊弹性容器注册表(ECR)仓库作为源。 对于此示例,请安装并配置 AWS CLI,并使用能够通过 ECR 进行身份验证和拉取源映像的凭据。 这些 AWS 凭证与你的 Databricks 个人资料彼此独立。

首先,让 Docker 向源 ECR 注册表进行身份验证。 用你自己的值替换示例的 AWS 账户 ID、区域、仓库和镜像标签。 AWS 区域必须匹配源 ECR 注册表,而不是目标 Databricks 工作区。 请参见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 中将 main.ml.training:ecr-v1 设置为 environment.unity_catalog_image。