Amazon CannotPullContainer 中的 ECS 任務錯誤 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon CannotPullContainer 中的 ECS 任務錯誤

下列錯誤表示任務無法啟動,因為 Amazon ECS 無法擷取指定的容器映像。

注意

1.4 Fargate 平台版本會截斷長的錯誤訊息。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS Management Console,請參閱 檢視 Amazon ECS 已停止的任務錯誤

任務無法提取映像。檢查角色是否具有從登錄檔提取映像的許可。

此錯誤表示任務因為許可問題而無法提取任務定義中指定的映像。

若要解決此問題:

  1. 檢查映像是否存在於 irepository。 如需有關檢視映像的詳細資訊,請參閱 Amazon Elastic Container Registry 使用者指南中的在 Amazon ECR 中檢視映像詳細資訊

  2. 確認 role-arn 具有提取映像的正確許可。

    如需有關如何更新角色的資訊,請參閱 AWS Identity and Access Management 使用指南中的更新角色的許可

    任務使用下列其中一個角色:

任務無法提取 ‘image-name來自 Amazon ECR 儲存庫的 'repository URI’。 任務與 Amazon ECR 之間發生連線問題。檢查您的任務網路組態。

此錯誤表示任務無法連線至 Amazon ECR。檢查與 的連線 repository URI 儲存庫。

如需有關如何驗證和解決問題的資訊,請參閱 驗證 Amazon ECS 已停止任務連線

任務無法提取映像。檢查您的網路組態

此錯誤表示任務無法連線至 Amazon ECR。

如需有關如何驗證和解決問題的資訊,請參閱 驗證 Amazon ECS 已停止任務連線

API 錯誤 (500):Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/:net/http: 請求在等待連線時取消

此錯誤表示連線逾時,因為網際網路的路由不存在。

要解決此問題,則可以採取下列方式:

  • 對於公有子網路中的任務,請在啟動任務時指定 ENABLED for Auto-assign Public IP。如需詳細資訊,請參閱將應用程式作為 Amazon ECS 任務執行

  • 對於私有子網路中的任務,在啟動任務時指定 DISABLED for Auto-assign public IP,並在 NAT 中設定 VPC 閘道,以將請求路由至網際網路。如需詳細資訊,請參閱 Amazon NAT 使用者指南中的 Word Gateways VPC

API錯誤

此錯誤表示 Amazon ECR 端點有連線問題。

如需有關如何解決此問題的資訊,請參閱 AWS Support 網站上的如何解決 Amazon ECR 中的 Amazon ECS 錯誤「CannotPullContainerError: API 錯誤」

write /var/lib/docker/tmp/GetImageBlob111111111:裝置上沒有剩餘空間

此錯誤表示磁碟空間不足。

若要解決這個問題,請釋放磁碟空間。

如果您使用的是 Amazon ECS 最佳化 AMI,您可以使用下列命令來擷取檔案系統上 20 個最大的檔案:

du -Sh / | sort -rh | head -20

輸出範例:

5.7G    /var/lib/docker/containers/50501b5f4cbf90b406e0ca60bf4e6d4ec8f773a6c1d2b451ed8e0195418ad0d2
1.2G    /var/log/ecs
594M    /var/lib/docker/devicemapper/mnt/c8e3010e36ce4c089bf286a623699f5233097ca126ebd5a700af023a5127633d/rootfs/data/logs
...

在某些情況下,執行中的容器可能會填入根磁碟區。如果容器使用預設的 json-file 日誌驅動程式,而不具有 max-size 限制,則該日誌檔案可能佔用大部分空間。您可以使用 docker ps 命令,透過將目錄名稱從上面的輸出映射至容器 ID,來驗證哪個容器正在使用該空間。例如:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 50501b5f4cbf amazon/amazon-ecs-agent:latest "/agent" 4 days ago Up 4 days ecs-agent

根據預設,使用json-file日誌驅動程式時,Docker 會擷取所有容器的標準輸出 (和標準錯誤),並使用 JSON 格式寫入檔案。您可以將 max-size 設定為日誌驅動程式選項,以防止日誌檔案佔用過多空間。如需詳細資訊,請參閱 Docker 文件中的 JSON 檔案記錄驅動程式

下列是一個容器定義片段,顯示如何使用此選項:

{ "log-driver": "json-file", "log-opts": { "max-size": "256m" } }

如果您的容器日誌佔用太多磁碟空間,另一種方法是使用awslogs日誌驅動程式。awslogs 日誌驅動程式會將日誌傳送至 CloudWatch,這會釋放用於容器執行個體上容器日誌的磁碟空間。如需詳細資訊,請參閱將 Amazon ECS 日誌傳送至 CloudWatch

ERROR:toomanyrequests:太多請求或您已達到提取率限制。

此錯誤表示存在 Docker Hub 速率限制。

如果收到下列其中一項錯誤訊息,您很可能會達到 Docker Hub 速率限制:

如需 Docker Hub 速率限制的詳細資訊,請參閱了解 Docker Hub 速率限制

如果您已增加 Docker Hub 速率限制,且需要驗證容器執行個體的 Docker 提取,請參閱容器執行個體的私有登錄身分驗證

常駐程式的錯誤回應:取得 url:net/http: 請求在等待連線時取消

此錯誤表示連線逾時,因為網際網路的路由不存在。

要解決此問題,則可以採取下列方式:

  • 對於公有子網路中的任務,請在啟動任務時指定 ENABLED for Auto-assign Public IP。如需詳細資訊,請參閱將應用程式作為 Amazon ECS 任務執行

  • 對於私有子網路中的任務,在啟動任務時指定 DISABLED for Auto-assign Public IP,並在 NAT 中設定 VPC 閘道,以將請求路由至網際網路。如需詳細資訊,請參閱 Amazon NAT 使用者指南中的 Word Gateways VPC

已重試 1 次 (秒) 的參考提取:無法複製: httpReaderSeeker: 開啟失敗:非預期的狀態碼

此錯誤表示複製映像時發生故障。

若要解決此問題,請檢閱下列其中一篇文章:

提取存取遭拒

此錯誤表示無法存取映像。

若要解決此問題,您可能需要使用 Amazon ECR 來驗證 Docker 用戶端。如需詳細資訊,請參閱 Amazon ECR 使用者指南中的私有登錄身分驗證

pull 命令失敗:驚慌:執行期錯誤:記憶體地址無效或 nil 指標解引用

此錯誤表示由於無效的記憶體地址或零指標解引用,無法存取映像。

若要解決此問題:

  • 檢查您是否擁有可連接 Amazon S3 的安全群組規則。

  • 使用閘道端點時,您必須在路由表中新增路由以存取端點。

提取映像組態時發生錯誤/提取映像組態時發生錯誤

此錯誤表示已達到速率限制或發生網路錯誤:

若要解決此問題,請參閱如何解決 Amazon CannotPullContainerError ECS 啟動類型任務中的「EC2」錯誤

內容已取消

此錯誤表示內容已取消。

此錯誤的常見原因是您的任務使用的 VPC 沒有從 Amazon ECR 中提取容器映像的路由。