IBM Cloud Docs
常见问题 Container Registry

常见问题 Container Registry

IBM Cloud® Container Registry 的常见问题。

有关 Vulnerability Advisor 的常见问题,请参见 Vulnerability Advisor 的 FAQ

Container Registry 的参考文档在哪里?

IBM Cloud Container Registry 的参考文档见 IBM Cloud 文档。 更多信息,请参阅 关于 Container RegistryIBM Cloud Container Registry CLI

如何设置 Container Registry CLI?

设置 IBM Cloud Container Registry CLI 的步骤如下:

  1. 确保已安装 IBM Cloud CLI。
  2. 运行 ibmcloud plugin install container-registry 命令安装 container-registry CLI 插件。
  3. 使用 ibmcloud login 命令登录 IBM Cloud。
  4. 使用 ibmcloud plugin list 命令检查 container-registry CLI 插件的当前版本,以验证安装情况。

现在,您可以使用 IBM Cloud Container Registry CLI 管理 IBM Cloud 账户的注册表及其资源。

更多信息,请参阅 设置 Container Registry CLI 和命名空间 以及 Container Registry 入门

如何配置防火墙以允许连接 Container Registry?

您可以使用 第 7 层防火墙通过防火墙访问 Container Registry 中列出的域,也可以使用 虚拟专用网络(VPN)

我的命名空间是什么?

要查找名称空间的名称,请运行 ibmcloud cr namespace-list 命令。

有关命名空间的更多信息,请参阅 注册表命名空间。 要规划命名空间,请参阅 规划命名空间

可以有多少命名空间?

每个区域可以有 100 个注册表命名空间。

可以重命名命名空间吗?

不能重命名 命名空间在注册表中存储映像的存储库的集合。 名称空间与 IBM Cloud 帐户相关联,该帐户可以包含多个名称空间。。 如果要更改命名空间的名称,必须用新名称创建一个命名空间并传输其数据。 要转移数据,可以将现有命名空间的内容复制到创建的命名空间中。

如果不想手动传输数据,可以使用 ibmcloud cr image-tag 命令创建一个脚本。 例如,您可以使用以下脚本,其中 OLD_NAMESPACE 是现有的命名空间,而 NEW_NAMESPACE 是您创建的命名空间:

IMAGES=$(icr images --restrict OLD_NAMESPACE --format "{{ .Repository }}:{{ .Tag }}")

for i in $IMAGES ; do
   new=$(echo $i | sed "s|/OLD_NAMESPACE/|/NEW_NAMESPACE/|1")
   ibmcloud cr image-tag $i $new
done

为什么我没有创建命名空间的授权?

您无权在 IBM Cloud Container Registry 中创建命名空间。 错误信息 You are not authorized to access the specified resource. 表明您缺乏处理命名空间所需的用户权限。 要添加、分配和删除命名空间,必须在 Container Registry 服务中拥有账户级别的管理员角色。 如果您在资源组或资源组上拥有“管理器”角色,这还不够;“管理器”角色必须是账户级别的。

有关更多信息,请参阅 为什么我没有权限访问Container Registry 中的指定资源?使用命名空间的用户权限

如何列出图像名称?

要列出 IBM Cloud 账户中的所有图像,可以运行 ibmcloud cr images 命令,该命令会显示 IBM Cloud 账户中所有带标记的图像,并带有截断摘要。 如果想用完整摘要列出所有图像,包括未标记的图像,请运行 ibmcloud cr image-digests 命令。 图像名称格式为 repository@digestrepository:tag。 版本库、摘要和标签的值会在运行命令时返回。

如需了解更多信息,请发送电子邮件至 ibmcloud cr image-listibmcloud cr imagesibmcloud cr image-digestsibmcloud cr digests

如何列出公共映像?

要列出公共映像,请运行以下 ibmcloud 命令来定位到全局注册表并列出 IBM 提供的公共映像:

ibmcloud cr region-set global
ibmcloud cr images --include-ibm

我可以使用哪些工具来创建和推送图片?

您可以使用 Docker 和非 Docker 工具来构建镜像并将其推送到注册表。 您可以使用支持 OCI 容器映像符合 OCI 映像格式规范的容器映像格式和协议的非 Docker 工具。 要使用其他客户端登录,请参阅 交互式访问命名空间

垃圾桶中的图片是否计入我的配额?

扔进垃圾桶的图片不计入配额。

如何查找图像摘要?

运行以下命令之一即可找到图像 摘要 的长格式。 摘要显示在 CLI 的摘要栏中。

在使用摘要识别图像时,请始终使用长格式。

  • 运行 ibmcloud cr image-digests 命令:

    ibmcloud cr image-digests
    
  • 运行 ibmcloud cr image-list 命令:

    ibmcloud cr image-list --no-trunc
    

    如果运行 ibmcloud cr image-list 命令时不带 --no-trunc 选项,则会看到摘要的截断格式。

如何使用摘要处理图像?

摘要 通过使用图像 清单sha256 哈希值来识别图像。

要查找图像的摘要,请运行 ibmcloud cr image-digests 命令。 您可以使用“版本库”列 (repository) 和“摘要”列 (digest) 的内容组合,并用 at (@) 符号分隔,创建格式为 repository@digest 的图像名称,以此来引用图像。

为什么不能将图像推送到 Container Registry?

由于超过图像存储或拉动流量配额或证书无效等各种原因,您在向 Container Registry 拉动或推送图像时可能会遇到问题。 要解决这个问题,请登录 IBM Cloud 和 IBM Cloud Container Registry CLI,查看配额限制和使用情况,如果使用的是免费计划,请考虑升级到标准计划。

如需更多信息,请参阅“当我使用 Container Registry 时,为何无法推送或拉动 Docker 图像?”以获取帮助。

如何列出超过一年的图片?

Linux macOS 在 Linux® 和 macOS上,如果要列出一年多前创建的所有已标记和未标记的映像,可以运行以下命令:

year=$(($(date +%s) - 31556952))
ibmcloud cr digests --format '{{ if (lt .Created '$year')}}{{.Repository}}:{{.Digest}}{{end}}'

如何使用访问控制?

您可以创建 IBM Cloud Identity and Access Management (IAM) 策略来控制对 IBM Cloud Container Registry 中名称空间的访问权。 有关更多信息,请参阅 授予 IBM Cloud Container Registry 资源访问权限教程管理 Container Registry 的 IAM 访问权限

如何共享图像访问权限?

要访问图像,用户必须是拥有图像的 IBM Cloud 账户的成员。 用户添加到账户后,必须创建适当的 IAM 策略来分配访问权限。

更多信息,请参阅 定义 IAM 访问策略

能否在 IBM Cloud 账户中共享 Container Registry 命名空间?

您不能在 IBM Cloud 账户中共享 Container Registry (icr.io) 命名空间。 命名空间由 IBM Cloud 单个账户拥有,不能与多个账户共享。

是否有未标记的图像?

要查找是否有 未标记的 图像,请运行 ibmcloud cr image-digests 命令来列出图像。 没有标记的图像在“标记”栏中有一个连字符 (-)。

我需要无标记的图像吗?

如果有运行 未标记 映像的活动容器,则必须保留未标记的映像。 如果删除正在使用的未标记图像,可能会导致缩放或自动重启问题。 在以下情况下,删除未标记的图像可能会导致问题:

哪些图像符合条件?

如果使用保留策略清理图像,则只清理符合条件的图像。 始终保留的映像包括 云原生构建包Google 无发行版映像(构建日期设置为特定常数,而非真实构建时间,或根本没有构建时间戳),以及清单。 始终保留的图像不符合要求。

不符合条件的图像仍会显示,但不会计入保留政策中设定的图像总数,也不会被删除。

2013-01-19T00:13:39Z 之前创建的图像不在保留政策评估范围内。

更多信息,请参阅 规划保留

哪些区域可用?

要了解有关 IBM Cloud Container Registry 可用地区的更多信息,请参阅“地区”。

如何让 docker pull 命令返回最新版本?

要查找最新镜像,请运行 ibmcloud cr image-list 命令,而不是 docker pull 命令。 为了更容易找到最近的图像,请每次都为图像定义不同的顺序标签,而不要依赖最新的标签。

如需更多信息,请参阅“为什么我不能在 Container Registry 中使用最新标签提取最新图像?”以获取帮助。

为什么我的 pod 出现 ImagePullBackOff 错误?

您的群集使用存储在图像提取密钥中的 API 密钥授权群集从 IBM Cloud Container Registry 提取图像,或者特定标签的图像不存在于资源库中。 要解决这个问题,请确保您为图片使用了正确的名称和标记,有足够的拉取流量和存储配额,并在命名空间中设置了图片拉取密钥。

如需了解更多信息,请参阅 为什么无法从注册表提取图像,并出现 ImagePullBackOff 或授权错误 以获取帮助。

为什么会出现超出配额的错误?

您超出了当月的图像存储或拉动流量配额。 这意味着您使用的配额超过了您账户当月允许的配额。 要解决这个问题,您可以查看配额限制并根据需要增加配额,或者如果您使用的是精简版计划,则升级到标准版计划。

如需了解更多信息,请参阅“为什么我在 Container Registry 中收到有关配额的错误信息?”和“保持在配额限制范围内”。