设置 Container Registry CLI 和命名空间
要在 IBM Cloud® Container Registry 中管理 Docker 映像,必须安装 container-registry
CLI 插件,并在 资源组中环境以及所包含资源实例遵循的约束。 用户可以与资源组相关联以启用协作。创建 命名空间在注册表中存储映像的存储库的集合。 名称空间与 IBM Cloud 帐户相关联,该帐户可以包含多个名称空间。。
不要将个人信息放入容器映像、名称空间名称、描述字段或任何映像配置数据(例如,映像名称或映像标签)中。
要添加和删除命名空间,必须在账户级别拥有管理器角色,请参阅 配置 IBM Cloud Container Registry 的访问角色。
开始之前,安装 IBM Cloud CLI,具体请参阅 IBM Cloud CLI 使用入门。
安装 container-registry
CLI 插件
安装 container-registry
CLI 插件,以便在 IBM Cloud Container Registry 中使用命令行管理命名空间和 Docker 镜像。
-
运行以下命令安装
container-registry
CLI 插件:ibmcloud plugin install container-registry
有关安装插件的更多信息,请参阅 使用插件扩展 IBM Cloud CLI。
-
可选:配置 Docker 客户端,以便在没有 root 权限的情况下运行命令。 如果未执行此步骤,那么必须以
ibmcloud login
或以 root 用户身份运行ibmcloud cr login
、docker pull
、docker push
和sudo
命令。
IBM Cloud Container Registry 支持 和其他客户端。Docker 要使用其他客户端登录,请参阅 交互式访问命名空间。
现在,您可以在 IBM Cloud Container Registry 中设置自己的名称空间。
更新 container-registry
CLI 插件
您可能希望定期更新 container-registry
CLI 插件以使用新功能。
更新 container-registry
CLI 插件版本 1.0
要更新 Container Registry CLI 的 1.0 版本,请运行以下命令:
ibmcloud plugin update container-registry
更新 container-registry
CLI 插件版本 0.1
要更新 Container Registry CLI 的 0.1 版本,请运行以下命令,其中 VERSION_NUMBER
是 CLI 的版本号。
Container Registry CLI 的 0.1 版本已被弃用。 更多信息,请参阅 Container Registry 插件 0.1 的所有版本均已过时。
ibmcloud plugin install container-registry -v VERSION_NUMBER
例如,要将 CLI 更新到 0.1.584 版本,请运行以下命令:
ibmcloud plugin install container-registry -v 0.1.584
卸载 container-registry
CLI 插件
如果不想再使用 Container Registry,可以卸载 container-registry
插件将其删除。
要卸载 container-registry
CLI 插件,请运行以下命令:
ibmcloud plugin uninstall container-registry
规划名称空间
IBM Cloud Container Registry 提供由 IBM 托管和管理的多租户私有镜像 注册表包含用于创建容器的公共或专用映像的存储和分发服务。。 您可以通过设置注册表名称空间,在此注册表中存储和共享 Docker 映像。
IAM 访问权限可在账户级别、所有命名空间或命名空间本身授予。 也可以在资源组一级授予访问权限。 命名空间在资源组中创建,不能更改,因此可以在资源组级别授予访问权限。 如果未指定资源组,也没有目标资源组,则会在创建命名空间时分配默认资源组。
如果有一个不在资源组中的旧命名空间,可以将其分配给一个资源组,然后在资源组级别为该命名空间设置权限。 有关资源组的更多信息,请参阅 将现有命名空间分配给资源组。
分配给资源组的名称空间显示在 IBM Cloud 控制台的 资源列表 页面中。
例如,您可以设置多个名称空间,以针对生产和打包编译环境具有不同的存储库。 如果要在多个 IBM Cloud 区域中使用注册表,那么必须为每个区域设置名称空间。 在区域中,名称空间名称是唯一的。 您可以在每个区域使用相同的命名空间名称,除非已有人在该区域使用了相同名称的命名空间。
每个区域可以有 100 个命名空间。
要仅使用 IBM 提供的公共映像,您无需设置名称空间。
如果不确定是否已为账户设置了命名空间,可使用 -v
选项运行 ibmcloud cr namespace-list
命令来获取现有命名空间信息。
选择名称空间时,请考虑以下规则:
- 您的名称空间在同一区域的所有 IBM Cloud 帐户中必须唯一。
- 您的名称空间必须为 4 - 30 个字符。
- 您的名称空间必须以字母或数字开头和结尾。
- 您的名称空间必须只包含小写字母、数字、连字符 (-) 和下划线 (_)。
不要将个人信息放入名称空间名称中。
设置第一个命名空间后,您将被分配到免费的 IBM Cloud Container Registry 服务计划,除非您 升级计划。
使用命名空间的用户权限
通过使用 IAM 角色,可以控制哪些用户可以使用命名空间。
-
要添加、分配和删除命名空间,必须在 IBM Cloud Container Registry 服务中拥有账户级别的管理员角色,请参阅 配置 IBM Cloud Container Registry 的访问角色。
-
要添加和分配命名空间,您还必须拥有要创建命名空间的资源组的 Viewer 平台角色。 要将资源组的“查看器”角色分配给用户,请运行以下命令
ibmcloud iam user-policy-create
命令,其中USER
是用户名,RESOURCE_GROUP_ID
是资源组 ID:ibmcloud iam user-policy-create USER --roles Viewer --resource-type resource-group --resource RESOURCE_GROUP_ID
-
-
要查看和分析命名空间,必须在 IBM Cloud Container Registry 服务中拥有阅读器或管理器角色,请参阅 使用 IBM Cloud Container Registry 的访问角色。
有关用户角色的更多信息,请参阅 定义 IAM 访问策略。
设置名称空间
必须创建名称空间才能在 IBM Cloud Container Registry 中存储 Docker 映像。
在开始之前,请完成以下任务:
要创建命名空间,请参阅 设置命名空间。 命名空间在指定的资源组中创建,这样就可以在资源组级别配置对命名空间内资源的访问。 如果未指定资源组,也没有目标资源组,则使用默认资源组。 有关资源组的更多信息,请参阅 管理资源组。
分配给资源组的名称空间显示在 IBM Cloud 控制台的 资源列表 页面中。
名称空间在同一区域的所有 IBM Cloud 帐户中必须唯一。 名称空间必须具有 4 到 30 个字符,并且只能包含小写字母、数字、连字符 (-) 和下划线 (_)。 名称空间必须以字母或数字开头和结尾。
现在,您可以将 Docker 映像推送到 IBM Cloud Container Registry 中的名称空间,并与帐户中的其他用户共享这些映像。 要控制对 IBM Cloud IAM 中名称空间的访问权,请参阅创建策略。
将现有命名空间分配给资源组
在 2020 年 7 月 29 日之前的 CLI 0.1.484 或更早版本和 IBM Cloud 控制台中创建的命名空间不会分配给资源组。 如果有一个未分配给资源组的命名空间,可以将该命名空间分配给一个资源组,然后在资源组级别为该命名空间设置权限。
只能为资源组分配一次命名空间。 当命名空间位于一个资源组中时,不能将其移动到另一个资源组。
您可以使用 ibmcloud cr namespace-assign
命令将现有命名空间分配给资源组。 要了解哪些命名空间已分配给资源组,哪些尚未分配,请运行 ibmcloud cr namespace-list
命令,并使用 -v
选项。
分配给资源组的名称空间显示在 IBM Cloud 控制台的 资源列表 页面中。
如果命名空间没有全部显示在资源列表页面中,请参阅 " 为什么我的命名空间没有全部显示在资源列表中?
有关资源组的更多信息,请参阅 创建资源组。
要将现有命名空间分配给资源组,请完成以下步骤:
-
登录到 IBM Cloud。
ibmcloud login
-
要查找命名空间,请列出可用的命名空间。
ibmcloud cr namespace-list -v
-
将命名空间分配给资源组。
将
MY_RESOURCE_GROUP
替换为资源组的名称或 ID,将MY_NAMESPACE
替换为命名空间的名称。ibmcloud cr namespace-assign -g MY_RESOURCE_GROUP MY_NAMESPACE
除去名称空间
如果不再需要某个注册表名称空间,那么可以从 IBM Cloud 帐户除去该名称空间。
-
登录到 IBM Cloud。
ibmcloud login
-
列出可用的名称空间。
ibmcloud cr namespace-list
-
除去名称空间。
当您除去名称空间时,也会删除存储在该名称空间中的任何映像。 无法撤销此操作。
将
MY_NAMESPACE
替换为要删除的命名空间。ibmcloud cr namespace-rm MY_NAMESPACE
删除名称空间后,可能会花费几分钟,才可以复用该名称空间。