

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Implemente aplicaciones en contenedores si se AWS IoT Greengrass V2 ejecutan como un contenedor Docker
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container"></a>

*Salih Bakir, Giuseppe Di Bella y Gustav Svalander, Amazon Web Services*

## Resumen
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-summary"></a>

AWS IoT Greengrass Version 2, cuando se implementa como un contenedor de Docker, no admite la ejecución de contenedores de aplicaciones de Docker de forma nativa. Este patrón le muestra cómo crear una imagen de contenedor personalizada basada en la última versión AWS IoT Greengrass V2 que habilite la funcionalidad Docker-in-Docker (DiND). Con DiND, puede ejecutar aplicaciones en contenedores dentro del entorno. AWS IoT Greengrass V2 

Puede implementar este patrón como una solución independiente o integrarlo con plataformas de organización de contenedores como Amazon ECS Anywhere. En cualquiera de los dos modelos de implementación, mantiene todas las AWS IoT Greengrass V2 funciones, incluidas las capacidades de procesamiento AWS IoT SiteWise perimetral, al tiempo que permite implementaciones escalables basadas en contenedores. 

## Requisitos previos y limitaciones
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-prereqs"></a>

**Requisitos previos **
+ Un activo. Cuenta de AWS
+ Para conocer AWS IoT Greengrass Version 2 los requisitos previos generales, consulte los [requisitos previos](https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started-prerequisites.html) en la AWS IoT Greengrass Version 2 documentación. 
+ Docker Engine, instalado y configurado en Linux, macOS o Windows.
+ Docker Compose (si utiliza la interfaz de línea de comandos (CLI) de Docker Compose para ejecutar imágenes de Docker).
+ Un sistema operativo Linux.
+ Un hipervisor con un servidor host que admite la virtualización.
+ Requisitos del sistema:
  + 2 GB de RAM (mínimo)
  + 5 GB de espacio disponible en disco (mínimo)
  + Para AWS IoT SiteWise Edge, una CPU x86\$164 de cuatro núcleos con 16 GB de RAM y 50 GB de espacio disponible en disco. Para obtener más información sobre el procesamiento de AWS IoT SiteWise datos, consulte los requisitos del [paquete de procesamiento de datos](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-gateway-ggv2.html#w2aac17c19c13b7) en la documentación. AWS IoT SiteWise 

**Versiones de producto**
+ AWS IoT Greengrass Version 2 versión 2.5.3 o posterior
+ Docker-in-Docker versión 1.0.0 o posterior
+ Docker Compose versión 1.22 o posterior
+ Docker Engine, versión 20.10.12 o posterior

**Limitaciones**
+ Algunas Servicios de AWS no están disponibles en todas las versiones. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte [AWS Services by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

## Arquitectura
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-architecture"></a>

**Pila de tecnología de destino**
+ **Fuentes de datos**: dispositivos de IoT, sensores o equipos industriales que generan datos para su procesamiento
+ **AWS IoT Greengrass V2**— Funciona como un contenedor Docker con D-in-D capacidades, implementado en infraestructuras perimetrales
+ Aplicaciones en **contenedores: aplicaciones** personalizadas que se ejecutan en el AWS IoT Greengrass V2 entorno como contenedores Docker anidados
+ **(Opcional) Amazon ECS Anywhere**: organización de contenedores que gestiona la implementación de AWS IoT Greengrass V2 contenedores
+ **Otros Servicios de AWS**: AWS IoT Core AWS IoT SiteWise, y otros Servicios de AWS para el procesamiento y la administración de datos

**Arquitectura de destino**

El siguiente diagrama muestra un ejemplo de arquitectura de implementación de destino que utiliza Amazon ECS Anywhere, que es una herramienta de administración de contenedores.

![\[Arquitectura de implementación con Amazon ECS Anywhere.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2ecf5354-40e0-4fd9-9798-086719059784/images/5ed2652e-9604-4809-8962-b167e1991658.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

**1: Almacenamiento de imágenes de contenedores:** Amazon ECR almacena las imágenes del AWS IoT Greengrass contenedor y cualquier contenedor de aplicaciones personalizadas necesario para el procesamiento perimetral.

**2** y **3: Despliegue de contenedores:** Amazon ECS Anywhere despliega la imagen del AWS IoT Greengrass contenedor desde Amazon ECR en la ubicación perimetral, gestionando el ciclo de vida del contenedor y el proceso de despliegue.

**4: Despliegue de componentes:** el AWS IoT Greengrass núcleo implementado despliega automáticamente sus componentes relevantes en función de su configuración. Los componentes incluyen AWS IoT SiteWise Edge y otros componentes de procesamiento perimetral necesarios dentro del entorno contenerizado.

**5: Ingesta de datos:** una vez que esté completamente configurado, AWS IoT Greengrass comienza a ingerir datos de telemetría y sensores de varias fuentes de datos de IoT en la ubicación perimetral.

**6: Procesamiento de datos e integración en la nube**: el AWS IoT Greengrass núcleo contenerizado procesa los datos de forma local mediante sus componentes desplegados (incluido AWS IoT SiteWise Edge para datos industriales). Luego, envía los datos procesados a los Nube de AWS servicios para su posterior análisis y almacenamiento.

## Tools (Herramientas)
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-tools"></a>

**Servicios de AWS**
+ [Amazon ECS Anywhere](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch-type-external.html) le ayuda a implementar, usar y gestionar las tareas y los servicios de Amazon ECS en su propia infraestructura.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) proporciona una capacidad informática escalable en el Nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) es un servicio en la nube y de tiempo de ejecución en la periferia de Internet de las cosas (IoT) de código abierto que ayuda a crear, implementar y administrar aplicaciones de IoT en los dispositivos.
+ [AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) lo ayuda a recopilar, modelar, analizar y visualizar datos de equipos industriales a escala.

**Otras herramientas**
+ [Docker](https://www.docker.com/) es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización a nivel del sistema operativo para entregar software en contenedores.
+ [Docker Compose](https://docs.docker.com/compose/) es una herramienta para definir y ejecutar aplicaciones de varios contenedores.
+ [Docker Engine](https://docs.docker.com/engine/) es una tecnología de contenerización de código abierto para crear y contenedorizar aplicaciones.

**Repositorio de código**

[El código de este patrón está disponible en el repositorio de la versión 2. GitHub AWS IoT Greengrass Docker-in-Docker](https://github.com/aws-samples/aws-iot-greengrass-docker-in-docker)

## Epics
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-epics"></a>

### Construye la AWS IoT Greengrass V2 Docker-in-Docker imagen
<a name="build-the-gg2-docker-in-docker-image"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Clona y navega hasta el repositorio. | Para clonar el repositorio, utilice el siguiente comando: `git clone https://github.com/aws-samples/aws-iot-greengrass-v2-docker-in-docker.git`Para navegar hasta el `docker` directorio, utilice el siguiente comando:`cd aws-iot-greengrass-v2-docker-in-docker/docker` | DevOps ingeniero, AWS DevOps | 
| Cree la imagen de Docker. | Para crear la imagen de Docker con la versión predeterminada (la más reciente), ejecute el siguiente comando:`docker build -t x86_64/aws-iot-greengrass:latest .`O bien, para crear la imagen de Docker con una versión específica, ejecute el siguiente comando:`docker build --build-arg GREENGRASS_RELEASE_VERSION=2.12.0 -t x86_64/aws-iot-greengrass:2.12.0 .`Para verificar la compilación, ejecuta el siguiente comando:`docker images \| grep aws-iot-greengrass`  | AWS DevOps, DevOps ingeniero, desarrollador de aplicaciones | 
| (Opcional) Empuje a Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Desarrollador de aplicaciones, AWS DevOps, DevOps ingeniero | 

### Configure AWS las credenciales
<a name="configure-aws-credentials"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Seleccione el método de autenticación. | Elija una de las siguientes opciones:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Administrador de AWS | 
| Configure el método de autenticación. | Para el método de autenticación que ha seleccionado, utilice las siguientes instrucciones de configuración:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Administrador de AWS | 

### Ejecute con Docker Compose
<a name="run-with-docker-compose"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configuración `docker-compose.yml`. | Actualice el `docker-compose.yml` archivo con las variables de entorno de la siguiente manera:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingeniero | 
| Inicie y verifique el contenedor. | Para empezar en primer plano, ejecute el siguiente comando:`docker-compose up --build`O bien, para empezar en segundo plano, ejecute el siguiente comando:`docker-compose up --build -d`Para comprobar el estado, ejecute el siguiente comando:`docker-compose ps`Para supervisar los registros, ejecute el siguiente comando:`docker-compose logs -f` | DevOps ingeniero | 

### Ejecute con Docker CLI
<a name="run-with-docker-cli"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ejecute el contenedor con la CLI de Docker. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingeniero | 
| Verifica el contenedor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingeniero | 

### Gestione aplicaciones contenerizadas
<a name="manage-containerized-applications"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implemente aplicaciones. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Desarrollador de aplicaciones | 
| Acceda y pruébelo Docker-in-Docker. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingeniero | 

### (Opcional) Intégrelo con Amazon ECS Anywhere
<a name="optional-integrate-with-ecs-anywhere"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el clúster de Amazon ECS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Administrador de AWS | 
| Implemente la tarea Amazon ECS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Administrador de AWS | 

### Detenga y limpie
<a name="stop-and-cleanup"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Detenga el contenedor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingeniero | 

## Resolución de problemas
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| El contenedor no se inicia debido a errores de permiso. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)`--privileged`concede privilegios ampliados al contenedor. | 
| El aprovisionamiento falla debido a errores de credenciales. | Para comprobar que las credenciales están configuradas correctamente, siga estos pasos:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Asegúrese de que los permisos de IAM incluyan `iot:CreateThing``iot:CreatePolicy`, `iot:AttachPolicy``iam:CreateRole`, y`iam:AttachRolePolicy`. | 
| No se puede conectar al daemon de Docker dentro del contenedor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | 
| El contenedor se queda sin espacio en disco. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Garantice un espacio mínimo en disco: 5 GB para las operaciones básicas y 50 GB para Edge AWS IoT SiteWise  | 
| Problemas de compilación. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | 
| Problemas de conectividad de red. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Compruebe que el firewall permita el tráfico saliente de HTTPS (443) y MQTT (8883). | 
| Los componentes de Greengrass no se despliegan. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Compruebe los registros específicos de los componentes en el `/greengrass/v2/logs/` directorio. | 
| El contenedor sale inmediatamente después del inicio. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Compruebe que todas las variables de entorno requeridas estén configuradas correctamente si`PROVISION=true`. Asegúrese de utilizar la `--init` marca al iniciar el contenedor. | 

## Recursos relacionados
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-resources"></a>

**AWS resources**
+ [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)
+ [Configure el procesamiento de datos perimetrales para AWS IoT SiteWise los modelos y los activos](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/edge-processing.html)
+ [¿Qué es AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)

**Otros recursos**
+ [Documentación de Docker](https://docs.docker.com/)

## Información adicional
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-additional"></a>
+ Para el procesamiento de datos de AWS IoT SiteWise Edge, Docker debe estar disponible en el AWS IoT Greengrass entorno.
+ Para ejecutar un contenedor anidado, debe ejecutarlo con credenciales de AWS IoT Greengrass nivel de administrador.