Databricks CLI 提供了辅助命令 databricks air images push ,将 Docker 认证、映像标签和推送到 Artifact Registry 结合起来。 它会自动检测注册表区域。 你可以用这个帮助程序代替工件注册表指南中的手动步骤。 助手不构建镜像或提交工作负载。
Prerequisites
- 安装Databricks CLI版本1.19.0及以上。 请参阅安装或更新 Databricks CLI。
- 在你想存放镜像的工作区设置Artifact Registry。 参见“ 开始使用文物登记册”。
- 创建或选择目标目录和架构,并获取所需的工件注册表特权。
- 在本地机器上安装并启动Docker。 你的
PATH上必须有 Docker 可用。
配置工作区认证
为要存储映像的工作区创建或刷新工作区 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 帮助程序将现有映像从另一个容器注册表复制到工件注册表。
以下示例使用专用 Amazon 弹性容器注册表 (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 中将 environment.unity_catalog_image 设置为 main.ml.training:ecr-v1。