本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在某些情況下,針對 Amazon ECR 執行 Docker 命令可能會導致錯誤訊息。以下說明了一些一般錯誤訊息與潛在解決方案。
主題
Docker 日誌不包含預期的錯誤消息
要開始調試任何與 Docker 相關的問題,請首先在主機實例上運行的 Docker 守護程序上打開 Docker 調試輸出。如果您在 Amazon ECS 容器執行個體上使用從 Amazon ECR 擷取的映像檔,請參閱 Amazon 彈性容器服務開發人員指南中的從 Docker 精靈設定詳細輸出。
當從 Amazon ECR 儲存庫提取映像時,出現錯誤:「Filesystem Verification Failed」(檔案系統驗證失敗) 或「404: Image Not Found」(404:找不到映像)
在 Docker 1.9 或以上版本中使用 docker pull 命令從 Amazon ECR 儲存庫映像時,您可能收到錯誤 Filesystem verification failed
。當您使用 Docker 1.9 以前的版本時,您可能會收到錯誤 404: Image not
found
。
以下列出一些可能的原因及其說明。
- 本機磁碟已滿
-
若您正在執行 docker pull 的本機磁碟已滿,則在本機檔案上計算的 SHA-1 雜湊,可能與 Amazon ECR 計算的 SHA-1 雜湊不同。檢查您的本機磁碟有足夠的剩餘空間以儲存您提取的 Docker 映像。您也可以刪除舊的映像,以為新的映像騰出空間。使用 docker images 命令以查看所有本機下載且包含容量大小的 Docker 映像清單。
- 由於網路錯誤,用戶端無法連接至遠端儲存庫
-
對 Amazon ECR 儲存庫的呼叫需要正常運作的網路連線。確認您的網路設定,並確認其他工具與應用程式可正常存取網路資源。如果您在私有子網路中的 Amazon EC2 執行個體上執行 docker pull,請確認該子網路擁有對網際網路的路由。使用網路地址轉譯 (NAT) 伺服器或受管 NAT 閘道。
目前,對 Amazon ECR 儲存庫的呼叫也需要透過您的企業防火牆的網路存取至 Amazon Simple Storage Service (Amazon S3)。如果您的組織使用允許服務端點的防火牆軟體或 NAT 裝置,請務必確保您目前區域的 Amazon S3 服務端點是受到允許的。
如果您正在 HTTP 代理後使用 Docker,您可以使用適當的代理設定來設定 Docker。如需詳細資訊,請參閱 Docker 文件中的 HTTP 代理
。
當從 Amazon ECR 提取映像時出現錯誤:「Filesystem Layer Verification Failed」(檔案系統分層驗證失敗)
當您使用 docker pull 命令提取映像時,您可能會收到錯誤 image image-name not found
。若您檢查 Docker 日誌時,您可能會看到像下列的錯誤:
filesystem layer verification failed for digest sha256:2b96f...
此錯誤表示一個或更多的映像分層下載失敗。以下列出一些可能的原因及其說明。
- 您可能正在使用較舊版本的 Docker
-
在您使用低於 1.10 版本的 Docker 時,有少許機率會出現此錯誤。將您的 Docker 用戶端更新為 1.10 或更新的版本。
- 您的用戶端遭遇網路或磁碟錯誤
-
完全的磁碟或網路錯誤可能阻礙一個或更多分層的下載,如同稍早討論過的
Filesystem verification failed
訊息。遵循上述建議,以確保您的檔案系統未滿,且已在您的網路中啟用存取 Amazon S3。
當推送至儲存庫時,出現 HTTP 403 錯誤或「無基本身分驗證憑證」錯誤
即使您已透過 aws ecr
get-login-password 命令成功驗證至 Docker,有時候您可能仍會收到 HTTP 403 (Forbidden)
錯誤,或是從 docker
push 或 docker pull 命令收到錯誤訊息 no basic auth credentials
。以下是此問題的一些已知原因:
- 您已驗證至不同區域
-
驗證請求是繫結至特定區域的,且無法跨區域使用。例如,如果您從美國西部 (奧勒岡) 取得了授權字符,您便不得將其用於驗證您美國東部 (維吉尼亞北部) 中的儲存庫。若要解決此問題,請確認您已從與儲存器所在相同的區域擷取身分驗證字符。如需詳細資訊,請參閱 Amazon 中的私有登錄檔身分驗證 ECR。
- 您已完成身分驗證,可推送至您沒有權限的儲存庫
-
您沒有推送至儲存庫的必要權限。如需詳細資訊,請參閱 Amazon ECR 中的私有儲存庫政策。
- 您的字符已過期
-
使用
GetAuthorizationToken
操作取得的授權字符預設過期期間是 12 小時。 wincred
憑證管理工具中的錯誤-
某些適用 Windows 的 Docker 版本使用稱作
wincred
的憑證安全管理工具,該工具並不會適當的處理由 aws ecr get-login-password 產生的 Docker 登入命令 (如需詳細資訊,請參閱 https://github.com/docker/docker/issues/22910)。您可以執行輸出的 Docker 登入命令,但若您試著推送或提取映像時,那些命令將失敗。您可以透過從 aws ecr get-login-password 輸出 Docker 登入命令的登錄檔引數中移除 https://
機制以解決此錯誤。無 HTTPS 機制的範例 Docker 登入命令如下所示。docker login -u AWS -p
<password>
<aws_account_id>
.dkr.ecr.<region>
.amazonaws.com