

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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**
+ [오류: TTY가 아닌 장치에서 대화형 로그인을 수행할 수 없습니다.](#docker-troubleshootin-ecr-get-login-password)
+ [오류: 알 수 없는 옵션: no-include-email](#docker-troubleshooting-cli-version)
+ [오류: 방화벽이 Windows와 컨테이너 간의 파일 공유를 차단하고 있습니다.](#docker-troubleshooting-firewall)
+ [오류: GetAuthorizationToken 작업 직접 호출 도중 오류 발생(AccessDeniedException): 사용자: arn:aws:iam::*account-id*:user/<user-name>에게 다음을 수행할 권한 없음: ecr:GetAuthorizationToken on resource: \$1](#docker-troubleshooting-ecr-perms)
+ [오류: 풀 속도 제한에 도달함](#docker-troubleshooting-too-many-requests)

### 오류: 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 사용자 가이드*에서 [AWS CLI설치](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)를 참조하세요.

### 오류: 알 수 없는 옵션: no-include-email
<a name="docker-troubleshooting-cli-version"></a>

`aws ecr get-login` 명령을 실행할 때 이 오류가 발생할 수 있습니다. 최신 AWS CLI 버전이 설치되어 있는지 확인합니다(예: 실행: `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) 참조하세요.

### 오류: 방화벽이 Windows와 컨테이너 간의 파일 공유를 차단하고 있습니다.
<a name="docker-troubleshooting-firewall"></a>

Windows 컴퓨터에서 Docker를 실행할 때 이 오류 또는 `Firewall Detected` 메시지가 표시될 수 있습니다. 이 오류는 VPN(가상 프라이빗 네트워크)에 로그인되어 있고 네트워크 설정 때문에 공유 드라이브가 탑재되지 않는 경우에도 발생할 수 있습니다. 이러한 경우에는 VPN을 끄고 Docker 컨테이너를 재실행합니다.

### 오류: GetAuthorizationToken 작업 직접 호출 도중 오류 발생(AccessDeniedException): 사용자: arn:aws:iam::*account-id*:user/<user-name>에게 다음을 수행할 권한 없음: ecr:GetAuthorizationToken on resource: \$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) 및 [하나의 Amazon ECR 리포지토리에 액세스](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html)를 참조하세요.

### 오류: 풀 속도 제한에 도달함
<a name="docker-troubleshooting-too-many-requests"></a>

Docker Hub는 익명 및 Free 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>

도커 컨테이너로 문제를 디버그하려면 Greengrass 런타임 로그를 유지하거나 대화형 셸을 도커 컨테이너에 연결할 수 있습니다.

### 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` 디렉터리를 바인드 마운트하려면 새 AWS IoT Greengrass Docker 컨테이너를 실행할 때 다음 중 하나를 수행합니다.
+ `docker run` 명령에 `-v /tmp/logs:/greengrass/v2/logs:ro`를 포함합니다.

  `docker-compose up` 명령을 실행하기 전에 다음 줄을 포함하도록 Compose 파일의 `volumes` 블록을 수정합니다.

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

그런 다음 호스트`/tmp/logs`의에서 로그를 확인하여 AWS IoT Greengrass 가 Docker 컨테이너 내에서 실행되는 동안 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 exec`를 사용하여 Docker 컨테이너 내에서 명령을 실행하면 이 명령이 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).