
# 为什么使用客户端上传镜像失败？
#### denied: you do not have the permission
**问题现象**：使用客户端上传镜像，报如下所示错误：
"denied: you do not have the permission"
**问题原因**：
- 该组织名已被其他用户注册或当前SWR组织数量已超过配额。
- docker login命令使用IAM用户的AK、SK生成，没有对应组织的权限。
**解决方法**：
- 该组织名已被其他用户注册时：建议您先创建组织然后再上传镜像，创建组织的方法请参见[创建组织](https://support.huaweicloud.com/usermanual-swr/swr_01_0014.html)。
- SWR组织数量超过配额时：单个用户的组织数量限制为5个，您可以将镜像上传到已存在的组织下，也可以[提交工单](https://console.huaweicloud.com/ticket/?&locale=zh-cn#/ticketindex/createIndex)申请增加配额。
- 没有对应组织的权限可通过以下两种方法进行授权： **方法一** : 本地授权：使用具有SWR管理员权限的用户在组织管理页面授予要上传镜像的用户目标组织的管理权限。授权操作请参见[授权管理](https://support.huaweicloud.com/usermanual-swr/swr_01_0015.html)
  **方法二** : 使用IAM细粒度授权，为用户授予自定义的权限策略，包含镜像推送的权限，具体操作如下：
  1. 登录[统一身份认证服务控制台](https://console.huaweicloud.com/iam/#/iam/users)。
  
  2. 选择左侧导航树的"权限管理 \> 权限"，单击右上角的"创建自定义策略"填写策略参数。策略名称自定义，策略配置方式选择"JSON视图"。填写策略内容如下（请将namespace1替换为您要上传镜像所到的组织），配置完成后单击"确定"。
     ```
     {
         "Version": "1.1",
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                     "swr:repo:upload"
                 ],
                 "Resource": [
                     "SWR:*:*:repo:namespace1/*" 
                 ]
             },
         ]
     }
     ```
     
  
  
  
  3. 选择左侧导航树的"用户组"，单击您的用户所在的用户组名称进入用户组详情页面，单击"授权"，将[3]创建的权限添加给用户所在的用户组即可。
  
  4. 稍等1分钟待权限生效后进行重新上传。
    
 
#### denied: Image organization does not exist, you should create it first
**问题现象**：使用客户端上传镜像，报如下所示错误：
"denied: Image organization does not exist, you should create it first"
**问题原因**：docker push命令中的组织名称不存在。
**解决方法**：请先创建组织，再重新上传。
#### tag does not exist: xxxxxx或An image does not exist locally with the tag: xxxxxx
**问题现象**：使用客户端上传镜像，报如下所示错误：
"tag does not exist: xxxxxx"
或
"An image does not exist locally with the tag: xxxxxx"
**问题原因**：上传的镜像或镜像版本不存在。
**解决方法**：通过docker images查看本地镜像，确认要上传的镜像名称及版本后，重新上传镜像。
#### name invalid: 'repository' is invalid
**问题现象**：使用客户端上传镜像，报如下所示错误：
"name invalid: 'repository' is invalid"
**问题原因**：组织命名或镜像命名不规范。
**解决方法**：以下分别是组织名（namespace）和仓库名（repository）的命名正则表达式：
namespace：\^(\[a-z\]+(?:(?:(?:_\|__\|\[-\]\*)\[a-z0-9\]+)+)?)$，长度范围为：1-64；
repository：\^(\[a-z0-9\]+(?:(?:(?:_\|__\|\[-\]\*)\[a-z0-9\]+)+)?)$，长度范围为：1-128。
您可以按照上述命名规范，重新指定上传的组织和镜像名称。
#### 偶现推送镜像超时
**问题现象**：偶现推送镜像超时
**问题原因**：您在国内机器往国外推镜像，网速慢，偶现连接失败。
#### errorDetail":{"message":"error parsing HTTP 404 response body: no error details found in HTTP response body
**问题现象**：使用客户端上传镜像，报如下所示错误：
{"errorDetail":{"message":"error parsing HTTP 404 response body: no error details found in HTTP response body: "{\\"code\\":404,\\"message\\":\\"Not Found\\"}""},"error":"error parsing HTTP 404 response body: no error detail s found in HTTP response body: "
**问题原因**：连接不上镜像仓库，网络不通。
**解决办法**：请检查网络后重试。
- 内网访问 当您使用的安装容器引擎的客户端为云上的ECS或CCE节点，且机器与容器镜像仓库在同一区域时，上传下载镜像走内网链路。您无需进行任何访问配置，直接访问SWR即可。
  
- 公网访问 该场景下安装容器引擎的机器为云上的ECS或CCE节点，机器与容器镜像仓库不在同一区域，上传下载镜像走公网链路，机器需要绑定弹性公网IP。详细配置方法请参考[公网访问](https://support.huaweicloud.com/bestpractice-swr/swr_bestpractice_0008.html)。
  
- VPN/云专线访问 这种情况下可以使用云专线或VPN连接华为云VPC，通过专线/VPN打通用户本地数据中心到VPC间的网络，使用VPC终端节点访问SWR。详细配置方法请参考[VPN/云专线访问](https://support.huaweicloud.com/bestpractice-swr/swr_bestpractice_0009.html)。
  
 
#### 不允许用户上传镜像
**问题现象**：使用客户端上传镜像，报如下所示错误：
"Not allow to login、upload or download image"
**问题原因**：用户大批量并发上传镜像或者攻击服务，系统把用户拉黑，用户无法登录和上传下载镜像。
**解决方法** ：
- 请在30分钟之后重新尝试。
- 通过提工单的形式，由运维工程师进行处理。
 
 #### 超过可上传镜像配额
单租户上传镜像数量受配额限制，包括镜像配额和镜像版本配额。超过镜像配额之后再上传镜像会失败，分为以下两种场景。
![](https://support.huaweicloud.com/swr_faq/public_sys-resources/note_3.0-zh-cn.png)
- 如果上传的镜像达到配额，不能上传新的镜像，但是存量镜像如果镜像版本没有超过配额仍可继续上传。

- 如果上传的某个镜像版本达到配额，则该镜像不能继续上传，其他镜像不受影响。
 
此时可对不再使用的镜像执行[镜像老化](https://support.huaweicloud.com/usermanual-swr/swr_01_0102.html)，之后再重新上传，也可以[提交工单](https://console.huaweicloud.com/ticket/?&locale=zh-cn#/ticketindex/createIndex)申请增加配额。
默认配额如下：
- **镜像配额：** **500个。**

- **镜像版本：300** **个** **。**
 
#### 上传镜像失败，返回400错误码
**问题现象**：使用客户端上传镜像，报如下所示错误：
- 报错样例一： "ERROR: failed to solve: failed to push swr.xxx.com/xxx:xxx: failed commit on ref "index-sha256:xxx": unexpected status from PUT request to https://swr.xxx.com/xxx:xxx: 400 Bad Request"
  ![](https://support.huaweicloud.com/swr_faq/zh-cn_image_0000002530235201.png "点击放大")
  
- 报错样例二： "error from registry: Invalid image, fail to parse 'manifest.json'"
  ![](https://support.huaweicloud.com/swr_faq/zh-cn_image_0000002498155278.png "点击放大")
  
**问题原因**：基础版SWR不支持上传Open Container Initiative（OCI）规范（v1.0 和 v1.1）的镜像。
**解决方法**：
- 方法一（推荐）：基础版SWR不支持OCI格式的镜像。请使用[SWR企业版](https://support.huaweicloud.com/usermanual2-swr/swr_02_0520.html)通过客户端形式上传。
- 方法二：使用docker buildx build命令并增加--provenance=false参数。
  ![](https://support.huaweicloud.com/swr_faq/public_sys-resources/note_3.0-zh-cn.png)
  方法二仅适用于客户自构建的镜像，第三方镜像不支持该规避方案。
  示例：
  ```
  docker buildx build --provenance=false --platform linux/amd64,linux/arm64 -t swr.cn-north-4.myhuaweicloud.com/xxx/xxx:latest --push .
  ```
  
 
