关于 Container Registry
使用 IBM Cloud® Container Registry 可在具备高可用性和高可扩展性的体系结构中存储和访问专用容器映像。
IBM Cloud Container Registry 提供了由 IBM 托管和管理的具备高可用性、高可扩展性和加密的多租户专用映像注册表。 您可以通过设置自己的映像 命名空间在注册表中存储映像的存储库的集合。 名称空间与 IBM Cloud 帐户相关联,该帐户可以包含多个名称空间。并将容器映像推送到命名空间来使用 Container Registry。
Docker 映像是您所创建的每个容器的基础。 图像是从 Dockerfile一种文本文件,包含用于构建 Docker 映像的指令。 创建的,Dockerfile 是一个包含有关如何构建图像的指令的文件。 Dockerfile 可能会在其指令中引用单独存储的构建工件,如应用程序、应用程序的配置及其依赖关系。 图像通常存储在一个注册表中,该注册表既可以供公众访问(公共注册表),也可以为一组用户设置有限的访问权限(私人注册表)。 通过使用 Container Registry,只有那些有权访问 IBM Cloud 帐户的用户才能访问您的映像。
将映像推送到 Container Registry 时,可以利用内置的 Vulnerability Advisor 功能部件来扫描潜在的安全问题和漏洞。 Vulnerability Advisor 会检查特定 Docker 基本映像中是否存在易受攻击的软件包,以及在应用程序配置设置中是否存在已知漏洞。 找到漏洞时,会提供有关该漏洞的信息。 可以使用此信息来解决安全问题,以避免基于有漏洞的映像部署容器。
查看下表,了解使用 Container Registry 的好处。
优点 | 描述 |
---|---|
高度可用和可扩展的私人注册表。 | 在由 IBM 托管和管理的多租户、高可用性、可扩展、加密的专用注册表中建立自己的映像命名空间。
在 IBM Cloud 账户中存储您的私人 Docker 图像并与用户共享。 |
图像安全性符合 Vulnerability Advisor 标准。 | 受益于对名称空间中映像的自动扫描。
查看特定于操作系统的建议,以修订潜在漏洞并保护容器免受破坏。 |
存储和拉动流量的配额限制。 | 享受专用映像的不超过免费配额的免费存储量和拉出流量。
设置存储量和拉出流量的每月定制配额限制,以避免超过首选支付级别。 |
服务套餐
您可以选择免费或标准 Container Registry 服务套餐,来存储 Docker 映像并使 IBM Cloud 帐户中的用户可以使用这些映像。
IBM Cloud Container Registry 服务套餐可确定您可以用于专用映像的存储量和拉出流量。 服务套餐与 IBM Cloud 帐户相关联,存储量限制和映像拉出流量适用于帐户中所设置的所有名称空间。
服务计划适用于您当前使用的特定注册表实例(区域注册表或全球注册表之一)。 必须在每个注册表实例中为您的账户单独管理所有计划设置。 有关更多信息,请参阅区域。
下表显示可用的 IBM Cloud Container Registry 服务套餐及其特征。 有关计费方式和超出服务计划限制时的情况,请参阅 配额限制和计费。
特征 | 免费 | 标准 |
---|---|---|
描述。 | 试用 Container Registry 以存储和共享 Docker 映像。 此套餐是您在 Container Registry 中设置第一个名称空间时使用的缺省服务套餐。 | 优点是可以使用无限的存储量和拉出流量,为 IBM Cloud 帐户中的所有名称空间管理 Docker 映像。 |
图像存储量。 | 500 MB | 无限制 |
拉动交通。 | 每月 5 GB | 无限制 |
计费。 | 如果您超过存储量或拉出流量限制,那么您无法将映像推送到名称空间或从名称空间拉出映像。 更多信息,请参阅 配额限制和计费。 | 存储。 按 GB-月使用量计费。 第一个 0.5 GB-月免费。 然后,您将按照发售详情页中的规定支付费用,请参阅 Container Registry.
拉动交通。 每月按使用的 GB 数计费。 第一个 5 GB 免费。 然后,您将按照发售详情页中的规定支付费用,请参阅 Container Registry. 如果超过存储量或拉出流量限制,那么无法将映像推送到名称空间或从名称空间拉出映像。 有关存储、提取流量和成本估算器的更多信息,请参阅 配额限制和计费。 |
配额限制和计费
了解有关计费流程和配额限制在 Container Registry 中如何工作的信息和示例。
每个映像都是通过多个层构建的,每个层表示相对于基本映像的一个递增更改。 推送或拉出映像时,每个层需要的存储量和拉出流量会加到每月使用量中。 相同层在 IBM Cloud 帐户中的映像之间会自动共享,并且在创建其他映像时会复用这些层。 每个相同层的存储量只收费一次,与帐户中有多少映像引用该层无关。 只被垃圾桶中已删除的图像引用的图层不收费。
从 2022 年 2 月 1 日起,有标记 和 无标记的 图像都要收费。
配额限制和计费适用于您当前使用的特定注册表实例(区域注册表或全球注册表之一)。 配额设置必须在每个注册表实例中为您的账户单独管理。 有关更多信息,请参阅区域。
通过公共连接拉取的流量计入使用量和配额。 通过专用连接拉动的流量不算。
- 以下示例用于推送图像:
-
您将映像推送到基于 Ubuntu 映像的名称空间。 该 Ubuntu 映像包含多个层。 由于您的帐户中还没有这些层,因此这些层需要的存储量会加到您的每月使用量中。
然后,您创建基于该 Ubuntu 映像的第二个映像。 您可以更改 Ubuntu 基本镜像,比如在 Dockerfile 中添加更多命令或文件。 每个更改都表示一个新的映像层。 推送第二个映像时,Container Registry 识别到基本 Ubuntu 映像的所有层都已存储在您的帐户中。 Container Registry 会确定所有新图层的比例,并将存储量计入每月使用量。
对存储量和拉出流量计费
根据选择的服务套餐,会根据每个区域每月使用的存储量和拉出流量向您收费。
仓储费
每种 IBM Cloud Container Registry 服务套餐都随附特定存储量,可用于在您 IBM Cloud 帐户的名称空间中存储 Docker 映像。 如果您使用的是标准计划,则按 GB 月使用量收费。 每月前 0.5 GB 月免费。 如果您使用的是免费计划,您可以在 Container Registry 中免费存储图片,直到达到免费计划的配额限制为止。 GB-月是一个月(730 小时)平均 1 GB 的存储量。
- 下面是标准计划的示例:
-
您正好半个月使用 5 GB,然后您将几个映像推送到名称空间并在剩下的半个月中使用 10 GB。 您的每月用量计算方法如下例所示:
(5 GB x 0.5 (月数)) + (10 GB x 0.5 (月数)) = 2.5 + 5 = 7.5 GB-月
在标准计划中,每月的第一个 0.5 GB 月是免费的,因此您需要支付 7 GB 月的费用( 7.5 GB-Months - 0.5 GB-Months)。
收取交通费
每种 IBM Cloud Container Registry 服务套餐都包含名称空间中存储的专用映像的特定免费拉出流量。 拉动流量是指从命名空间向本地计算机拉动图像层时使用的带宽。 如果您使用的是标准计划,则按每月 GB 使用量收费。 每月前 5 GB 免费。 如果你使用的是免费计划,你可以从命名空间中提取图像,直到达到免费计划的配额限制。
通过公共连接拉取的流量计入使用量和配额。 通过专用连接拉动的流量不算。
- 下面是标准计划的示例:
-
在这一个月中,您提取了包含图层的图像,总计 14 GB。 您的每月用量计算方法如下例所示:
在标准套餐中,每月的前 5 GB 是免费的,所以将向您收取 9 GB 的费用 (14 GB - 5 GB)。
存储和拉取流量的配额限制
根据选择的服务套餐,您可以向名称空间推送映像并从名称空间中拉出映像,直到超过每个区域特定于套餐的配额限制或定制配额限制为止。
存储配额限制
当达到或超过计划的配额限制时,就不能向 IBM Cloud 账户中的命名空间推送任何图像,直到完成以下任务之一。
- 通过从命名空间中删除图像来释放空间。
- 升级到标准计划。
- 如果在免费或标准套餐中设置了存储量配额限制,那么还可以增大此配额限制以再次允许推送新映像。
- 下面是标准计划的示例:
-
您当前的存储量配额限制设置为 1 GB。 存储在您 IBM Cloud 帐户的名称空间中的所有专用映像已经使用此存储量中的 900 MB。 在达到配额限制之前,您还有 100 MB 存储量可用。 一位用户想在本地计算机上推送一个 2 GB 的图像。 由于还未达到配额限制,因此 Container Registry 允许该用户推送此映像。
推送后,Container Registry 会确定命名空间中图像的实际比例(可能与本地计算机上的比例不同),并检查是否达到存储限制。 在此示例中,存储用量在 900 MB 的基础上又增加了 2 GB。 如果您当前的配额限制设置为 1 GB,Container Registry 就会阻止您向命名空间推送更多图像。
拉动流量配额限制
当达到或超过计划的配额限制时,就不能从 IBM Cloud 账户的命名空间中提取任何图像,直到完成以下任务之一。
- 等待下一个计费期开始。
- 升级到标准计划。
- 增加拉取流量的配额限制。
通过公共连接拉取的流量计入使用量和配额。 通过专用连接拉动的流量不算。
- 下面是标准计划的示例:
-
在该月,您的拉出流量配额限制设置为 5 GB。 您已经从名称空间拉出过映像,并使用了此拉出流量中的 4.5 GB。 在达到配额限制之前,您还有 0.5 GB 拉出流量可用。 一位用户想从您的命名空间中提取一个 1 GB 的映像。 由于还未达到配额限制,因此 Container Registry 允许该用户拉出此映像。
在拉出此映像后,Container Registry 会确定在拉出期间使用的带宽,并检查是否达到了拉出流量的限制。 在此示例中,拉出流量使用量从 4.5 GB 增加到 5.5 GB。 由于当前的配额限制设置为 5 GB,因此 Container Registry 会阻止您从名称空间拉出映像。
费用 Container Registry
您可以在产品详细信息页面的定价计划部分查看 IBM Cloud Container Registry 的成本,请参见 Container Registry.
升级服务套餐
可以升级服务套餐,以享受无限的存储量和拉出流量使用量来管理 IBM Cloud 帐户中所有名称空间的 Docker 映像。
如果您想知道您设置为目标的注册表区域有哪些服务套餐,请运行 ibmcloud cr plan
命令。
要升级服务计划,请完成以下步骤。
-
登录到 IBM Cloud。
ibmcloud login
如果您有联合标识,请使用
ibmcloud login --sso
登录到 IBM Cloud CLI。 输入用户名,并在 CLI 输出中使用提供的 URL 获取一次性密码。 如果您有联合标识,那么不使用--sso
会登录失败,使用--sso
选项会登录成功。 -
锁定要升级计划的地区。
ibmcloud cr region-set
有关更多信息,请参阅
ibmcloud cr region-set
和区域。 -
升级到标准套餐。
ibmcloud cr plan-upgrade standard
如果您使用的是 IBM Cloud lite 计划,则必须在运行
ibmcloud cr plan-upgrade
之前升级到 IBM Cloud 即用即付账户或订阅账户。有关更多信息,请参阅
ibmcloud cr plan-upgrade
。
中使用的术语 IBM Cloud Container Registry
有关 IBM Cloud Container Registry 中使用的术语的信息。
有关 Docker 专用术语的更多信息,请参阅 Docker 词汇表。
容器映像
在容器运行时内用于创建容器的文件系统及其执行参数。 文件系统由一系列层组成,这些层在运行时组合在一起,随着容器映像的连续更新而创建。 容器映像不会在容器运行时保留其状态。
容器镜像存储在命名空间中的存储库中。
摘要
摘要可用作注册表中各种对象(如图像清单、图层和配置项)的不可变引用。
在注册表中,图像摘要是对图像的不可变引用,通过使用图像 清单 的 sha256
哈希值来识别图像。 您可以使用图像摘要来确保您始终引用相同版本的图像。 使用图像文摘的长格式处理图像,如拉取、推送和删除图像。
要查找图像摘要,请运行 ibmcloud cr image-digests
命令。 该 ibmcloud cr image-list
命令也会返回图像摘要,但默认情况下是截断格式。 您可以在 ibmcloud cr image-list
命令中添加一个选项,以返回长格式的图像摘要。
使用图像摘要识别图像时,请始终使用长格式。
在 Container Registry 中,任何提及“摘要”的地方都是指“图像摘要”。
Dockerfile
Dockerfile 是一个文本文件,其中包含关于构建 Docker 映像的指示信息。
通常,容器镜像建立在包含基本操作系统(如 Ubuntu )的基本镜像之上。 您可以利用 Dockerfile 指示信息以递增方式更改基本映像,以便定义出应用程序运行所需的环境。 对基本映像的每个更改都描述了该映像的一个新层,您可以在 Dockerfile 的一行中进行多个更改。 Dockerfile 中的指令还可能引用单独存储的构建工件,如应用程序、应用程序的配置及其依赖项。 有关 Dockerfile 的更多信息,请参阅 Dockerfile 参考资料。
Docker V2 容器图像
符合 Image Manifest Version 2, Schema 2 规范的容器映像。
Docker Image Manifest V2,Schema 2 的介质类型为 application/vnd.docker.distribution.manifest.v2+json
,清单列表的介质类型为 application/vnd.docker.distribution.manifest.list.v2+json
。 Docker V2 容器映像是一种 OCI 容器映像。 有关 Docker 支持的更多信息,请参阅
Docker。
域名
主机系统的名称。 域名由一系列子名称组成,子名称之间用分隔符分隔,例如 www.ibm.com
.
Container Registry 使用的域名格式为 us.icr.io
。 Container Registry 早期使用的域名格式为 registry.ng.bluemix.net
. 这两种格式的域名指向相同的注册机构和内容。 Container Registry 服务对早期域名和规范域名的响应相同。 您可以交替使用其中一个域名来推送或拉动图像。
域名只有在以下情况下才有意义:
- Kubernetes 在选择拉取密码时,会选择与域名匹配的密码。
- 当
ibmcloud cr login
帮助您登录时,只使用us.icr.io
格式的域名。 - 图像签名时,签名包括签名时使用的域名。
有关 Container Registry 使用的域名的更多信息,请参阅 地区。
映像清单
映像清单是 .json
文档,其中引用了配置对象和映像层,这些都是提取和运行映像所必需的。 sha256
图像清单的哈希值就是 摘要,用于识别图像。 运行 ibmcloud cr manifest-inspect
命令来查看图像清单。
OCI 容器映像
符合 OCI 映像格式规范的容器映像。
OCI 容器映像的介质类型为 application/vnd.oci.image.manifest.v1+json
。
注册表
公用或专用容器映像存储和分发服务。
为 OCI 容器映像符合 OCI 映像格式规范的容器映像 (也称为 Docker 容器映像)提供存储空间。 使用相应注册域名的 OCI 客户端可以访问或“提取”OCI 容器映像。 任何人都可以访问容器映像(公共映像),也可以仅限于某个群体访问(私有映像)。Container Registry 提供一个多租户、高可用性的私有映像注册表,由 IBM 托管和管理。 要使用注册表,您可以添加您的帐户专用的名称空间,然后将映像推送到该名称空间中。
注册表名称空间
文件夹,其中包含在 Container Registry 中存储容器映像的文件夹或存储库。 注册表命名空间与您的 IBM Cloud 账户相关联。 一个账户中可以有多个注册表命名空间。
在 Container Registry 中设置自己的命名空间时,命名空间会附加到注册表 URL <region>.icr.io/<my_namespace>
中,其中 <region>
是区域,<my_namespace>
是自己的命名空间。 名称空间在同一区域的所有 IBM Cloud 帐户中必须唯一。 IBM Cloud 账户中拥有正确 IAM
权限的每个用户都可以查看和处理存储在注册表命名空间中的图像。
每个区域可以有 100 个命名空间。
命名空间在您指定的 资源组中 创建,这样您就可以在资源组级别配置对命名空间内资源的访问。 如果未指定资源组,也没有目标资源组,则使用默认资源组。 如果有一个不在资源组中的旧命名空间,可以将其分配给一个资源组,然后在资源组级别为该命名空间设置权限。 有关资源组的更多信息,请参阅 将现有命名空间分配给资源组。
分配给资源组的名称空间显示在 IBM Cloud 控制台的 资源列表 页面中。
存储库
存储相关容器图像的集合。 资源库存储在命名空间中。 容器图像仅通过标签或摘要进行区分。 资源库一词经常与容器镜像互换使用,但一个资源库有可能保存容器镜像的多个标记变体。
标记
附加到资源库中容器映像的标识符。 标签可以从图像中重新分配或删除。
您可以使用 标签附加到帐户中包含的资源分组的用户定义的标识。 标记在帐户范围内可视。来区分版本库中同一基础镜像的不同版本。 运行 Docker 命令时,如果没有指定版本库图像的标记,则默认使用标记为 latest
的图像。
无标记图片
没有标记的图像是无标记图像。 可以使用摘要参考格式 <repository>@<digest>
而不是标签参考格式 <repository>:<tag>
来引用无标签的图像。 无标记图像通常是使用预先存在的 <repository>:<tag>
组合推送图像的结果。 在这种情况下,标签将被覆盖,原始图像将变成无标签图像。
命令查看未标记的图像,使用 ibmcloud cr image-digests
命令查看未标记的图像,使用 ibmcloud cr image-prune-untagged
命令清理未标记的图像。
区域
Container Registry 的默认实例是全局注册表。 全球注册机构的 域名 中不包含地区 (icr.io
)。
使用注册表的全局实例,除非您有特定要求,例如数据主权,需要在特定区域存储数据。 在这种情况下,您可以在 本地区域 使用 Container Registry。
每个区域都有不同的备份。 例如,存储在 IBM Cloud Container Registry 注册表 Frankfurt(eu-de)
中的映像被复制到 Frankfurt(eu-de)
和 London(eu-gb)
地区的六个数据中心。
下表显示了备份位置。 有关 Container Registry 备份位置的更多信息,请参阅 服务是否复制数据? 以获取帮助。
环境 | 以前被称为 | 活动位置 | 备份位置 |
---|---|---|---|
au-syd |
ap-south |
au-syd |
jp-tok |
br-sao |
不适用 | br-sao |
us-south |
ca-tor |
不适用 | ca-tor |
us-east (服务和策略设置)
|
eu-de |
eu-central |
eu-de |
eu-gb |
eu-es |
不适用 | eu-es |
eu-de |
eu-gb |
uk-south |
eu-gb |
eu-de |
global |
不适用 | us-east |
us-south |
jp-osa |
不适用 | jp-osa |
jp-tok |
jp-tok |
ap-north |
jp-tok |
au-syd |
us-south |
不适用 | us-south |
us-east |
所有注册表工件的作用域都是当前正在使用的特定注册表实例(区域注册表或全球注册表之一)。 例如,命名空间、映像、配额设置和计划设置都必须在每个注册表实例中单独管理。
全局注册表
全局注册表可用。 全球注册表的名称中不包括地区 (icr.io
)。除了托管用户命名空间和图像外,该注册表还托管由 IBM 提供的公共图像。
Container Registry 的全局实例可使用下表所示的 域名。
注册表 | 域名 | 私人域名 | 不推荐的域名 |
---|---|---|---|
全局 | icr.io |
private.icr.io |
registry.bluemix.net |
要了解如何使用专用域名连接 Container Registry,请参阅 使用专用网络连接。
现有的 bluemix.net
域名已被弃用,但目前仍可继续使用。 支持结束日期尚未确定。
以全局注册表为目标
可以通过运行 ibmcloud cr region-set
命令将全局注册表设定为目标。
-
要以全局注册表为目标,请运行以下命令。
ibmcloud cr region-set global
-
要将本地 Docker 守护进程登录到全局注册表,请运行
ibmcloud cr login
命令。Container Registry 支持其他客户端以及。Docker 要使用其他客户端登录,请参阅 交互式访问命名空间。
本地区域
Container Registry 的区域实例可使用下表所示的 域名。
本地注册表区域 | 前身为 | 域名 | 私人域名 | 不推荐的域名 |
---|---|---|---|---|
au-syd |
ap-south |
au.icr.io |
private.au.icr.io |
registry.au-syd.bluemix.net |
br-sao |
不适用 | br.icr.io |
private.br.icr.io |
不适用 |
ca-tor |
不适用 | ca.icr.io |
private.ca.icr.io |
不适用 |
eu-de |
eu-central |
de.icr.io |
private.de.icr.io |
registry.eu-de.bluemix.net |
eu-es |
不适用 | es.icr.io |
private.es.icr.io |
不适用 |
eu-gb |
uk-south |
uk.icr.io |
private.uk.icr.io |
registry.eu-gb.bluemix.net |
jp-osa |
不适用 | jp2.icr.io |
private.jp2.icr.io |
不适用 |
jp-tok |
ap-north |
jp.icr.io |
private.jp.icr.io |
不适用 |
us-south |
不适用 | us.icr.io |
private.us.icr.io |
registry.ng.bluemix.net |
要了解如何使用专用域名连接 Container Registry,请参阅 使用专用网络连接。
现有的 bluemix.net
域名已被弃用,但目前仍可继续使用。 支持结束日期尚未确定。
以本地区域为目标
如果要使用您本地区域以外的区域,可以通过运行 ibmcloud cr region-set
命令将要访问的区域设定为目标。 运行该命令时可以不带任何选项,以获得可用区域列表,也可以指定区域作为选项。
-
要运行带有选项的命令,请将
REGION
替换为 区域 名称。ibmcloud cr region-set REGION
例如,要以
eu-de
区域为目标,请运行以下命令。ibmcloud cr region-set eu-de
-
要将本地 Docker 守护进程登录到注册表,以便推送或拉取镜像,请运行
ibmcloud cr login
命令。Container Registry 支持其他客户端以及。Docker 要使用其他客户端登录,请参阅 交互式访问命名空间。
支持的客户端
对 Docker 的支持
IBM Cloud Container Registry 支持 所支持的 版本。Docker Docker Engine
Docker 只有在要推拉图像时才需要使用。
支持 Docker V2 Schema 2 映像。 还支持清单列表。 更多信息,请参阅 注册表兼容性。
Docker V2 模式 1 图像已停用,不能再将其推送到 Container Registry。
为其他客户提供支持
IBM Cloud Container Registry 支持符合 OCI Distribution 规范第 1 版或更高版本的客户端支持版本,如,,和。Buildah Podman Skopeo