本文介紹Docker登錄、推送和拉取失敗時處理方法。
docker login失敗
為什么docker login失敗?
登錄失敗時,參考如下步驟進行排查。
您使用了阿里云賬戶的登錄密碼,而不是Registry的獨立登錄密碼。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
下載失敗時,請參考如下步驟進行排查。
檢查鏡像地址:
確認您輸入的鏡像地址是正確的,特別是在使用公共鏡像時。
可以在容器鏡像服務控制臺中查看鏡像的具體地址和版本。
私有倉庫的登錄狀態:
使用
cat ~/.docker/config.json
查看已登錄的 Registry 域名,確保您的私有倉庫域名在其中。如果未登錄,需使用
docker login
命令進行登錄。
賬戶權限:
確認您使用的賬戶有權限訪問或下載該鏡像,尤其是使用子賬戶時,默認情況下可能沒有相關權限。
可以在倉庫的訪問控制設置中進行權限管理。關于倉庫的訪問控制授權,請參見倉庫訪問控制。
少數情況下會出現如下報錯,下載的塊文件檢驗失敗。一般重試即可解決。
報錯提示: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會失敗?
推送鏡像之前請確保鏡像已創建鏡像倉庫。如果沒有鏡像倉庫,請確保命名空間已開啟自動創建倉庫功能。