Snowpark Container Services:使用镜像注册表和镜像仓库¶
Snowpark Container Services 提供了兼容 ` OCIv2 <https://github.com/opencontainers/distribution-spec/blob/main/spec.md (https://github.com/opencontainers/distribution-spec/blob/main/spec.md)> `_ 的镜像注册表服务和存储单元调用仓库来存储镜像。
镜像注册表¶
镜像注册表服务提供 OCIv2 API,用于存储兼容 OCI 的容器镜像。
镜像注册表主机名¶
Snowflake 账户中的每个镜像注册表都有一个唯一的主机名,使得 OCI 客户端(如 Docker CLI)可以使用 REST API 调用来访问镜像注册表。镜像注册表主机名的一般语法为:
<orgname>-<acctname>.registry.snowflakecomputing.cn
在主机名中:
<orgname>-<acctname>标识 Snowflake 账户。registry使得 Snowflake 可以为注册表客户提供每个账户的主机名。主机名始终全部小写。
备注
Snowflake 账户名称 (<acctname>) 可以带有下划线(例如 my_account),但下划线在 URL 中无效。因此,在使用注册表主机名时,需要将下划线替换为短划线。例如,将 my_account 改为 my-account。
您可以通过以下方式之一,查找镜像仓库主机名的组织名称和账户名称信息:
Snowsight Web 界面:使用账户选择器。有关更多信息,请参阅 Snowsight 入门。
执行 SHOW IMAGE REPOSITORIES 命令。
镜像注册表身份验证¶
要访问 Snowflake 账户中的镜像存储库,用户必须使用其 Snowflake 凭据对镜像注册表进行身份验证。此外,访问注册表中的存储库需要相应的 权限。要获得这些权限,用户必须具有向存储库授予访问权限的角色。
您有以下选项可以使用账户中的镜像注册表对客户端进行身份验证:
使用 Snowflake CLI: Snowflake CLI 支持所有形式的 Snowflake 身份验证。
对于 Docker 客户端,请使用 snow spcs image-registry login 命令通过注册表对 Docker 进行身份验证。
对于任何客户端(包括 Docker),Snowflake CLI 还提供了首先生成身份验证令牌并使用该令牌对客户端进行身份验证的选项。有关更多信息,请参阅 snow spcs image-registry token。
使用客户端提供的命令: Docker 等工具提供了使用用户名和密码通过注册表进行身份验证的命令。有几种方法可以通过外部工具使用用户名和密码身份验证:
您可以使用 编程访问令牌 (PAT),而无需使用自己的用户名和密码。首先,生成令牌,然后通过提供“USER”作为用户名,令牌作为密码。
您还可以提供 Snowflake 用户名和密码,但只有在您的账户管理员启用用户名/密码身份验证时才允许这样做。默认情况下,若不启用多因素认证 (MFA),则不支持用户名/密码登录,因为该方式与
docker login命令不兼容。
镜像仓库¶
注册表 是用于 OCIv2 API 的一项服务,而 仓库 是您在服务中创建的存储单元。
仓库是账户中存储镜像的命名位置。这类似于 DBMS 和 DBMS 中的表之间的关系。也就是说,DBMS 相当于注册表,而表相当于仓库。
您可以在 Snowflake 账户中创建一个或多个仓库。例如,DEV、TEST 和 PROD 仓库可以在开发、测试和生产过程中存储镜像。您还可以创建具有不同权限的仓库,例如,某些仓库对于某些角色可以是只读的。
仓库一级支持访问控制;不支持单个镜像级别的访问控制。
为了将镜像上传到镜像仓库,注册表服务提供了 各种身份验证选项 和单点登录 (SSO)。
For an example of creating a repository and uploading an image, see Tutorial 1.
镜像仓库 URL¶
以下是 Snowflake 仓库 URL 的一般语法:
<registry-hostname>/<db_name>/<schema_name>/<repository_name>
例如:
myorg-myacct.registry.snowflake.com/my_db/my_schema/my_repository
要在账户中查找仓库 URL,可使用 SHOW IMAGE REPOSITORIES SQL 命令。
备注
Snowflake URL 对 $ 字符进行编码,这是 Snowflake 支持的标识符中唯一的非 URL 字符(请参阅 标识符要求)。不支持包含特殊字符且带有双引号的名称。
手动构建仓库 URL 时,请将账户名称中的下划线 (
my_acct) 替换为短划线 (my-acct)。
仓库操作¶
要创建和管理仓库,Snowflake 支持以下 仓库操作:
要列出存储在 Snowflake 镜像仓库中的镜像,请使用以下命令:
有关创建仓库和上传镜像的示例,请参阅 教程通用设置。
仓库权限¶
使用仓库时,适用以下权限模型:
要在架构中创建仓库,您必须对架构具有 CREATE IMAGE REPOSITORY 权限。
对于仓库管理,支持以下权限(功能):
权限
用途
READ
允许从仓库中列出并下载镜像。
WRITE
允许从仓库中列出并下载镜像。您也可以在仓库中推送镜像。
OWNERSHIP
允许从仓库中列出并下载镜像。您也可以在仓库中推送镜像。
SERVICE READ
Enables a container service to list and download images from a repository. This is needed for the image building step of model serving.
SERVICE WRITE
Enables a container service to push images in the repository. This is needed for the image building step of model serving.
准则和限制¶
当前不支持从仓库中删除镜像。您可以删除某个仓库,但此操作会移除该仓库中的所有镜像。
如果您需要入站专用连接,请联系客户代表。
对于 AWS 上的 Snowflake 账户,压缩格式的镜像注册表允许的最大层大小为 160 GiB,而对于 Azure 上的 Snowflake 账户,则为 195 GiB。