使用镜像注册表和镜像仓库

Snowpark Container Services 提供了 OCIv2 (https://github.com/opencontainers/distribution-spec/blob/main/spec.md) 兼容镜像注册表服务和存储单元调用存储库来存储镜像。您可以使用以下 Snowflake CLI 命令管理 Snowpark Container Services 镜像注册表和镜像仓库:

有关 Snowpark Container Services 镜像注册表和镜像仓库的更多信息,请参阅 Snowpark Container Services:使用镜像注册表和镜像仓库

管理镜像注册表

Snowflake CLI 允许您使用 Snowpark Container Services 镜像仓库执行以下任务:

对于常见操作,如列表或拖放,Snowflake CLI 使用 snow object 命令,如 管理 Snowflake 对象 中所述。

获取用于注册表身份验证的环境令牌

您可以使用 snow spcs image-registry token 命令返回与指定连接关联的令牌,您可以使用该令牌对注册表进行身份验证。

snow spcs image-registry token --connection mytest
Copy
+----------------------------------------------------------------------------------------------------------------------+
| key        | value                                                                                                   |
|------------+---------------------------------------------------------------------------------------------------------|
| token      | ****************************************************************************************************    |
|            | ****************************************************************************************************    |
| expires_in | 3600                                                                                                    |
+----------------------------------------------------------------------------------------------------------------------+

然后,您可以使用该令牌通过管道将其传输到 docker login 命令来登录 Docker 容器,类似于以下操作:

snow spcs image-registry token --format=JSON | docker login <org>-<account>.registry.snowflakecomputing.cn -u 0sessiontoken --password-stdin
Copy

登录镜像注册表

snow spcs image-registry login 使用为您的连接指定的凭据将您登录到镜像仓库。在登录之前,您必须满足以下先决条件:

  • 必须安装 Docker Desktop (https://www.docker.com/products/docker-desktop/),因为该命令要使用 Docker 登录到 Snowflake。

  • 当前角色必须具有账户中镜像仓库的 READ 权限才能获取注册表 URL。

要使用您的账户凭据登录到镜像注册表,请使用以下命令:

snow spcs image-registry login
Copy
Login Succeeded

检索镜像注册表的 URL

snow spcs image-registry url 命令返回镜像仓库的 URL。 当前角色必须具有账户中镜像仓库的 READ 权限才能获取注册表 URL。

要获取镜像仓库的 URL,请执行以下操作:

snow spcs image-registry url
Copy
<orgname-acctname>.registry.snowflakecomputing.cn

管理镜像仓库

Snowflake CLI 允许您使用 Snowpark Container Services 镜像仓库执行以下任务:

对于常见操作,如列表或拖放,Snowflake CLI 使用 snow object 命令,如 管理 Snowflake 对象 中所述。

创建镜像仓库

snow spcs image-repository create 命令在当前架构中创建新的镜像仓库。

要创建镜像仓库,请输入类似下面的命令:

snow spcs image-repository create tutorial_repository
Copy
+-------------------------------------------+
| key    | value                            |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+

根据项目定义创建和部署镜像仓库

通过创建 snowflake.yml 项目定义文件并执行 snow spcs image-repository deploy 命令,您可以将镜像仓库部署到暂存区。

下面显示的是一个 snowflake.yml 项目定义文件示例:

definition_version: 2
entities:
  my_image_repository:
    type: image-repository
    identifier: my_image_repository
Copy

下表描述了计算池项目定义的属性。

镜像仓库项目定义属性

属性

定义

type

requiredstring

必须是 image-repository

identifier

optionalstring

实体的 Snowflake 标识符。该值可以采用以下形式:

  • 字符串标识符文本

    identifier: my-image-repository
    
    Copy

    支持不带引号和带引号的标识符。要使用带引号的标识符,请在 YAML 值中包含周围的引号(例如,"My Image Repository")。

  • 对象

    identifier:
      name: my-image-repository
      schema: my-schema # optional
      database: my-db # optional
    
    Copy

    备注

    如果指定 schemadatabase,并在 name 属性中使用完全限定名称(例如 mydb.schema1.my-app),则会发生错误。

要创建和部署镜像仓库,请执行以下操作:

  1. 将当前目录更改为包含项目定义文件的目录。

  2. 运行 snow spcs image-repository deploy 命令,类似如下:

    snow spcs image-repository deploy
    
    Copy
    +---------------------------------------------------------------------+
    | key    | value                                                      |
    |--------+------------------------------------------------------------|
    | status | Image Repository MY_IMAGE_REPOSITORY successfully created. |
    +---------------------------------------------------------------------+
    

检索镜像仓库的 URL

snow spcs image-repository url 命令获取镜像仓库的 URL。

要获取 URL,请输入类似下面的命令:

snow spcs image-repository url tutorial_repository
Copy
<orgname-acctname>.registry.snowflakecomputing.cn/tutorial_db/data_schema/tutorial_repository

列出镜像仓库中的标签和镜像

snow spcs image-repository list-images 命令允许您获取镜像仓库的镜像和标签。

要列出仓库中的镜像和标签,请输入类似于以下内容的命令,该命令将列出 my_db 数据库中命名的 images 仓库中的镜像:

snow spcs image-repository list-images images --database my_db
Copy
+----------------------------+---------------+---------+-------------------------------------------------+-----------------------------------------+
| created_on                 | image_name    | tags    | digest                                          | image_path                              |
|----------------------------+---------------+---------+-------------------------------------------------+-----------------------------------------|
| 2024-10-11 14:23:49-07:00  | echo_service  | latest  | sha256:a8a001fef406fdb3125ce8e8bf9970c35af7084  | my_db/test_schema/images/echo_service:  |
|                            |               |         | fc33b0886d7a8915d3082c781                       | latest                                  |
| 2024-10-14 22:21:14-07:00  | test_counter  | latest  | sha256:8cae96dac29a4a05f54bb5520003f964baf67fc  | my_db/test_schema/images/test_counter:  |
|                            |               |         | 38dcad3d2c85d6c5aa7381174                       | latest                                  |
+----------------------------+---------------+---------+-------------------------------------------------+-----------------------------------------+
语言: 中文