

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.

# Uso AL2023 en contenedores
<a name="container"></a>

**nota**  
 Para obtener más información sobre cómo alojar cargas AL2023 de trabajo en contenedores en Amazon ECS, consulte. [AL2023 para hosts de contenedores de Amazon ECS](ecs.md) 

 Existen varias formas de utilizarlas AL2023 dentro de los contenedores, según el caso de uso. [AL2023 Imagen del contenedor base](base-container.md)Es muy similar a una imagen de contenedor de Amazon Linux 2 y a la AMI AL2023 mínima. 

 Para los usuarios avanzados, ofrecemos una imagen de contenedor mínima, presentada en la versión AL2023 .2, junto con documentación que describe cómo crear [contenedores básicos.](barebones-containers.md) 

 AL2023 también se puede utilizar para alojar cargas de trabajo en contenedores, ya sean imágenes de contenedores o contenedores AL2023 basados en otras distribuciones de Linux. Puede usar [AL2023 para hosts de contenedores de Amazon ECS](ecs.md) o usar directamente los paquetes de tiempo de ejecución de contenedores que se proporcionan. Los `nerdctl` paquetes `docker``containerd`, y están disponibles para su instalación y uso. AL2023 

**Topics**
+ [Uso de la imagen del contenedor AL2023 base](base-container.md)
+ [AL2023 Imagen de contenedor mínima](minimal-container.md)
+ [Creación de imágenes de contenedores básicas AL2023](barebones-containers.md)
+ [Comparación de paquetes instalados en imágenes de contenedores de Amazon Linux 2023](al2023-container-image-types.md)
+ [Comparación de paquetes instalados en una AMI mínima y en imágenes de contenedores en Amazon Linux 2023](al2023-container-ami.md)

# Uso de la imagen del contenedor AL2023 base
<a name="base-container"></a>

La imagen del AL2023 contenedor se crea a partir de los mismos componentes de software que se incluyen en la AL2023 AMI. Está disponible para su uso en cualquier entorno como imagen base para las cargas de trabajo de Docker. Si ya usa la AMI de Amazon Linux para las aplicaciones de [Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/) (Amazon EC2), puede incluir sus aplicaciones en contenedores con la imagen de contenedor de Amazon Linux.

Utilice la imagen del contenedor de Amazon Linux en su entorno de desarrollo local y, a continuación, inserte su aplicación para que AWS utilice [Amazon Elastic Container Service](https://docs.aws.amazon.com/AmazonECS/latest/userguide/) (Amazon ECS). Para obtener más información, consulte [Utilización de imágenes de Amazon ECR con Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) en la *Guía del usuario de Amazon Elastic Container Registry*.

La imagen de contenedor de Amazon Linux está disponible en Amazon ECR Public. Puede enviarnos sus comentarios AL2023 a través de su AWS representante designado o archivando un problema en el repositorio de [amazon-linux-2023](https://github.com/amazonlinux/amazon-linux-2023/issues) en. GitHub

****Para extraer la imagen de contenedor de Amazon Linux desde Amazon ECR Public****

1. Autentique el cliente Docker en su registro de Amazon Linux Public. Los tokens de autenticación son válidos durante 12 horas. Para obtener más información, consulte [Autenticación de registros privados](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html) en la *Guía del usuario de Amazon Elastic Container Registry*.
**nota**  
El **get-login-password** comando es compatible con la última versión de la versión 2. AWS CLI Para obtener más información, consulte [Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de AWS Command Line Interface *.

   ```
   $ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
   ```

   El resultado es el siguiente.

   ```
   Login succeeded
   ```

1. Extraiga la imagen de contenedor de Amazon Linux ejecutando el comando **docker pull**. Para ver la imagen de contenedor de Amazon Linux en la galería pública de Amazon ECR, consulte [Galería pública de Amazon ECR: amazonlinux](https://gallery.ecr.aws/amazonlinux/amazonlinux).
**nota**  
Al extraer la imagen del AL2023 Docker contenedor, puede usar las etiquetas en uno de los siguientes formatos:  
Para obtener la versión más reciente de la imagen del AL2023 contenedor, usa la `:2023` etiqueta.
Para obtener una versión específica de AL2023, puedes usar el siguiente formato:  
`:2023.[0-7 release quarter].[release date].[build number]`
En los ejemplos siguientes se utiliza la etiqueta `:2023` y se extrae la imagen de contenedor más reciente disponible de AL2023.

   ```
   $ docker pull public.ecr.aws/amazonlinux/amazonlinux:2023
   ```

1. (Opcional) Ejecute el contenedor localmente.

   ```
   $ docker run -it --security-opt seccomp=unconfined public.ecr.aws/amazonlinux/amazonlinux:2023 /bin/bash
   ```

**Para extraer la imagen del AL2023 contenedor de Docker Hub**

1. Extraiga la imagen del AL2023 contenedor con el **docker pull** comando.

   ```
   $ docker pull amazonlinux:2023
   ```

1. (Opcional) Ejecute el contenedor localmente.

   ```
   $ docker run -it amazonlinux:2023 /bin/bash
   ```
**nota**  
La imagen del contenedor de AL2023 usa solo el administrador de `dnf` paquetes para instalar paquetes de software. Esto significa que no hay ningún comando `amazon-linux-extras` o un comando equivalente para usar con software adicional.

# AL2023 Imagen de contenedor mínima
<a name="minimal-container"></a>

**nota**  
 Las imágenes de AL2023 contenedor estándar son adecuadas para la mayoría de los casos de uso, y es probable que la adaptación a la imagen de contenedor mínima requiera más trabajo que la adaptación a la imagen de contenedor AL2023 base. 

 La imagen del contenedor AL2023 mínimo, presentada en la sección AL2023 .2, difiere de la imagen del contenedor base porque contiene solo los paquetes mínimos necesarios para instalar otros paquetes. La imagen de contenedor mínimo está diseñada para ser un conjunto mínimo de paquetes, no un conjunto conveniente de paquetes. 

 La imagen AL2023 mínima del contenedor se crea a partir de componentes de software ya disponibles en AL2023. La diferencia clave en la imagen de contenedor mínimo es el uso de `microdnf` para proporcionar el administrador de paquetes `dnf` en lugar del `dnf` completo basado en Python. Esto permite reducir el tamaño de la imagen mínima del contenedor, con la desventaja de no disponer del conjunto completo de funciones del gestor de `dnf` paquetes que se incluye en la imagen del contenedor base AL2023 AMIs y en la imagen del contenedor. 

 La imagen AL2023 mínima del contenedor constituye la base del entorno de ejecución de `provided.al2023` AWS Lambda. 

 Para obtener una lista detallada de los paquetes incluidos en la imagen de contenedor mínimo, consulte [Comparación de paquetes instalados en imágenes de contenedores de Amazon Linux 2023](al2023-container-image-types.md). 

## Tamaño de imagen de contenedor mínimo
<a name="container-minimal-size"></a>

 Como la imagen del contenedor AL2023 mínimo contiene menos paquetes que la imagen del contenedor AL2023 base, también es significativamente más pequeña. En la siguiente tabla se comparan las opciones de imagen de contenedor de las versiones actuales y anteriores de Amazon Linux. 

**nota**  
 El tamaño de la imagen es el que se muestra en la [Galería pública de Amazon ECR en Amazon Linux.](https://gallery.ecr.aws/amazonlinux/amazonlinux) 


| Image | Versión | Tamaño de la imagen | Nota | 
| --- | --- | --- | --- | 
| Amazon Linux (1AL1) | 2018.03.0.20230918.0 | 62,3 MB | Solo x86-64 | 
| Amazon Linux 2 | 2.0.20230926,0 | 64,2 MB | aarch64 es 1,6 MB mayor que x86-64 | 
| Imagen de contenedor base de Amazon Linux 2023 | 20232,20231002.0 | 52,4 MB |  | 
| Imagen de contenedor mínimo de Amazon Linux 2023 | 2023.2.20231002.0 - mínimo | 35,2 MB |  | 

## Uso de la imagen Minimal Container AL2023
<a name="using-container-minimal"></a>

 La imagen de contenedor AL2023 mínimo está disponible en ECR y la `2023-minimal` etiqueta siempre apuntará a la imagen de contenedor mínima AL2023 basada en la última versión, mientras que la `minimal` etiqueta puede estar actualizada a una versión de Amazon Linux más reciente que AL2023. 

 Puede extraer estas etiquetas con `docker`. Para ello, siga el ejemplo que se indica a continuación: 

```
$ docker pull public.ecr.aws/amazonlinux/amazonlinux:minimal
```

```
$ docker pull public.ecr.aws/amazonlinux/amazonlinux:2023-minimal
```

A continuación se muestra un ejemplo de `Dockerfile` que toma la imagen de contedor mínima e instala GCC sobre ella:

```
FROM public.ecr.aws/amazonlinux/amazonlinux:2023-minimal
RUN dnf install -y gcc && dnf clean all
```

# Creación de imágenes de contenedores básicas AL2023
<a name="barebones-containers"></a>

La imagen de contenedor de AL2023 se construye desde los mismos componentes de software que se incluyen en la AMI de AL2023. Incluye un software que permite que la capa base del contenedor se comporte de manera similar a como lo haría en una instancia de Amazon EC2, como el `dnf` del administrador de paquetes. En esta sección se explica cómo se puede crear un contenedor desde cero que incluya solo las dependencias mínimas necesarias para una aplicación.

**nota**  
Las imágenes de AL2023 contenedores estándar son adecuadas para la mayoría de los casos de uso. El uso de la imagen de contenedor estándar facilita la creación sobre la imagen. Una imagen de contenedor básica dificulta la creación de imágenes basadas en ella.

**Creación de un contenedor con las dependencias básicas mínimas para una aplicación**

1. Determine las dependencias del tiempo de ejecución. Esto variará en función de la aplicación.

1. Cree un `Dockerfile` / `Containerfile` que se genere `FROM scratch`. El siguiente ejemplo de un `Dockerfile` se puede utilizar para crear un contenedor que contenga solo el intérprete de comandos `bash` y sus dependencias.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:2023 as build
   RUN mkdir /sysroot
   RUN dnf --releasever=$(rpm -q system-release --qf '%{VERSION}') \
     --installroot /sysroot \
     -y \
     --setopt=install_weak_deps=False \
     install bash
   
   FROM scratch
   COPY --from=build /sysroot /
   WORKDIR /
   ENTRYPOINT ["/bin/bash"]
   ```

   1. Este `Dockerfile` funciona de la siguiente manera:

     1.  Iniciar un AL2023 contenedor llamado`build`. Este contenedor se utilizará para arrancar el contenedor básico. Este contenedor no se implementa por sí mismo, sino que genera el contenedor que se va a implementar. 

     1.  Creando el directorio `/sysroot`. En este directorio, el contenedor `build` instalará las dependencias necesarias para el contenedor básico. En un paso posterior, la ruta `/sysroot` se empaquetará para que sea el directorio raíz de nuestra imagen básica. 

         Usando la `--installroot` opción de esta `dnf` manera es como creamos las otras AL2023 imágenes. Es una característica de `dnf` que permite que funcionen los instaladores y las herramientas de creación de imágenes. 

     1.  Invocación a `dnf` para instalar paquetes en `/sysroot`. 

         El comando `rpm -q system-release --qf '%{VERSION}'` consulta (`-q`) el paquete `system-release` y establece el formato de consulta (`--qf`) para imprimir la versión del paquete que se está consultando (la variable `%{VERSION}` es la variable `rpm` de la versión de `RPM`). 

         Al establecer el argumento `--releasever` de `dnf` en la versión del `system-release` en el contenedor `build`, este `Dockerfile` se puede utilizar para reconstruir el contenedor básico siempre que se publique una imagen base de contenedores actualizada de Amazon Linux. 

         Es posible configurarlo en cualquier versión de `--releasever` Amazon Linux 2023, como la 2023.10.20260325. De este modo, el `build` contenedor se ejecutaría como la AL2023 versión más reciente, pero se compilaría el contenedor básico a partir de la 2023.10.20260325, independientemente de cuál fuera la versión actual. AL2023 

         La opción de configuración `--setopt=install_weak_deps=False` indica a `dnf` que solo hay que instalar las dependencias que sean *necesarias* y no las recomendadas o sugeridas. 

     1. Copia del sistema instalado en la raíz de un contenedor vacío (`FROM scratch`).

     1. Definición de `ENTRYPOINT` como el binario deseado, en este caso, `/bin/bash`.

1. Cree un directorio vacío y agregue el contenido del ejemplo del paso 2 a un archivo denominado `Dockerfile`.

   ```
   $ mkdir al2023-barebones-bash-example
   	$ cd al2023-barebones-bash-example
   	$ cat > Dockerfile <<EOF
   FROM public.ecr.aws/amazonlinux/amazonlinux:2023 as build
   RUN mkdir /sysroot
   RUN dnf --releasever=$(rpm -q system-release --qf '%{VERSION}') \
     --installroot /sysroot \
     -y \
     --setopt=install_weak_deps=False \
     install bash && dnf --installroot /sysroot clean all
   
   FROM scratch
   COPY --from=build /sysroot /
   WORKDIR /
   ENTRYPOINT ["/bin/bash"]
   EOF
   ```

1. Cree el contenedor ejecutando el siguiente comando.

   ```
   $ docker build -t al2023-barebones-bash-example
   ```

1. Ejecute el contenedor con el siguiente comando para ver qué tan mínimo es un contenedor de `bash` exclusivo.

   ```
   $ docker run -it --rm al2023-barebones-bash-example
   bash-5.2# rpm
   bash: rpm: command not found
   bash-5.2# du -sh /usr/
   bash: du: command not found
   bash-5.2# ls
   bash: ls: command not found
   bash-5.2# echo /bin/*
   /bin/alias /bin/bash /bin/bashbug /bin/bashbug-64 /bin/bg /bin/catchsegv /bin/cd /bin/command /bin/fc /bin/fg /bin/gencat /bin/getconf /bin/getent /bin/getopts /bin/hash /bin/iconv /bin/jobs /bin/ld.so /bin/ldd /bin/locale /bin/localedef /bin/pldd /bin/read /bin/sh /bin/sotruss /bin/sprof /bin/type /bin/tzselect /bin/ulimit /bin/umask /bin/unalias /bin/wait /bin/zdump
   ```

Para obtener un ejemplo más práctico, el siguiente procedimiento crea un contenedor para una aplicación en C que muestra `Hello World!`.

1. Cree un directorio vacío y agregue el código fuente C y `Dockerfile`.

   ```
   $ mkdir al2023-barebones-c-hello-world-example
   $ cd al2023-barebones-c-hello-world-example
   $ cat > hello-world.c <<EOF
   #include <stdio.h>
   int main(void)
   {
     printf("Hello World!\n");
     return 0;
   }
   EOF
   
   $ cat > Dockerfile <<EOF
   FROM public.ecr.aws/amazonlinux/amazonlinux:2023 as build
   COPY hello-world.c /
   RUN dnf -y install gcc
   RUN gcc -o hello-world hello-world.c
   RUN mkdir /sysroot
   RUN mv hello-world /sysroot/
   RUN dnf --releasever=$(rpm -q system-release --qf '%{VERSION}') \
     --installroot /sysroot \
     -y \
     --setopt=install_weak_deps=False \
     install glibc && dnf --installroot /sysroot clean all
   
   FROM scratch
   COPY --from=build /sysroot /
   WORKDIR /
   ENTRYPOINT ["/hello-world"]
   EOF
   ```

1. Cree el contenedor con el siguiente comando.

   ```
   $ docker build -t al2023-barebones-c-hello-world-example .
   ```

1. Ejecute el contenedor con el siguiente comando.

   ```
   $ docker run -it --rm al2023-barebones-c-hello-world-example
   Hello World!
   ```

# Comparación de paquetes instalados en imágenes de contenedores de Amazon Linux 2023
<a name="al2023-container-image-types"></a>

Una comparación del RPMs presente en la imagen del contenedor AL2023 base con el RPMs presente en la imagen del contenedor AL2023 mínimo.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/linux/al2023/ug/al2023-container-image-types.html)

# Comparación de paquetes instalados en una AMI mínima y en imágenes de contenedores en Amazon Linux 2023
<a name="al2023-container-ami"></a>

Una comparación del RPMs presente en la AMI AL2023 mínima con las imágenes RPMs actuales de la AL2023 base y del contenedor mínimo.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/linux/al2023/ug/al2023-container-ami.html)