本文介紹Docker登入、推送和拉取失敗時處理方法。
docker login失敗
為什麼docker login失敗?
登入失敗時,參考如下步驟進行排查。
您使用了阿里雲賬戶的登入密碼,而不是Registry的獨立登入密碼。Registry的登入密碼是在Container Registry控制台上設定與修改的,操作步驟如下。
在執行個體列表頁面單擊執行個體卡片,進入執行個體詳情頁。
在左側導覽列選擇
。在訪問憑證頁面,單擊右上方的設定固定密碼。
在設定固定密碼對話方塊,設定Registry的登入密碼,然後單擊確定。
您使用了sudo進行登入。使用sudo時,系統第一個要求輸入的密碼是Linux的使用者密碼。您可能在這裡輸入了Registry的登入密碼,導致登入操作失敗。
區分這個錯誤的方式很簡單,Linux的使用者密碼大多允許嘗試三次,錯誤時會提示try again。而Registry的登入密碼錯誤一次之後就會退出,並返回以下錯誤。
Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthorized: authentication required
如果您使用的是RAM使用者,請勿使用阿里雲帳號設定的密碼登入鏡像倉庫,您需要在容器鏡像控制台設定密碼,然後使用該密碼登入鏡像倉庫。具體操作,請參見配置訪問憑證。
為什麼docker login逾時?
檢查您的網路是否可以正常使用。如果您的網路不能正常使用,將無法訪問到執行個體,從而會導致docker login逾時。
docker pull失敗
docker pull失敗,報錯提示Error: image xxx not found
報錯提示Error: image xxx not found
下載失敗時,請參考如下步驟進行排查。
如果您是從公用倉庫中下載鏡像,那麼問題可能是鏡像地址不正確。
請在Container Registry控制台搜尋該公用倉庫,檢查確認想要下載的這個鏡像版本是否真實存在。
如果您是從私人倉庫中下載鏡像,需要首先確認Registry的登入狀態。
運行下邊的命令,顯示所有登入的Registry網域名稱。
cat ~/.docker/config.json
查看裡面是否包含您想要下載鏡像的Registry網域名稱。
如果沒有的話,您需要先進行登入操作。
如果顯示已經登入的話,那麼您需要確認您登入的這個賬戶是否有許可權下載這個鏡像。子賬戶預設沒有任何許可權。關於倉庫的存取控制授權,請參見倉庫存取控制。
說明少數情況下會出現如下報錯,下載的塊檔案檢驗失敗。一般重試即可解決。
報錯提示:
Error: filesystem layer verification failed for digest
為什麼在企業版執行個體匿名拉取鏡像會失敗?
您需要在概覽頁面右側執行個體設定地區開啟公開匿名拉取,您才可以匿名拉取鏡像。
docker push失敗
docker push失敗,報錯提示denied: requested access to the resource is denied
上傳失敗時,主要的排查步驟和docker pull基本一致,只是授權要求的層級比docker pull更高。
為什麼docker push會失敗?
推送鏡像之前請確保鏡像已建立鏡像倉庫。如果沒有鏡像倉庫,請確保命名空間已開啟自動建立倉庫功能。