

Avviso di fine del supporto: il 7 ottobre 2026, AWS il supporto per. AWS IoT Greengrass Version 1 Dopo il 7 ottobre 2026, non potrai più accedere alle risorse. AWS IoT Greengrass V1 Per ulteriori informazioni, visita [Migrate](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html) from. AWS IoT Greengrass Version 1

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esecuzione AWS IoT Greengrass in un contenitore Docker
<a name="run-gg-in-docker-container"></a>

AWS IoT Greengrass [può essere configurato per l'esecuzione in un contenitore Docker.](https://www.docker.com/)

Puoi scaricare un Dockerfile tramite [Amazon su CloudFront](what-is-gg.md#gg-docker-download) cui sono installati il software AWS IoT Greengrass Core e le dipendenze. Per modificare l'immagine Docker per l'esecuzione su architetture della piattaforma diverse o ridurre la dimensione dell'immagine Docker, consulta il file `README` nel download del pacchetto Docker.

Per aiutarti a iniziare a sperimentare AWS IoT Greengrass, fornisce AWS anche immagini Docker predefinite su cui sono installati il AWS IoT Greengrass software Core e le dipendenze. Puoi scaricare un'immagine da [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) o [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) (Amazon ECR). Queste immagini predefinite utilizzano immagini di base Amazon Linux 2 (x86\$164) e Alpine Linux (x86\$164, ARMv7L o). AArch64

**Importante**  
<a name="docker-images-end-of-maintenance"></a>Il 30 giugno 2022, AWS IoT Greengrass è terminata la manutenzione delle immagini Docker del software AWS IoT Greengrass Core v1.x pubblicate su Amazon Elastic Container Registry (Amazon ECR) e Docker Hub. Puoi continuare a scaricare queste immagini Docker da Amazon ECR e Docker Hub fino al 30 giugno 2023, ovvero 1 anno dopo la fine della manutenzione. Tuttavia, le immagini Docker del software AWS IoT Greengrass Core v1.x non ricevono più patch di sicurezza o correzioni di bug dopo la fine della manutenzione il 30 giugno 2022. Se esegui un carico di lavoro di produzione che dipende da queste immagini Docker, ti consigliamo di creare le tue immagini Docker utilizzando i Dockerfile forniti. AWS IoT Greengrass  Per ulteriori informazioni, consulta [AWS IoT Greengrass Software Docker](what-is-gg.md#gg-docker-download).

Questo argomento descrive come scaricare l'immagine AWS IoT Greengrass Docker da Amazon ECR ed eseguirla su una piattaforma Windows, macOS o Linux (x86\$164). L’argomento include le seguenti fasi:

1. [Ottieni l'immagine del AWS IoT Greengrass contenitore da Amazon ECR](#docker-pull-image)

1. [Creazione e configurazione del gruppo e del core Greengrass](#docker-config-gg)

1. [Esegui AWS IoT Greengrass localmente](#docker-run-gg)

1. [Configurazione della containerizzazione "No container" per il gruppo](#docker-no-container)

1. [Distribuisci le funzioni Lambda nel contenitore Docker](#docker-add-lambdas)

1. [(Facoltativo) Implementa i dispositivi client che interagiscono con Greengrass nel contenitore Docker](#docker-add-devices)

Le seguenti funzionalità non sono supportate quando vengono eseguite in un contenitore Docker: AWS IoT Greengrass <a name="docker-image-unsupported-features"></a>
+ [Connettori](connectors.md) eseguiti in modalità **container Greengrass**. Per eseguire un connettore in un container Docker, il connettore deve essere eseguito in modalità **Nessun container**. Per trovare i connettori che supportano la modalità **Nessun container** consulta [AWS-connettori Greengrass forniti](connectors-list.md). Alcuni di questi connettori dispongono di un parametro della modalità di isolamento che devi impostare su **No container (Nessun contenitore)**.
+ [Risorse volume e dispositivo locale](access-local-resources.md). Le funzioni Lambda definite dall'utente che vengono eseguite nel contenitore Docker devono accedere direttamente ai dispositivi e ai volumi sul core.

Queste funzionalità non sono supportate quando l'ambiente di runtime Lambda per il gruppo Greengrass è impostato su [Nessun contenitore](lambda-group-config.md#no-container-mode), necessario per l'esecuzione AWS IoT Greengrass in un contenitore Docker.

## Prerequisiti
<a name="docker-image-prerequisites"></a>

Prima di iniziare questo tutorial, devi fare quanto segue.<a name="docker-image-prereq-list"></a>
+ È necessario installare il software e le versioni seguenti sul computer host in base alla versione AWS Command Line Interface (AWS CLI) scelta.

------
#### [ AWS CLI version 2 ]
  + [Docker](https://docs.docker.com/install/) versione 18.09 o successiva. Anche le versioni precedenti potrebbero funzionare, ma consigliamo 18.09 o successive.
  + AWS CLI versione 2.0.0 o successiva.
    + Per installare la AWS CLI versione 2, vedere [Installazione della AWS CLI versione](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) 2.
    + Per configurare AWS CLI, vedere [Configurazione di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
**Nota**  
Per eseguire l'aggiornamento a una AWS CLI versione 2 successiva su un computer Windows, è necessario ripetere la procedura di [installazione MSI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html).

------
#### [ AWS CLI version 1 ]
  + [Docker](https://docs.docker.com/install/) versione 18.09 o successiva. Anche le versioni precedenti potrebbero funzionare, ma consigliamo 18.09 o successive.
  + [Python](https://www.python.org/downloads/) versione 3.6 o successiva.
  + [pip](https://pip.pypa.io/en/stable/installing) versione 18.1 o successiva.
  + AWS CLI versione 1.17.10 o successiva
    + Per installare la AWS CLI versione 1, vedi [Installazione della AWS CLI versione](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) 1.
    + Per configurare AWS CLI, vedere [Configurazione di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
    + Per eseguire l'aggiornamento alla versione più recente della AWS CLI versione 1, esegui il comando seguente.

      ```
      pip install awscli --upgrade --user
      ```
**Nota**  
Se utilizzi l'[installazione MSI](https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html#msi-on-windows) della AWS CLI versione 1 su Windows, tieni presente quanto segue:  
Se l'installazione della AWS CLI versione 1 non riesce a installare botocore, prova a utilizzare l'installazione di [Python](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html#awscli-install-windows-pip) e pip.
Per eseguire l'aggiornamento a una AWS CLI versione 1 successiva, è necessario ripetere il processo di installazione MSI.

------
+ Per accedere alle risorse di Amazon Elastic Container Registry (Amazon ECR), devi concedere la seguente autorizzazione. 
  + Amazon ECR richiede agli utenti di concedere l'`ecr:GetAuthorizationToken`autorizzazione tramite una policy AWS Identity and Access Management (IAM) prima di poter autenticarsi in un registro e inviare o estrarre immagini da un repository Amazon ECR. Per ulteriori informazioni, consulta [Amazon ECR Repository Policy Examples e Accessing](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) [One Amazon ECR Repository nella Amazon](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-access-one-bucket) *Elastic Container* Registry User Guide.

## Fase 1: ottenere l'immagine del AWS IoT Greengrass contenitore da Amazon ECR
<a name="docker-pull-image"></a>

AWS fornisce immagini Docker su cui è installato il software AWS IoT Greengrass Core.

**avvertimento**  <a name="docker-images-python-2.7-removal"></a>
A partire dalla v1.11.6 del software AWS IoT Greengrass Core, le immagini Greengrass Docker non includono più Python 2.7, perché Python 2.7 end-of-life è arrivato nel 2020 e non riceve più aggiornamenti di sicurezza. Se scegli di eseguire l'aggiornamento a queste immagini Docker, ti consigliamo di verificare che le tue applicazioni funzionino con le nuove immagini Docker prima di distribuire gli aggiornamenti sui dispositivi di produzione. Se hai bisogno di Python 2.7 per la tua applicazione che utilizza un'immagine Greengrass Docker, puoi modificare il Dockerfile Greengrass per includere Python 2.7 per la tua applicazione.

Per i passaggi che mostrano come estrarre l'`latest`immagine da Amazon ECR, scegli il tuo sistema operativo:

### Estrazione dell'immagine del container (Linux)
<a name="docker-pull-image-linux"></a>

Esegui i seguenti comandi nel terminale del computer.

1. <a name="docker-get-login"></a>Accedi al AWS IoT Greengrass registro in Amazon ECR.

   ```
   aws ecr get-login-password --region  us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
   ```

   In caso di esito positivo, l'output stampa `Login Succeeded`.

1. <a name="docker-docker-pull"></a>Recupera l'immagine del AWS IoT Greengrass contenitore.

   ```
   docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```
**Nota**  
L'`latest`immagine contiene l'ultima versione stabile del software AWS IoT Greengrass Core installato su un'immagine base di Amazon Linux 2. È anche possibile estrarre altre versioni dall'archivio. Per trovare tutte le immagini disponibili, controlla la pagina **Tag** in [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) o usa il comando **aws ecr list-images**. Esempio:  

   ```
   aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
   ```

1. Abilita la protezione symlink e hardlink. Se stai sperimentando l'esecuzione AWS IoT Greengrass in un container, puoi abilitare le impostazioni solo per l'avvio corrente.
**Nota**  
Potresti dover utilizzare **sudo** per eseguire questi comandi.
   + Per abilitare le impostazioni solo per l'avvio corrente:

     ```
     echo 1 > /proc/sys/fs/protected_hardlinks
     echo 1 > /proc/sys/fs/protected_symlinks
     ```
   + Per rendere le impostazioni persistenti in caso di riavvio:

     ```
     echo '# AWS IoT Greengrass' >> /etc/sysctl.conf 
     echo 'fs.protected_hardlinks = 1' >> /etc/sysctl.conf 
     echo 'fs.protected_symlinks = 1' >> /etc/sysctl.conf
     
     sysctl -p
     ```

1. <a name="docker-linux-enable-ipv4"></a>Abilita l'inoltro di IPv4 rete, necessario per l'implementazione AWS IoT Greengrass cloud e le comunicazioni MQTT per funzionare su Linux. Nel file `/etc/sysctl.conf`, imposta `net.ipv4.ip_forward` su 1, quindi ricarica `sysctls`.

   ```
   sudo nano /etc/sysctl.conf
   # set this net.ipv4.ip_forward = 1
   sudo sysctl -p
   ```
**Nota**  
Puoi utilizzare l'editor che desideri al posto di nano.

### Estrazione dell'immagine del container (macOS)
<a name="docker-pull-image-mac"></a>

Esegui i seguenti comandi nel terminale del computer.

1. <a name="docker-get-login"></a>Accedi al AWS IoT Greengrass registro in Amazon ECR.

   ```
   aws ecr get-login-password --region  us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
   ```

   In caso di esito positivo, l'output stampa `Login Succeeded`.

1. <a name="docker-docker-pull"></a>Recupera l'immagine del AWS IoT Greengrass contenitore.

   ```
   docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```
**Nota**  
L'`latest`immagine contiene l'ultima versione stabile del software AWS IoT Greengrass Core installato su un'immagine base di Amazon Linux 2. È anche possibile estrarre altre versioni dall'archivio. Per trovare tutte le immagini disponibili, controlla la pagina **Tag** in [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) o usa il comando **aws ecr list-images**. Esempio:  

   ```
   aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
   ```

### Estrazione dell'immagine del container (Windows)
<a name="docker-pull-image-windows"></a>

Esegui i comandi seguenti in un prompt di comandi. Prima di utilizzare i comandi di Docker su Windows, Docker Desktop deve essere in esecuzione.

1. <a name="docker-get-login"></a>Accedi al AWS IoT Greengrass registro in Amazon ECR.

   ```
   aws ecr get-login-password --region  us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
   ```

   In caso di esito positivo, l'output stampa `Login Succeeded`.

1. <a name="docker-docker-pull"></a>Recupera l'immagine del AWS IoT Greengrass contenitore.

   ```
   docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```
**Nota**  
L'`latest`immagine contiene l'ultima versione stabile del software AWS IoT Greengrass Core installato su un'immagine base di Amazon Linux 2. È anche possibile estrarre altre versioni dall'archivio. Per trovare tutte le immagini disponibili, controlla la pagina **Tag** in [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) o usa il comando **aws ecr list-images**. Esempio:  

   ```
   aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
   ```

## Fase 2: creazione e configurazione del gruppo e del core Greengrass
<a name="docker-config-gg"></a>

Nell'immagine Docker è installato il software AWS IoT Greengrass Core, ma è necessario creare un gruppo e un core Greengrass. Questa operazione include il download dei certificati e del file di configurazione del core.
+ Segui la procedura riportata in [Modulo 2: Installazione del software AWS IoT Greengrass Core](module2.md). Salta i passaggi in cui scarichi ed esegui il AWS IoT Greengrass software Core. Il software e le dipendenze di runtime sono già impostati nell'immagine Docker.

## Passaggio 3: Esegui localmente AWS IoT Greengrass
<a name="docker-run-gg"></a>

Una volta configurato il gruppo, è possibile configurare e avviare il core. Per le fasi che mostrano come eseguire questa operazione, scegli il sistema operativo:

### Esecuzione di Greengrass in locale (Linux)
<a name="docker-run-gg-linux"></a>

Esegui i seguenti comandi nel terminale del computer.

1. <a name="docker-create-certs-folder"></a>Crea una cartella per le risorse di sicurezza del dispositivo e sposta il certificato e le chiavi in quella cartella. Esegui i comandi seguenti. Sostituiscila *path-to-security-files* con il percorso delle risorse di sicurezza e *certificateId* sostituiscila con l'ID del certificato nei nomi dei file.

   ```
   mkdir /tmp/certs
   mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs
   mv path-to-security-files/certificateId-public.pem.key /tmp/certs
   mv path-to-security-files/certificateId-private.pem.key /tmp/certs
   mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
   ```

1. <a name="docker-create-config-folder"></a>Crea una cartella per la configurazione del dispositivo e sposta il file di configurazione AWS IoT Greengrass Core in quella cartella. Esegui i comandi seguenti. Sostituiscilo *path-to-config-file* con il percorso del file di configurazione.

   ```
   mkdir /tmp/config
   mv path-to-config-file/config.json /tmp/config
   ```

1. <a name="docker-docker-run"></a>Avvia AWS IoT Greengrass e installa i certificati e il file di configurazione nel contenitore Docker.

   Sostituisci `/tmp` con il percorso in cui hai decompresso i certificati e il file di configurazione.

   ```
   docker run --rm --init -it --name aws-iot-greengrass \
   --entrypoint /greengrass-entrypoint.sh \
   -v /tmp/certs:/greengrass/certs \
   -v /tmp/config:/greengrass/config \
   -p 8883:8883 \
   216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```

   L'output dovrebbe essere simile al seguente:

   ```
   Setting up greengrass daemon
   Validating hardlink/softlink protection
   Waiting for up to 30s for Daemon to start
   
   Greengrass successfully started with PID: 10
   ```

### Esecuzione di Greengrass in locale (macOS)
<a name="docker-run-gg-mac"></a>

Esegui i seguenti comandi nel terminale del computer.

1. <a name="docker-create-certs-folder"></a>Crea una cartella per le risorse di sicurezza del dispositivo e sposta il certificato e le chiavi in quella cartella. Esegui i comandi seguenti. Sostituiscila *path-to-security-files* con il percorso delle risorse di sicurezza e *certificateId* sostituiscila con l'ID del certificato nei nomi dei file.

   ```
   mkdir /tmp/certs
   mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs
   mv path-to-security-files/certificateId-public.pem.key /tmp/certs
   mv path-to-security-files/certificateId-private.pem.key /tmp/certs
   mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
   ```

1. <a name="docker-create-config-folder"></a>Crea una cartella per la configurazione del dispositivo e sposta il file di configurazione AWS IoT Greengrass Core in quella cartella. Esegui i comandi seguenti. Sostituiscilo *path-to-config-file* con il percorso del file di configurazione.

   ```
   mkdir /tmp/config
   mv path-to-config-file/config.json /tmp/config
   ```

1. <a name="docker-docker-run"></a>Avvia AWS IoT Greengrass e installa i certificati e il file di configurazione nel contenitore Docker.

   Sostituisci `/tmp` con il percorso in cui hai decompresso i certificati e il file di configurazione.

   ```
   docker run --rm --init -it --name aws-iot-greengrass \
   --entrypoint /greengrass-entrypoint.sh \
   -v /tmp/certs:/greengrass/certs \
   -v /tmp/config:/greengrass/config \
   -p 8883:8883 \
   216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```

   L'output dovrebbe essere simile al seguente:

   ```
   Setting up greengrass daemon
   Validating hardlink/softlink protection
   Waiting for up to 30s for Daemon to start
   
   Greengrass successfully started with PID: 10
   ```

### Esecuzione di Greengrass in locale (Windows)
<a name="docker-run-gg-windows"></a>

1. Crea una cartella per le risorse di sicurezza del dispositivo e sposta il certificato e le chiavi in quella cartella. Esegui i comandi seguenti in un prompt di comandi. Sostituiscila *path-to-security-files* con il percorso delle risorse di sicurezza e *certificateId* sostituiscila con l'ID del certificato nei nomi dei file.

   ```
   mkdir C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\certificateId-certificate.pem.crt C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\certificateId-public.pem.key C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\certificateId-private.pem.key C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\AmazonRootCA1.pem C:\Users\%USERNAME%\Downloads\certs
   ```

1. Crea una cartella per la configurazione del dispositivo e sposta il file di configurazione AWS IoT Greengrass Core in quella cartella. Esegui i comandi seguenti in un prompt di comandi. Sostituiscilo *path-to-config-file* con il percorso del file di configurazione.

   ```
   mkdir C:\Users\%USERNAME%\Downloads\config
   move path-to-config-file\config.json C:\Users\%USERNAME%\Downloads\config
   ```

1. Avvia AWS IoT Greengrass e installa i certificati e il file di configurazione nel contenitore Docker. Esegui i comandi seguenti nel prompt di comandi.

   ```
   docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```

   Quando Docker ti richiede di condividere l'unità `C:\` con il daemon Docker, consenti di eseguire il montaggio vincolato della directory `C:\` all'interno del container Docker. Per ulteriori informazioni, consulta la sezione relativa alle [unità condivise](https://docs.docker.com/docker-for-windows/#shared-drives) nella documentazione Docker. 

   L'output dovrebbe essere simile al seguente:

   ```
   Setting up greengrass daemon
   Validating hardlink/softlink protection
   Waiting for up to 30s for Daemon to start
   
   Greengrass successfully started with PID: 10
   ```

**Nota**  
Se il container non apre la shell e si chiude immediatamente, puoi eseguire il debug del problema mediante il montaggio vincolato dei log di runtime di Greengrass all'avvio dell'immagine. Per ulteriori informazioni, consulta [Per rendere persistenti i log di runtime Greengrass all'interno del container Docker](#debugging-docker-persist-logs).

## Fase 4: configurazione della containerizzazione "No container" per il gruppo Greengrass
<a name="docker-no-container"></a>

Quando si esegue AWS IoT Greengrass in un contenitore Docker, tutte le funzioni Lambda devono essere eseguite senza containerizzazione. In questa fase, assicurati di aver impostato la containerizzazione predefinita per il gruppo su **No container (Nessun container)**. È necessario eseguire questa operazione prima di distribuire il gruppo per la prima volta.

1. <a name="console-gg-groups"></a>Nel riquadro di navigazione della AWS IoT console, in **Gestione**, espandi **i dispositivi Greengrass**, quindi scegli **Gruppi (V1**).

1. <a name="group-choose-group"></a>Scegli il gruppo di cui desideri modificare le impostazioni.

1. Scegli la scheda **Funzioni Lambda**.

1. **In **Ambiente di runtime della funzione Lambda predefinito**, scegli Modifica.**

1. Nell'**ambiente di runtime Modifica funzione Lambda predefinita**, in Containerizzazione predefinita della **funzione Lambda, modifica le impostazioni di containerizzazione**.

1. Scegli **Save** (Salva).

Le modifiche diventano effettive quando il gruppo viene distribuito.

Per ulteriori informazioni, consulta [Impostazione della containerizzazione predefinita per le funzioni Lambda in un gruppo](lambda-group-config.md#lambda-containerization-groupsettings).

**Nota**  
Per impostazione predefinita, le funzioni Lambda utilizzano l'impostazione di containerizzazione del gruppo. Se sovrascrivi l'impostazione **Nessun contenitore** per qualsiasi funzione Lambda AWS IoT Greengrass quando è in esecuzione in un contenitore Docker, la distribuzione non riesce.

## Fase 5: Implementazione delle funzioni Lambda nel contenitore Docker AWS IoT Greengrass
<a name="docker-add-lambdas"></a>

Puoi distribuire funzioni Lambda di lunga durata nel contenitore Greengrass Docker.
+ Segui i passaggi [Modulo 3 (parte 1): funzioni Lambda su AWS IoT Greengrass](module3-I.md) per distribuire una funzione Hello World Lambda di lunga durata nel contenitore.

## Passaggio 6: (Facoltativo) Implementa i dispositivi client che interagiscono con Greengrass in esecuzione nel contenitore Docker
<a name="docker-add-devices"></a>

Puoi anche distribuire dispositivi client con cui interagiscono AWS IoT Greengrass quando è in esecuzione in un contenitore Docker.
+ Segui i passaggi indicati [Modulo 4: Interazione con i dispositivi client in un gruppo AWS IoT Greengrass](module4.md) per distribuire dispositivi client che si connettono al core e inviano messaggi MQTT.

## Arresto del contenitore Docker AWS IoT Greengrass
<a name="docker-stop"></a>

Per fermare il contenitore AWS IoT Greengrass Docker, premi Ctrl\$1C nel terminale o nel prompt dei comandi. Questa azione invia `SIGTERM` al processo daemon Greengrass il compito di eliminare il processo daemon Greengrass e tutti i processi Lambda che sono stati avviati dal processo daemon. Il container Docker viene inizializzato con il processo `/dev/init` come PID 1 per facilitare la rimozione di eventuali processi zombie rimanenti. Per ulteriori informazioni, consulta la [pagina di riferimento per l'esecuzione del Docker](https://docs.docker.com/engine/reference/commandline/run/#options).

## AWS IoT Greengrass Risoluzione dei problemi in un contenitore Docker
<a name="troubleshooting-docker-gg"></a>

Utilizza le seguenti informazioni per risolvere i problemi relativi all'esecuzione AWS IoT Greengrass in un contenitore Docker.

### Errore: impossibile eseguire un accesso interattivo da un dispositivo non TTY.
<a name="docker-troubleshootin-ecr-get-login-password"></a>

**Soluzione:** questo errore può verificarsi quando si esegue il comando `aws ecr get-login-password`. Assicurati di aver installato la versione 2 o la AWS CLI versione 1 più recente. Ti consigliamo di utilizzare la AWS CLI versione 2. Per ulteriori informazioni, consulta [Installazione dell’ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) nella *Guida per l’utente dell’AWS Command Line Interface *.

### Errore: opzioni sconosciute: -no-include-email.
<a name="docker-troubleshooting-cli-version"></a>

**Soluzione:** questo errore può verificarsi quando si esegue il comando `aws ecr get-login`. Assicurati di avere installata la AWS CLI versione più recente (ad esempio, esegui:`pip install awscli --upgrade --user`). Se utilizzi Windows e hai installato l'interfaccia a riga di comando utilizzando il programma di installazione di MSI, è necessario ripetere il processo di installazione. Per ulteriori informazioni, vedere [Installazione di AWS Command Line Interface su Microsoft Windows](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html) nella *Guida per l'AWS Command Line Interface utente*.

### Attenzione: IPv4 è disattivata. Networking non funzionerà.
<a name="docker-troubleshooting-ipv4-disabled"></a>

**Soluzione:** è possibile che venga visualizzato questo avviso o un messaggio simile quando si esegue AWS IoT Greengrass su un computer Linux. [Abilita l'inoltro di IPv4 rete come descritto in questo passaggio.](#docker-linux-enable-ipv4) AWS IoT Greengrass l'implementazione nel cloud e le comunicazioni MQTT non funzionano quando l' IPv4 inoltro non è abilitato. Per ulteriori informazioni, consulta [Configurazione di parametri kernel associati a uno spazio dei nomi (sysctls) durante il runtime](https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime) nella documentazione Docker.

### Errore: un firewall sta bloccando la condivisione di file tra finestre e contenitori.
<a name="docker-troubleshooting-firewall"></a>

**Soluzione:** è possibile ricevere questo errore o un messaggio `Firewall Detected` quando viene eseguito Docker su un computer Windows. Questo errore può inoltre verificarsi se sei connesso a una rete privata virtuale (VPN, Virtual Private Network) e le impostazioni di rete impediscono il montaggio dell'unità condivisa. In tal caso, disattivare la rete VPN e riavviare il container Docker.

### Errore: si è verificato un errore (AccessDeniedException) durante la chiamata dell' GetAuthorizationToken operazione: User: arn:aws:iam: :user/ <account-id><user-name>non è autorizzato a eseguire: ecr: on resource: \$1 GetAuthorizationToken
<a name="docker-troubleshooting-ecr-perms"></a>

Potresti ricevere questo errore durante l'esecuzione del `aws ecr get-login-password` comando se non disponi di autorizzazioni sufficienti per accedere a un repository Amazon ECR. Per ulteriori informazioni, consulta [Esempi di policy per i repository di Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) e [Accesso a un repository Amazon ECR nella](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html) *Amazon* ECR User Guide.

Per informazioni generali AWS IoT Greengrass sulla risoluzione dei problemi, consulta. [Risoluzione dei problemi AWS IoT Greengrass](gg-troubleshooting.md)

### Esecuzione del debug AWS IoT Greengrass in un contenitore Docker
<a name="debugging-docker-gg"></a>

Per il debug dei problemi relativi a un container Docker, puoi rendere persistenti i log di runtime Greengrass o collegare una shell interattiva al container Docker.

#### Per rendere persistenti i log di runtime Greengrass all'interno del container Docker
<a name="debugging-docker-persist-logs"></a>

È possibile eseguire il contenitore AWS IoT Greengrass Docker dopo aver montato in bind la directory. `/greengrass/ggc/var/log` I log persistono anche dopo la chiusura o la rimozione del container.

**Su Linux o macOS**  
[Interrompi qualsiasi container Docker Greengrass](#docker-stop) in esecuzione sull'host, quindi esegui il comando seguente in un terminale. In questo modo viene eseguito il montaggio vincolato della directory `log` di Greengrass e viene avviata l'immagine Docker.   
Sostituisci `/tmp` con il percorso in cui hai decompresso i certificati e il file di configurazione.  

```
docker run --rm --init -it --name aws-iot-greengrass \
      --entrypoint /greengrass-entrypoint.sh \
      -v /tmp/certs:/greengrass/certs \
      -v /tmp/config:/greengrass/config \
      -v /tmp/log:/greengrass/ggc/var/log \
      -p 8883:8883 \
      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
```
In seguito, puoi esaminare i log in `/tmp/log` sull'host per scoprire cosa è successo mentre Greengrass era in esecuzione all'interno del container Docker.

**Su Windows**  
[Interrompi qualsiasi container Docker Greengrass](#docker-stop) in esecuzione sull'host, quindi esegui il comando seguente in un prompt dei comandi. In questo modo viene eseguito il montaggio vincolato della directory `log` di Greengrass e viene avviata l'immagine Docker.  

```
cd C:\Users\%USERNAME%\Downloads
mkdir log
docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -v c:/Users/%USERNAME%/Downloads/log:/greengrass/ggc/var/log -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
```
In seguito, puoi esaminare i log in `C:/Users/%USERNAME%/Downloads/log` sull'host per scoprire cosa è successo mentre Greengrass era in esecuzione all'interno del container Docker.

#### Per collegare una shell interattiva al container Docker
<a name="debugging-docker-attach-shell"></a>

È possibile collegare una shell interattiva a un contenitore Docker in esecuzione. AWS IoT Greengrass Questo può essere utile per esaminare lo stato del container Docker Greengrass.

**Su Linux o macOS**  
Mentre il container Docker Greengrass è in esecuzione esegui il comando seguente in un terminale separato.  

```
docker exec -it $(docker ps -a -q -f "name=aws-iot-greengrass") /bin/bash
```

**Su Windows**  
Mentre il container Docker Greengrass è in esecuzione esegui i comandi seguenti in un prompt dei comandi separato.  

```
docker ps -a -q -f "name=aws-iot-greengrass"
```
Sostituisci *gg-container-id* con il `container_id` risultato del comando precedente.  

```
docker exec -it gg-container-id /bin/bash
```