

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.

# Cree la imagen del AWS IoT Greengrass contenedor a partir de un Dockerfile
<a name="build-greengrass-dockerfile"></a>

AWS proporciona un Dockerfile que puede descargar y usar para ejecutar AWS IoT Greengrass el software principal en un contenedor de Docker. Los archivos Docker contienen código fuente para crear imágenes de contenedores. AWS IoT Greengrass 

Antes de crear una imagen de AWS IoT Greengrass contenedor, debe configurar su Dockerfile para seleccionar la versión del software AWS IoT Greengrass principal que desea instalar. También puede configurar las variables de entorno para elegir cómo aprovisionar los recursos durante la instalación y personalizar otras opciones de instalación. En esta sección se describe cómo configurar y crear una imagen de Docker a partir de un AWS IoT Greengrass Dockerfile. 



## Descarga del paquete Dockerfile
<a name="download-dockerfile-package"></a>

Puede descargar el paquete AWS IoT Greengrass Dockerfile desde: GitHub

[Repositorio Docker de AWS Greengrass](https://github.com/aws-greengrass/aws-greengrass-docker)

Tras descargar el paquete, extraiga el contenido a la carpeta `download-directory/aws-greengrass-docker-nucleus-version` de su computadora. El Dockerfile usa una versión anterior de Greengrass. Debe actualizar el archivo para usar la versión de Greengrass que desee.

## Especifique la versión del AWS IoT Greengrass software principal
<a name="set-dockerfile-build-argument"></a>

Usa el siguiente argumento de compilación en el Dockerfile para especificar la versión del software AWS IoT Greengrass principal que deseas usar en la imagen de AWS IoT Greengrass Docker. De forma predeterminada, el Dockerfile usa la última versión del software Core. AWS IoT Greengrass 

`GREENGRASS_RELEASE_VERSION`  
La versión del software AWS IoT Greengrass principal. De forma predeterminada, el Dockerfile descarga la última versión disponible del núcleo de Greengrass. Establezca el valor en la versión del núcleo que quiere descargar.

## Configuración de las variables de entorno
<a name="set-dockerfile-environment-variables"></a>

Las variables de entorno le permiten personalizar la forma en que se instala el software AWS IoT Greengrass principal en el contenedor de Docker. Puede configurar las variables de entorno para la imagen de AWS IoT Greengrass Docker de varias maneras. 
+ Para usar las mismas variables de entorno para crear varias imágenes, configure las variables de entorno directamente en el Dockerfile.
+ Si usa `docker run` para iniciar el contenedor, pase variables de entorno como argumentos en el comando o establezca las variables de entorno en un archivo de variables de entorno y, a continuación, pase el archivo como un argumento. Para obtener más información sobre cómo configurar las variables de entorno en Docker, consulte [las variables de entorno](https://docs.docker.com/engine/reference/commandline/run/#env) en la documentación de Docker.
+ Si usa `docker-compose up` para iniciar su contenedor, configure las variables de entorno en un archivo de variables de entorno y, a continuación, pase el archivo como un argumento. Para obtener más información sobre cómo configurar las variables de entorno en Compose, consulte la [documentación de Docker](https://docs.docker.com/compose/environment-variables/).

Puede configurar las siguientes variables de entorno para la imagen de AWS IoT Greengrass Docker.

**nota**  
No modifique la variable `TINI_KILL_PROCESS_GROUP` en el Dockerfile. Esta variable permite reenviarla `SIGTERM` a todos los miembros PIDs del grupo PID para que el software AWS IoT Greengrass principal se pueda cerrar correctamente cuando se detenga el contenedor de Docker.

`GGC_ROOT_PATH`  
(Opcional) La ruta a la carpeta dentro del contenedor que se usará como raíz del software AWS IoT Greengrass Core.  
Valor predeterminado: `/greengrass/v2`

`PROVISION`  
(Opcional) Determina si el AWS IoT Greengrass núcleo AWS aprovisiona recursos.   
+ Si lo especificas`true`, el software AWS IoT Greengrass Core registra la imagen del contenedor como una AWS IoT cosa y aprovisiona los AWS recursos que requiere el dispositivo principal de Greengrass. El software AWS IoT Greengrass Core aprovisiona AWS IoT cualquier cosa, (opcional) un grupo de AWS IoT cosas, un rol de IAM y un alias de AWS IoT rol. Para obtener más información, consulte [Se ejecuta AWS IoT Greengrass en un contenedor Docker con aprovisionamiento automático de recursos](run-greengrass-docker-automatic-provisioning.md).
+ Si lo especifica`false`, debe crear un archivo de configuración para proporcionárselo al instalador AWS IoT Greengrass principal que especifique el uso de los AWS recursos y certificados que creó manualmente. Para obtener más información, consulte [Se ejecuta AWS IoT Greengrass en un contenedor Docker con aprovisionamiento manual de recursos](run-greengrass-docker-manual-provisioning.md).
Valor predeterminado: `false`

`AWS_REGION`  
(Opcional) El Región de AWS que el software AWS IoT Greengrass principal utiliza para recuperar o crear AWS los recursos necesarios.   
Predeterminado: `us-east-1`.

`THING_NAME`  
(Opcional) El nombre de AWS IoT lo que se registra como este dispositivo principal. Si el elemento con este nombre no existe en el tuyo Cuenta de AWS, será creado por el software AWS IoT Greengrass Core.   
Debe especificar `PROVISION=true` si desea aplicar este argumento.  
Valor predeterminado: `GreengrassV2IotThing_` más un UUID asignado al azar.

`THING_GROUP_NAME`  
(Opcional) El nombre del grupo de elementos al AWS IoT que se agrega este dispositivo principal. AWS IoT Si una implementación se dirige a este grupo, este y otros dispositivos principales de ese grupo reciben ese despliegue cuando se conectan AWS IoT Greengrass. Si el grupo de cosas con este nombre no existe en su empresa Cuenta de AWS, el software AWS IoT Greengrass Core lo crea.  
Debe especificar `PROVISION=true` si desea aplicar este argumento.

`TES_ROLE_NAME`  
(Opcional) El nombre de la función de IAM que se utilizará para adquirir AWS las credenciales que permiten al dispositivo principal de Greengrass interactuar con AWS los servicios. Si el rol con este nombre no existe en su cuenta Cuenta de AWS, el software AWS IoT Greengrass principal lo crea con la `GreengrassV2TokenExchangeRoleAccess` política. Este rol no tiene acceso a los buckets de S3 donde aloja los artefactos de los componentes. Por lo tanto, debe agregar permisos a los buckets y objetos de S3 de sus artefactos al crear un componente. Para obtener más información, consulte [Autorizar a los dispositivos principales a interactuar con AWS los servicios](device-service-role.md).  
Valor predeterminado: `GreengrassV2TokenExchangeRole`

`TES_ROLE_ALIAS_NAME`  
(Opcional) El nombre del alias del AWS IoT rol que apunta al rol de IAM que proporciona AWS las credenciales para el dispositivo principal de Greengrass. Si el alias del rol con este nombre no existe en su cuenta Cuenta de AWS, el software AWS IoT Greengrass principal lo crea y lo dirige al rol de IAM que especifique.  
Valor predeterminado: `GreengrassV2TokenExchangeRoleAlias`

`COMPONENT_DEFAULT_USER`  
(Opcional) El nombre o ID del usuario y grupo del sistema que el software AWS IoT Greengrass principal utiliza para ejecutar los componentes. Especifique el usuario y el grupo, separados por dos puntos. El grupo es opcional. Por ejemplo, puede especificar **ggc\$1user:ggc\$1group** o **ggc\$1user**.  
+ Si se ejecuta como raíz, el usuario y el grupo que defina el archivo de configuración son de forma predeterminada. Si el archivo de configuración no define un usuario ni un grupo, el valor predeterminado es `ggc_user:ggc_group`. Si no existen `ggc_user` o `ggc_group`, el software los crea.
+ Si se ejecuta como un usuario que no es root, el software AWS IoT Greengrass principal utiliza ese usuario para ejecutar los componentes.
+ Si no especifica un grupo, el software AWS IoT Greengrass Core utiliza el grupo principal del usuario del sistema.
Para obtener más información, consulte [Configuración del usuario que ejecuta los componentes](configure-greengrass-core-v2.md#configure-component-user).

`DEPLOY_DEV_TOOLS`  
Define si se debe descargar e implementar el [componente de la CLI de Greengrass](greengrass-cli-component.md) en la imagen del contenedor. Puede usar la CLI de Greengrass para desarrollar y depurar componentes localmente.  
 <a name="local-dev-tools-production-environment-warning"></a>Se recomienda usar este componente solo en entornos de desarrollo y no en entornos de producción. Este componente brinda acceso a información y operaciones que, por lo general, no necesitará en un entorno de producción. Siga el principio de privilegio mínimo al implementar este componente solo en los dispositivos principales donde lo necesite. 
Valor predeterminado: `false`

`INIT_CONFIG`  
(Opcional) La ruta al archivo de configuración que se utilizará para instalar el software AWS IoT Greengrass principal. Puede usar esta opción para configurar nuevos dispositivos principales de Greengrass con una configuración de núcleo específica o para especificar recursos aprovisionados manualmente, por ejemplo. Debe montar el archivo de configuración en la ruta que especifique en este argumento. 

`TRUSTED_PLUGIN`  
Esta característica está disponible para la versión 2.4.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).  
(Opcional) La ruta a un archivo JAR para cargarlo como un complemento de confianza. Use esta opción para aprovisionar archivos JAR, como instalar con el [aprovisionamiento de flota](fleet-provisioning.md) o el [aprovisionamiento personalizado](custom-provisioning.md). 

`THING_POLICY_NAME`  
Esta característica está disponible para la versión 2.4.0 y versiones posteriores del [componente núcleo de Greengrass](greengrass-nucleus-component.md).  
(Opcional) El nombre de la AWS IoT política que se va a adjuntar al certificado AWS IoT Thing de este dispositivo principal. Si la AWS IoT política con este nombre no existe en su software AWS IoT Greengrass Core Cuenta de AWS la crea.   
Debe especificar `PROVISION=true` si desea aplicar este argumento.  
El software AWS IoT Greengrass Core crea una AWS IoT política permisiva de forma predeterminada. Puede limitar el alcance de esta política o crear una política personalizada en la que restrinja los permisos según su caso de uso. Para obtener más información, consulte [AWS IoT Política mínima para los dispositivos AWS IoT Greengrass V2 principales](device-auth.md#greengrass-core-minimal-iot-policy). 

## Especificación de las dependencias que desea instalar
<a name="dockerfile-run-instruction"></a>

La instrucción RUN del AWS IoT Greengrass Dockerfile prepara el entorno del contenedor para ejecutar el instalador del AWS IoT Greengrass software Core. Puede personalizar las dependencias que se instalan antes de que el instalador del software AWS IoT Greengrass Core se ejecute en el contenedor de Docker. 

## Cree la imagen AWS IoT Greengrass
<a name="build-greengrass-docker-image"></a>

Usa el AWS IoT Greengrass Dockerfile para crear una imagen de AWS IoT Greengrass contenedor. Puede usar la CLI de Docker o la CLI de Docker Compose para crear la imagen e iniciar el contenedor. También puede usar la CLI de Docker para crear la imagen y, a continuación, usar Docker Compose para iniciar el contenedor a partir de esa imagen.

------
#### [ Docker ]

1. En la máquina host, ejecute el siguiente comando para cambiar al directorio que contiene el Dockerfile configurado.

   ```
   cd download-directory/aws-greengrass-docker-nucleus-version
   ```

1. Ejecute el siguiente comando para crear la imagen del AWS IoT Greengrass contenedor a partir del Dockerfile.

   ```
   sudo docker build -t "platform/aws-iot-greengrass:nucleus-version" ./
   ```

------
#### [ Docker Compose ]

1. En la máquina host, ejecute el siguiente comando para cambiar al directorio que contiene el Dockerfile y el archivo Compose.

   ```
   cd download-directory/aws-greengrass-docker-nucleus-version
   ```

1. Ejecuta el siguiente comando para usar el archivo Compose para crear la imagen del AWS IoT Greengrass contenedor.

   ```
   docker-compose -f docker-compose.yml build
   ```

------

Ha creado correctamente la imagen del AWS IoT Greengrass contenedor. La imagen de Docker tiene instalado el software AWS IoT Greengrass principal. Ahora puede ejecutar el software AWS IoT Greengrass principal en un contenedor de Docker.