為什么創建組織失敗?
問題現象:創建組織失敗,頁面提示該組織已經存在,但在“組織管理”頁面沒有查詢到該組織。
解決辦法:組織名稱全局唯一,即當前區域下,組織名稱唯一。
創建組織時如果提示組織已存在,可能該組織名稱已被其他用戶使用,請重新設置一個組織名稱。
CCE工作負載拉取SWR鏡像異常,提示為“未登錄”
當CCE工作負載無法正常拉取SWR的鏡像,且提示“未登陸”時,請排查該工作負載的yaml文件中是否存在“imagePullSecrets”字段,且name參數值需固定為default-secret。
示例:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginximagePullPolicy: Always
name: nginx
imagePullSecrets:
- name: default-secret
為什么登錄指令執行失敗?
登錄指令執行失敗有以下幾種情況:
- 容器引擎未安裝正確,報如下所示錯誤:
“docker: command not found”
解決方法: 重新安裝docker容器引擎。
由于容器鏡像服務支持容器引擎1.11.2及以上版本上傳鏡像,建議下載對應版本。
安裝容器引擎需要連接互聯網,內網服務器需要綁定彈性公網IP后才能訪問。
- 臨時登錄指令已過期或登錄指令中區域項目名稱、AK、登錄密鑰錯誤,報如下所示錯誤:
“unauthorized: authentication required”
解決方法: 登錄容器鏡像服務控制臺,在左側菜單欄選擇“我的鏡像”,單擊右側“客戶端上傳”獲取登錄指令。
a. 獲取臨時的登錄指令:單擊“生成臨時登錄指令”,在彈出的頁面中單擊
復制登錄指令。
b. 獲取長期有效的登錄指令:單擊“如何獲取長期有效登錄指令”,具體方法請參見用戶指南 > 鏡像管理> 獲取長期有效登錄指令。
- 登錄指令中鏡像倉庫地址錯誤,報如下所示錯誤:
“Error llgging in to v2 endpoint, trying next endpoint: Get //{{endpoint}}/v2/: dial tcp: lookup {{endpoint}} on xxx.xxx.xxx.xxx:53 : no such host”
解決方法:
c. 修改登錄指令中的鏡像倉庫地址。
鏡像倉庫地址格式: registry.區域項目名稱.daliqc.cn,如“蘇州”對應的鏡像倉庫地址為registry.cn-jssz1.daliqc.cn。
d. 獲取臨時登錄指令。
- x509: certificate has expired or is not yet valid
長期有效登錄指令中AK/SK被刪除導致,請使用有效的AK/SK生成登錄指令。
- x509: certificate signed by unknown authority
問題原因:
容器引擎客戶端和SWR之間使用HTTPS的方式進行通信,客戶端會對服務端的證書進行校驗。如果服務端證書不是權威機構頒發的,則會報如下錯誤:x509: certificate signed by unknown authority


解決方法:
如果用戶信賴服務端,跳過證書認證,那么可以手動配置Docker的啟動參數,配置方法如下:
CentOS:
修改“/etc/docker/daemon.json”文件(如果沒有,可以手動創建),在該文件內添加如下內容:
{
"insecure-registries": ["{鏡像倉庫地址}"]
}
Ubuntu:
修改“/etc/default/docker”文件,在DOCKER_OPTS配置項中增加如下內容:
DOCKER_OPTS="--insecure-registry {鏡像倉庫地址}"
EulerOS:
修改“/etc/sysconfig/docker”文件,在INSECURE_REGISTRY配置項中增加如下內容:
INSECURE_REGISTRY='--insecure-registry {鏡像倉庫地址}'
說明鏡像倉庫地址支持域名和IP形式。
- 域名:registry.區域項目名稱.daliqc.cn。例如“蘇州”的鏡像倉庫地址為:registry.cn-jssz1.daliqc.cn。
- IP:可通過ping鏡像倉庫地址(域名形式)獲取。
配置完成后,執行systemctl restart docker重啟容器引擎。
為什么使用客戶端上傳鏡像失敗?
denied: you do not have the permission
問題現象 :使用客戶端上傳鏡像,報如下所示錯誤:
“denied: you do not have the permission”
問題原因 :
- 該組織名已被其他用戶注冊或當前SWR組織數量已超過配額。
- docker login命令使用IAM用戶的AK、SK生成,沒有對應組織的權限。
解決方法 :
- 該組織名已被其他用戶注冊時:建議您先創建組織然后再上傳鏡像。
- SWR組織數量超過配額時:單個用戶的組織數量限制為5個,您可以將鏡像上傳到已存在的組織下,也可以提交工單申請增加配額。
- 沒有對應組織的權限:使用帳號授權后,可以正常推送。
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。
為什么通過頁面上傳鏡像失敗?
SWR對鏡像的命名和地址有嚴格的規范。如果鏡像的命名不規范或鏡像地址不規范都會導致鏡像上傳失敗。
鏡像格式不合法或鑒權失敗
問題現象 :通過頁面上傳鏡像,出現“鏡像格式不合法”或“鑒權失敗”的報錯。
問題原因 :鏡像地址不規范,導致上傳失敗。
鏡像地址各個部分的含義如下,最后的tag(版本號)可省略,如果省略則表示latest版本,其余部分均不可省略,且不可多余。
樣例:registry.cn-jssz1.daliqc.cn/repo_namespace/repo_name:tag
- registry.cn-jssz1.daliqc.cn為容器鏡像服務的鏡像倉庫地址。
- repo_namespace為組織名稱,命名正則表達式為^([a-z]+(?:(?:(?:_|__|[-]*)[a-z0-9]+)+)?)$,長度范圍為:1-64。
- repo_name:tag為鏡像名稱和版本號,鏡像命名正則表達式為^([a-z0-9]+(?:(?:(?:_|__|[-]*)[a-z0-9]+)+)?)$,長度范圍為:1-128。
您可以將鏡像解壓,打開文件manifest.json文件查看RepoTags字段的值是否符合上述規范。


解決方法 :按照命名規范,重新給鏡像打tag,然后使用docker save命令保存鏡像,然后再使用頁面上傳。

注意SWR判定鏡像名是否合法不是以用戶在界面上傳鏡像時的文件名為依據,而是依據鏡像包中的repositories和manifest.json文件。
一直卡在上傳界面直到超時
問題現象 :通過頁面上傳鏡像,一直卡在上傳界面直到超時。
問題原因 :
- 鏡像命名不規范,導致上傳失敗。
- 頁面上傳走公網鏈路,可能會因為網絡不穩定導致傳輸異常。
解決方法 :
- 您可以按照鏡像命名規范修改鏡像名稱后,重新上傳鏡像。
- 建議更換網絡環境,或者通過容器引擎客戶端上傳。
為什么docker pull指令執行失敗?
x509: certificate sigined by unknown authority
問題現象: 使用docker pull拉取鏡像,報錯“x509: certificate sigined by unknown authority”。
問題原因:
- 容器引擎客戶端和SWR之間使用HTTPS的方式進行通信,客戶端會對服務端的證書進行校驗。如果客戶端安裝的根證書不完整,會報如下錯誤:“x509: certificate sigined by unknown authority”。
- 容器引擎客戶端配置了Proxy導致。
解決方法:
- 如果您信賴服務端,跳過證書認證,那么可以手動配置容器引擎的啟動參數,配置如下(其中地址配置成需要的即可,選擇一個配置即可):
/etc/docker/daemon.json(如果沒有可以手動創建),在該文件內添加如下配置(注意縮進,2個空格):
{
"insecure-registries":["鏡像倉庫地址"]
}
/etc/sysconfig/docker:
INSECURE_REGISTRY='--insecure-registry=鏡像倉庫地址'
添加配置后執行如下命令重啟:systemctl restart docker或service restart docker。
- 執行docker info命令,檢查Proxy配置是否正確,修改為正確的Proxy配置。
Error response from daemon
問題現象: 使用docker pull拉取官方鏡像,如docker pull elasticsearch:5時,報錯“Error response from daemon: Get //registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)”。
問題原因: Docker默認的源為國外官方源,鏡像拉取速度較慢,可能因超時而拉取失敗。
解決方法: 將Docker鏡像源修改為容器鏡像服務或國內鏡像源地址。
Error: remote trust data does not exist
問題現象: 使用docker pull拉取鏡像,報錯“Error: remote trust data does not exist”。
問題原因: 客戶端開啟鏡像簽名驗證,而鏡像沒有鏡像簽名層。
解決方法: 查看“/etc/profile”文件中的環境變量是否設置了 DOCKER_CONTENT_TRUST=1 ,如果設置了,請將其改為 DOCKER_CONTENT_TRUST=0 ,然后執行source /etc/profile生效。
如何解決內網下載鏡像失敗?
內網下載鏡像失敗基本上都是由于DNS配置問題導致的,可以采用以下兩種方法進行修改。
- 方法一:
編輯“/etc/resolv.conf”文件,在/etc/resolv.conf中新增一個內網DNS服務器地址,具體的內網DNS地址請參考云主機所在VPC子網的DNS設置。
說明新增的DNS服務器地址必須位于所有原有的DNS服務器地址之前。
DNS配置操作在保存“/etc/resolv.conf”文件的修改操作后立即生效。
- 方法二:
“/etc/resolv.conf”文件的修改操作在彈性云主機重啟后會失效,需要重新進行配置。如果用戶不希望每次重啟彈性云主機后都重新配置DNS,可以按如下步驟修改虛擬私有云的子網信息,將DNS服務器地址添加到彈性云主機對應的子網中。
注意對虛擬私有云的子網信息的修改會影響所有使用該子網創建的彈性云主機。
e. 登錄管理控制臺,選擇“網絡 > 虛擬私有云”。
f. 修改VPC子網的DNS服務器地址。
g. 重啟彈性云主機,查看“/etc/resolv.conf”文件的內容,確認其中包含待配置的DNS服務器地址,并且新增的DNS服務器地址位于其他DNS服務器地址之前。