

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Docker コンテナ AWS IoT Greengrass でのトラブルシューティング
<a name="docker-troubleshooting"></a>

以下の情報は、Docker コンテナ AWS IoT Greengrass で を実行する際の問題のトラブルシューティングや、Docker コンテナ AWS IoT Greengrass での に関する問題のデバッグに役立ちます。

**Topics**
+ [Docker コンテナを実行する際に生じる問題のトラブルシューティング](#troubleshooting-container-errors)
+ [Docker コンテナ AWS IoT Greengrass でのデバッグ](#debugging-greengrass-in-docker)

## Docker コンテナを実行する際に生じる問題のトラブルシューティング
<a name="troubleshooting-container-errors"></a>

以下の情報は、Docker コンテナ AWS IoT Greengrass で を実行する際の問題のトラブルシューティングに役立ちます。

**Topics**
+ [エラー: Cannot perform an interactive login from a non TTY device (TTY 以外のデバイスから対話型ログインを実行できません)](#docker-troubleshootin-ecr-get-login-password)
+ [エラー: Unknown options: -no-include-email (不明なオプション: -含めない-電子メール)](#docker-troubleshooting-cli-version)
+ [エラー: A firewall is blocking file Sharing between windows and the containers. (ファイアウォールが、ウィンドウとコンテナー間のファイル共有をブロックしています。)](#docker-troubleshooting-firewall)
+ [エラー: An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::*account-id*:user/<user-name> is not authorized to perform: ecr:GetAuthorizationToken on resource: \$1 (GetAuthorizationToken 操作の呼び出し中にエラーが発生しました (AccessDeniedException): ユーザー arn:aws:iam::account-id:user/<user-name> には、リソースに対して ecr:GetAuthorizationToken を実行する権限がありません: \$1)](#docker-troubleshooting-ecr-perms)
+ [エラー: You have reached your pull rate limit (プルレート制限に達しました)](#docker-troubleshooting-too-many-requests)

### エラー: Cannot perform an interactive login from a non TTY device (TTY 以外のデバイスから対話型ログインを実行できません)
<a name="docker-troubleshootin-ecr-get-login-password"></a>

`aws ecr get-login-password` コマンドを実行すると、このエラーが発生することがあります。 AWS CLI 最新バージョン 2 またはバージョン 1 がインストールされていることを確認します。 AWS CLI バージョン 2 を使用することをお勧めします。詳細については、「*AWS Command Line Interface ユーザーガイド*」の「[Installing the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください。

### エラー: Unknown options: -no-include-email (不明なオプション: -含めない-電子メール)
<a name="docker-troubleshooting-cli-version"></a>

`aws ecr get-login` コマンドを実行すると、このエラーが発生することがあります。 AWS CLI 最新バージョンがインストールされていることを確認します (例: Run: `pip install awscli --upgrade --user`)。詳細については、「 *AWS Command Line Interface ユーザーガイド*[」の「Microsoft Windows AWS Command Line Interface での](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html) のインストール」を参照してください。

### エラー: A firewall is blocking file Sharing between windows and the containers. (ファイアウォールが、ウィンドウとコンテナー間のファイル共有をブロックしています。)
<a name="docker-troubleshooting-firewall"></a>

Windows コンピュータで Docker を実行すると、このエラーまたは `Firewall Detected` メッセージが表示されることがあります。このエラーは、仮想プライベートネットワーク (VPN) にサインインしていて、ネットワーク設定が原因で共有ドライブをマウントできない場合にも発生することがあります。このような場合は、VPN をオフにし、Docker コンテナを再実行します。

### エラー: An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::*account-id*:user/<user-name> is not authorized to perform: ecr:GetAuthorizationToken on resource: \$1 (GetAuthorizationToken 操作の呼び出し中にエラーが発生しました (AccessDeniedException): ユーザー arn:aws:iam::account-id:user/<user-name> には、リソースに対して ecr:GetAuthorizationToken を実行する権限がありません: \$1)
<a name="docker-troubleshooting-ecr-perms"></a>

このエラーは、Amazon ECR リポジトリにアクセスするための十分な権限がない状態で `aws ecr get-login-password` コマンドを実行したときに表示されることがあります。詳細については、「Amazon ECR ユーザーガイド」の「[Amazon ECR リポジトリポリシーの例](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html)」および「[1 つの Amazon ECR リポジトリにアクセスする](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html)」を参照してください。

### エラー: You have reached your pull rate limit (プルレート制限に達しました)
<a name="docker-troubleshooting-too-many-requests"></a>

Docker Hub は、匿名ユーザーと無料の Docker Hub ユーザーが行うことができるプルリクエストの数を制限します。匿名ユーザーまたは無料のユーザーのプルリクエストの上限に達すると、次のいずれかのエラーが表示されます。

  

```
ERROR: toomanyrequests: Too Many Requests.
```

  

```
You have reached your pull rate limit.
```

これらのエラーを解決するには、別のプルリクエストを試行する前に数時間を置いてください。多数のプルリクエストを継続的に送信する予定がある場合は、[Docker Hub ウェブサイト](https://www.docker.com/increase-rate-limits)にある制限数に関する情報と、Docker アカウントの認証とアップグレードのオプションに関する情報を参照してください。

## Docker コンテナ AWS IoT Greengrass でのデバッグ
<a name="debugging-greengrass-in-docker"></a>

Docker コンテナの問題をデバッグするには、Greengrass ランタイムログを維持するか、Docker コンテナにインタラクティブシェルをアタッチすることができます。

### Docker コンテナの外部で Greengrass ログを永続化する
<a name="debugging-docker-persist-logs"></a>

 AWS IoT Greengrass コンテナを停止したら、次の`docker cp `コマンドを使用して Greengrass ログを Docker コンテナから一時ログディレクトリにコピーできます。

```
docker cp container-id:/greengrass/v2/logs /tmp/logs
```

コンテナが終了または削除された後もログを保持するには、`/greengrass/v2/logs`ディレクトリをバインドマウントした後に AWS IoT Greengrass Docker コンテナを実行する必要があります。

`/greengrass/v2/logs` ディレクトリをバインドマウントするには、新しい Docker AWS IoT Greengrass コンテナを実行するときに次のいずれかを実行します。
+ `docker run` コマンドに `-v /tmp/logs:/greengrass/v2/logs:ro` を含めます。

  設定ファイル内の `volumes` ブロックを編集して、`docker-compose up` コマンドを実行する前に次の行を含めます。

  ```
  volumes:
   - /tmp/logs:/greengrass/v2/logs:ro
  ```

その後、 AWS IoT Greengrass が Docker コンテナ内で実行されている間に、ホスト`/tmp/logs`の でログをチェックして Greengrass ログを確認できます。

Greengrass Docker コンテナを実行するための情報については、「[手動プロビジョニングを使用して Docker AWS IoT Greengrass で を実行する](run-greengrass-docker-manual-provisioning.md)」および「[自動プロビジョニングを使用して Docker AWS IoT Greengrass で を実行する](run-greengrass-docker-automatic-provisioning.md)」を参照してください。

### インタラクティブシェルを Docker コンテナにアタッチする
<a name="debugging-docker-attach-shell"></a>

Docker コンテナ内でコマンドを実行するにあたり `docker exec` を使用する場合、これらのコマンドは Docker ログにキャプチャされません。コマンドを Docker ログに記録すると、Greengrass Docker コンテナの状態を調査する際に役立ちます。次のいずれかを行います。
+ 別のターミナルで次のコマンドを実行して、ターミナルの標準入力、出力、およびエラーを実行中のコンテナにアタッチします。これにより、現在のターミナルから Docker コンテナを表示して、制御することができます。

  ```
  docker attach container-id
  ```
+ 別のターミナルで次のコマンドを実行します。これにより、コンテナがアタッチされていない場合でも、コマンドをインタラクティブモードで実行できるようになります。

  ```
  docker exec -it container-id sh -c "command > /proc/1/fd/1"
  ```

一般的な AWS IoT Greengrass トラブルシューティングについては、「」を参照してください[トラブルシューティング AWS IoT Greengrass V2](troubleshooting.md)。