本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 中的 CannotPullContainer 任務錯誤
下列錯誤表示任務無法啟動,因為 Amazon ECS 無法擷取指定的容器映像。
注意
1.4 Fargate 平台版本會截斷長的錯誤訊息。
若要使用 檢查已停止的任務是否有錯誤訊息 AWS Management Console,請參閱 檢視 Amazon ECS 已停止的任務錯誤。
任務無法提取映像。檢查角色是否具有從登錄檔提取映像的許可。
此錯誤表示由於許可問題,任務無法提取任務定義中指定的映像。
若要解決此問題:
-
檢查映像是否存在於
儲存庫
中。如需有關檢視映像的詳細資訊,請參閱《Amazon Elastic Container Registry 使用者指南》中的在 Amazon ECR 中檢視映像詳細資訊。 -
確認
role-arn
具有提取映像的正確許可。如需如何更新角色的資訊,請參閱《 AWS Identity and Access Management 使用指南》中的更新角色的許可。
任務使用以下其中一個角色:
-
對於具有 Fargate 啟動類型的任務,這是任務執行角色。如需 Amazon ECR 額外許可的相關資訊,請參閱Fargate 任務透過介面端點許可提取 Amazon ECR 映像。
-
對於具有 EC2 啟動類型的任務,這是容器執行個體角色。如需 Amazon ECR 額外許可的詳細資訊,請參閱Amazon ECR 許可。
-
任務無法從 Amazon ECR 儲存庫「儲存庫 URI
」提取「image-name
」。任務與 Amazon ECR 之間發生連線問題。檢查您的任務網路組態。
此錯誤表示任務無法連線至 Amazon ECR。檢查儲存庫 URI
儲存庫的連線。
如需如何驗證和解決問題的資訊,請參閱 驗證 Amazon ECS 已停止的任務連線。
任務無法提取映像。檢查您的網路組態
此錯誤表示任務無法連線至 Amazon ECR。
如需如何驗證和解決問題的資訊,請參閱 驗證 Amazon ECS 已停止的任務連線。
CannotPullContainerError:提取映像資訊清單已重試 5 次 (秒):無法解析 ref
此錯誤表示任務無法提取映像。
若要解決此問題,您可以:
-
確認任務定義中指定的映像符合儲存庫中的映像。
Amazon ECS 會強制映像版本穩定性。如果原始映像不再可用,您會收到此錯誤。映像標籤是強制執行此行為的一部分。將任務定義中的映像從使用 :latest 作為標籤變更為規格版本。如需詳細資訊,請參閱容器映像解析度。
如需如何驗證和解決問題的資訊,請參閱 驗證 Amazon ECS 已停止的任務連線。
API 錯誤 (500):取得 https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/:net/http: 請求在等待連線時取消
此錯誤表示連線逾時,因為網際網路的路由不存在。
要解決此問題,則可以採取下列方式:
-
針對公有子網路中的任務,您必須在啟動任務時,將 Auto-assign public IP (自動指派公有 IP) 指定為 ENABLED (啟用)。如需詳細資訊,請參閱將應用程式作為 Amazon ECS 任務執行。
-
針對在私有子網路中的任務,則必須在啟動任務時,將 Auto-assign public IP (自動指派公有 IP) 指定為 DISABLED (停用),並設定 VPC 中的 NAT 閘道,以便將請求路由至網際網路。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的 NAT 閘道。
API 錯誤
此錯誤表示 Amazon ECR 端點發生連線問題。
如需如何解決此問題的資訊,請參閱 支援 網站上的如何解決 Amazon ECS 中的 Amazon ECR 錯誤「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 。
錯誤:toomanyrequests:請求過多或已達到提取率限制。
此錯誤表示有 Docker Hub 速率限制。
如果收到下列其中一項錯誤訊息,您很可能會達到 Docker Hub 速率限制:
如需 Docker Hub 速率限制的詳細資訊,請參閱了解 Docker Hub 速率限制
如果您已提高 Docker Hub 速率限制,而且需要驗證容器執行個體的 Docker 提取,請參閱容器執行個體的私有登錄驗證。
協助程式的錯誤回應:取得 url
: net/http: 請求在等待連線時取消
此錯誤表示連線逾時,因為網際網路的路由不存在。
要解決此問題,則可以採取下列方式:
-
針對公有子網路中的任務,您必須在啟動任務時,將 Auto-assign public IP (自動指派公有 IP) 指定為 ENABLED (啟用)。如需詳細資訊,請參閱將應用程式作為 Amazon ECS 任務執行。
-
針對在私有子網路中的任務,則必須在啟動任務時,將 Auto-assign public IP (自動指派公有 IP) 指定為 DISABLED (停用),並設定 VPC 中的 NAT 閘道,以便將請求路由至網際網路。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的 NAT 閘道。
已重試 1 次 (ref) 提取:無法複製:httpReaderSeeker:無法開啟:未預期狀態碼
此錯誤表示複製映像時發生失敗。
若要解決此問題,請檢閱下列其中一個文章:
-
如需 Fargate 任務,請參閱如何解決 Fargate 上 Amazon ECS 任務的 "cannotpullcontainererror" 錯誤
。 -
如需其他任務,請參閱如何解決 Fargate 上 Amazon ECS 任務的 "cannotpullcontainererror" 錯誤
。
提取存取遭拒
此錯誤表示無法存取映像。
若要解決此問題,您可能需要使用 Amazon ECR 驗證 Docker 用戶端。如需詳細資訊,請參閱《Amazon ECR 使用者指南》中的私有登錄驗證。
pull 命令失敗:驚慌:執行時間錯誤:無效的記憶體地址或 nil 指標解引用
此錯誤表示由於無效的記憶體地址或 nil 指標解參考,無法存取映像。
若要解決此問題:
-
檢查您是否擁有可連接 Amazon S3 的安全群組規則。
-
當您使用閘道端點時,您必須在路由表中新增路由以存取端點。
提取映像組態時發生錯誤/提取映像組態時發生錯誤
此錯誤表示已達到速率限制或發生網路錯誤:
若要解決此問題,請參閱我的 Amazon ECS EC2 啟動類型任務中的如何解決「CannotPullContainerError」錯誤
內容已取消
此錯誤表示內容已取消。
此錯誤的原因通常是因為您的任務所使用的 VPC 沒有路由,而無法從 Amazon ECR 提取容器映像。