常见问题 Container Registry
IBM Cloud® Container Registry 的常见问题。
有关 Vulnerability Advisor 的常见问题,请参见 Vulnerability Advisor 的 FAQ。
Container Registry 的参考文档在哪里?
IBM Cloud Container Registry 的参考文档见 IBM Cloud 文档。 更多信息,请参阅 关于 Container Registry 和 IBM Cloud Container Registry CLI。
如何设置 Container Registry CLI?
设置 IBM Cloud Container Registry CLI 的步骤如下:
- 确保已安装 IBM Cloud CLI。
- 运行
ibmcloud plugin install container-registry
命令安装container-registry
CLI 插件。 - 使用
ibmcloud login
命令登录 IBM Cloud。 - 使用
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@digest
或 repository:tag
。
版本库、摘要和标签的值会在运行命令时返回。
如需了解更多信息,请发送电子邮件至 ibmcloud cr image-list
(ibmcloud cr images
) 和 ibmcloud cr image-digests
(ibmcloud 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 访问权限。
是否有未标记的图像?
要查找是否有 未标记的 图像,请运行 ibmcloud cr image-digests
命令来列出图像。 没有标记的图像在“标记”栏中有一个连字符
(-)。
我需要无标记的图像吗?
如果有运行 未标记 映像的活动容器,则必须保留未标记的映像。 如果删除正在使用的未标记图像,可能会导致缩放或自动重启问题。 在以下情况下,删除未标记的图像可能会导致问题:
- 图像是以摘要为参考进行部署的。 例如,IBM Cloud Code Engine 在为应用程序提供服务时会解析并使用映像摘要,请参阅 从公共注册表中的映像部署应用程序工作负载。
- 图像引用由网络钩子服务(如 Portieris.
哪些图像符合条件?
如果使用保留策略清理图像,则只清理符合条件的图像。 始终保留的映像包括 云原生构建包和 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 中收到有关配额的错误信息?”和“保持在配额限制范围内”。