使用OCI Cloud Shell创建函数时Docker登录授权失败求助
解决Docker登录ord.ocir.io的Unauthorized错误
1. 修正用户名格式
你使用的/oracleidentitycloudservice/格式不完整,正确的用户名应为租户名/oracleidentitycloudservice/你的OCI用户名,示例命令:
docker login ord.ocir.io --username=your-tenancy-name/oracleidentitycloudservice/your-oci-username@domain.com
注:租户名是OCI控制台左上角显示的租户名称,而非OCID,不要添加多余斜杠。
2. 使用OCI认证令牌作为密码
不要使用OCI控制台登录密码,需生成个人认证令牌:
- 登录OCI控制台,进入「个人资料设置」→「认证令牌」→ 生成新令牌,复制生成的令牌(仅显示一次)
- 执行
docker login ord.ocir.io,按提示输入完整格式的用户名,粘贴令牌作为密码
3. 验证OCI策略权限
确保你的用户/所属组拥有以下必要策略(需在根 compartment 或目标 compartment 下创建):
Allow group <你的组名> to manage repos in tenancy Allow group <你的组名> to manage objects in tenancy
若使用单个用户,将group <你的组名>替换为user <你的用户名>即可。
4. 检查Cloud Shell的OCI配置
执行cat ~/.oci/config,确认文件中的用户、租户、区域信息正确,需保证区域与ord.ocir.io对应(ord为美国东部(芝加哥)区域)。
5. 重置Cloud Shell环境
点击Cloud Shell右上角的「重置环境」按钮,清除缓存后重新尝试登录操作。
OCI Cloud Shell使用Docker的前置要求
- 无需本地Docker:Cloud Shell自带Docker运行环境,Windows本地无需安装Docker,所有操作在云端完成
- OCIR权限:必须拥有管理OCI容器仓库(OCIR)的权限,即配置上述策略
- 认证令牌:必须使用OCI个人认证令牌作为Docker登录密码,不能用控制台登录密码
- 区域匹配:Docker登录的镜像仓库域名(如
ord.ocir.io)需与操作的仓库所在区域一致 - 网络访问:Cloud Shell默认可访问OCI内部服务,若租户有严格网络策略,需确保Cloud Shell能访问OCIR端点
内容的提问来源于stack exchange,提问作者Rajshri Dewangan
相关产品推荐
相关产品推荐

