Amazon ECS での CannotPullContainer タスクエラー
次のエラーは、Amazon ECS が指定されたコンテナイメージを取得できないためにタスクを開始できなかったことを示しています。
注記
1.4 Fargate プラットフォームバージョンでは、長いエラーメッセージが切り捨てられます。
エラー
- The task can’t pull the image. ロールにレジストリからイメージをプルするためのアクセス許可があることを確認します。
- The task cannot pull ‘image-name’ from the Amazon ECR repository ‘repository URI’. There is a connection issue between the task and Amazon ECR. Check your task network configuration.
- The task can’t pull the image. Check your network configuration
- API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection
- API エラー
- write /var/lib/docker/tmp/GetImageBlob111111111: no space left on device
- ERROR: toomanyrequests: Too Many Requests or You have reached your pull rate limit.
- Error response from daemon: Get url: net/http: request canceled while waiting for connection
- ref pull has been retried 1 time(s): failed to copy: httpReaderSeeker: failed open: unexpected status code
- pull access denied
- pull command failed: panic: runtime error: invalid memory address or nil pointer dereference
- error pulling image conf/error pulling image configuration
- コンテキストがキャンセルされました
The task can’t pull the image. ロールにレジストリからイメージをプルするためのアクセス許可があることを確認します。
このエラーは、アクセス許可の問題により、タスク定義で指定されたイメージをタスクがプルできないことを示します。
この問題を解決するには。
-
イメージが
リポジトリ
に存在することを確認します。イメージの表示の詳細については、「Amazon Elastic Container Registry ユーザーガイド」の「Viewing image details in Amazon ECR」を参照してください。 -
role-arn
にイメージをプルするための正しいアクセス許可があることを確認します。ロールを表示および修正する方法については、「AWS Identity and Access Management ユーザーガイド」の「ロールの修正」を参照してください。
タスクには次のいずれかのロールを使用します。
-
Fargate 起動タイプのタスクの場合、これはタスク実行ロールになります。Amazon ECR の追加のアクセス許可については、「インターフェイスエンドポイントのアクセス許可によって Amazon ECR イメージをプルする Fargate タスクです。」を参照してください。
-
EC2 起動タイプのタスクの場合、これはコンテナインスタンスロールになります。Amazon ECR の追加のアクセス許可については、「Amazon ECR のアクセス許可」を参照してください。
-
The task cannot pull ‘image-name
’ from the Amazon ECR repository ‘repository URI
’. There is a connection issue between the task and Amazon ECR. Check your task network configuration.
このエラーは、タスクが Amazon ECR に接続できないことを示します。リポジトリ URI
リポジトリへの接続を確認してください。
これらの問題を検証および解決する方法の詳細については、「Amazon ECS の停止したタスクの接続を検証する」を参照してください。
The task can’t pull the image. Check your network configuration
このエラーは、タスクが Amazon ECR に接続できないことを示します。
これらの問題を検証および解決する方法の詳細については、「Amazon ECS の停止したタスクの接続を検証する」を参照してください。
API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection
このエラーは、インターネットへのルートがないため、接続がタイムアウトしたことを示します。
この問題を解決するには、以下ができます。
-
パブリックサブネットのタスクでは、タスクの起動時に [Auto-assign public IP] (自動割り当てパブリック IP)を [ENABLED] (有効)に指定する必要があります。詳細については、「Amazon ECS タスクとしてのアプリケーションの実行」を参照してください。
-
プライベートサブネットのタスクでは、タスク起動時に [Auto-assign public IP] (自動割り当てパブリック IP) を [DISABLED] (無効) に指定し、VPC の NAT ゲートウェイを設定してリクエストをインターネットにルートします。詳細については、Amazon VPC ユーザーガイド の NAT ゲートウェイ を参照してください。
API エラー
このエラーは、Amazon ECR エンドポイントとの接続に問題があることを示します。
この問題を解決する方法については、AWS Support ウェブサイトの「Amazon ECS の Amazon ECR エラー "CannotPullContainerError: API error" を解決するには
write /var/lib/docker/tmp/GetImageBlob111111111
: no space left on device
このエラーは、ディスク容量が不足していることを示しています。
この問題を解決するには、ディスク容量を解放します。
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 ...
場合によっては、実行中のコンテナによってルートボリュームがいっぱいになる可能性があります。コンテナが max-size
制限のないデフォルトの json-file
ログドライバーを使用している場合、ログファイルが使用されているスペースの大半を占めている可能性があります。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 ドキュメントの「ロギングドライバーの設定
このオプションの使用方法を示すコンテナ定義のスニペットを次に示します。
{ "log-driver": "json-file", "log-opts": { "max-size": "
256m
" } }
コンテナログのディスク容量使用量が大きすぎる場合、awslogs
ログドライバーを使用することもできます。awslogs
ログドライバーがログを CloudWatch に送信します。これによりコンテナインスタンスのコンテナログに使用されるディスク容量が解放されます。詳細については、「Amazon ECS ログを CloudWatch に送信する 」を参照してください。
ERROR: toomanyrequests: Too Many Requests or You have reached your pull rate limit.
このエラーは、Docker Hub のレート制限があることを示します。
次のエラーのいずれかが表示された場合は、Docker Hub のレート制限に達している可能性があります。
Docker Hub のレート制限の詳細については、[Understanding Docker Hub rate limiting]
Docker Hub のレート制限を上げ、コンテナインスタンスの Docker プルを認証する必要がある場合は、「Private registry authentication for container instances」を参照してください。
Error response from daemon: Get url
: net/http: request canceled while waiting for connection
このエラーは、インターネットへのルートがないため、接続がタイムアウトしたことを示します。
この問題を解決するには、以下ができます。
-
パブリックサブネットのタスクでは、タスクの起動時に [Auto-assign public IP] (自動割り当てパブリック IP)を [ENABLED] (有効)に指定する必要があります。詳細については、「Amazon ECS タスクとしてのアプリケーションの実行」を参照してください。
-
プライベートサブネットのタスクでは、タスク起動時に [Auto-assign public IP] (自動割り当てパブリック IP) を [DISABLED] (無効) に指定し、VPC の NAT ゲートウェイを設定してリクエストをインターネットにルートします。詳細については、Amazon VPC ユーザーガイド の NAT ゲートウェイ を参照してください。
ref pull has been retried 1 time(s): failed to copy: httpReaderSeeker: failed open: unexpected status code
このエラーは、イメージのコピー時に問題があったことを示します。
この問題を解決するには、次のいずれかの記事を確認してください。
-
Fargate タスクについては、Fargate Amazon ECSタスクの「cannotpullcontainererror」エラーの解決方法
を参照してください。 -
その他のタスクについては、Amazon ECS タスクの「cannotpullcontainererror」エラーの解決方法
を参照してください。
pull access denied
このエラーは、イメージにアクセスできないことを示します。
この問題を解決するには、Amazon ECR で Docker クライアントを認証する必要がある場合があります。詳細については、Amazon ECR ユーザーガイドの「プライベートレジストリ認証」を参照してください。
pull command failed: panic: runtime error: invalid memory address or nil pointer dereference
このエラーは、メモリアドレスが無効であるか、ポインターデリファレンスが nil であるため、イメージにアクセスできないことを示しています。
この問題を解決するには。
-
Amazon S3 に到達するためのセキュリティグループのルールがあることを確認してください。
-
ゲートウェイエンドポイントを使用するときは、エンドポイントにアクセスするためのルートをルートテーブルに追加する必要があります。
error pulling image conf/error pulling image configuration
このエラーは、レート制限に達したか、ネットワークエラーが発生したことを示します。
この問題を解決するには、「Amazon ECS EC2 起動タイプタスクで CannotPullContainerError エラーを解決する方法
コンテキストがキャンセルされました
このエラーは、コンテキストがキャンセルされたことを示しています。
このエラーの一般的な原因は、タスクが使用している VPC にコンテナイメージを Amazon ECR から取得するルートがないためです。