

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.

# Migración a Docker de Elastic Beanstalk que se ejecuta en Amazon Linux 2 desde Multicontainer Docker que se ejecuta en Amazon Linux
<a name="docker-multicontainer-migration"></a>

Antes del lanzamiento de la ramificación de la plataforma *ECS que se ejecuta en Amazon Linux 2 de 64 bits*, Elastic Beanstalk ofrecía una ruta de migración alternativa a Amazon Linux 2 para los clientes con entornos basados en la ramificación de la plataforma *Multicontainer Docker que se ejecuta en Amazon Linux de 64 bits*. En este tema se describe esa ruta de migración y se incluye en este documento como referencia para cualquier cliente que haya completado esa ruta de migración.

Ahora recomendamos que los clientes con entornos basados en la ramificación de la plataforma *Multicontainer Docker que se ejecuta en Amazon Linux de 64 bits* migren a la ramificación de la plataforma *ECS que se ejecuta en Amazon Linux 2 de 64 bits*. A diferencia de la ruta de migración alternativa, este enfoque continúa utilizando Amazon ECS para coordinar las implementaciones de los contenedores en entornos de Docker administrados por ECS. Este aspecto permite un enfoque más sencillo. No se requieren cambios en el código fuente y se admite el mismo `Dockerrun.aws.json` de la v2. Para obtener más información, consulte [Migración de la aplicación de Elastic Beanstalk de AL1 Docker multicontenedor gestionado por ECS a ECS en Amazon Linux 2023](migrate-to-ec2-AL2-platform.md). 

## Migración heredada de Multicontainer Docker en Amazon Linux a la ramificación de la plataforma Docker Amazon Linux 2
<a name="docker-multicontainer-migration-to-docker-al2"></a>

Puede migrar las aplicaciones que se ejecutan en la [plataforma Docker de varios contenedores en la AMI de Amazon Linux](create_deploy_docker_ecs.md) a la plataforma Amazon Linux 2 Docker. La plataforma Docker Multi-Container en la AMI de Amazon Linux requiere que especifique imágenes de aplicación preconfiguradas para que se ejecuten como contenedores. Después de la migración, ya no tendrá esta limitación, ya que la plataforma de Docker en Amazon Linux 2 también permite a Elastic Beanstalk crear imágenes de contenedor durante la implementación. Sus aplicaciones seguirán ejecutándose en entornos de varios contenedores con los beneficios agregados de la herramienta Docker Compose.





Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores. Para obtener más información sobre Docker Compose y cómo instalarlo, consulte los sitios de Docker [Overview of Docker Compose](https://docs.docker.com/compose/) e [Install Docker Compose](https://docs.docker.com/compose/install/).

### El archivo `docker-compose.yml`
<a name="docker-multicontainer-migration.files"></a>

La herramienta Docker Compose utiliza el archivo `docker-compose.yml` para la configuración de los servicios de aplicaciones. Este archivo reemplaza el archivo `Dockerrun.aws.json v2` en el directorio del proyecto de la aplicación y el paquete de código fuente de la aplicación. Cree el archivo `docker-compose.yml` manualmente. Le resultará útil hacer referencia a su archivo `Dockerrun.aws.json v2` para la mayoría de los valores de parámetros.

A continuación, se muestra un ejemplo de un archivo `docker-compose.yml` y el archivo `Dockerrun.aws.json v2` correspondiente para la misma aplicación. Para obtener más información sobre el archivo `docker-compose.yml`, consulte [Compose file reference](https://docs.docker.com/compose/compose-file/). Para obtener más información sobre el archivo `Dockerrun.aws.json v2`, consulte [`Dockerrun.aws.json` v2](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun). 


| **`docker-compose.yml`** | **`Dockerrun.aws.json v2`** | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  | 
|  <pre>version: '2.4'<br />services:<br />  php-app:<br />    image: "php:fpm"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app"<br />    mem_limit: 128m<br />    environment:<br />      Container: PHP<br />  nginx-proxy:<br />    image: "nginx"<br />    ports:<br />      - "80:80"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "./proxy/conf.d:/etc/nginx/conf.d:ro"<br />      - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"<br />    mem_limit: 128m<br />    links:<br />      - php-app</pre>  | 
|  <pre>{<br />  "AWSEBDockerrunVersion": 2,<br />  "volumes": [<br />    {<br />      "name": "php-app",<br />      "host": {<br />        "sourcePath": "/var/app/current/php-app"<br />      }<br />    },<br />    {<br />      "name": "nginx-proxy-conf",<br />      "host": {<br />        "sourcePath": "/var/app/current/proxy/conf.d"<br />      }<br />    }<br />  ],<br />  "containerDefinitions": [<br />    {<br />      "name": "php-app",<br />      "image": "php:fpm",<br />      "environment": [<br />        {<br />          "name": "Container",<br />          "value": "PHP"<br />        }<br />      ],<br />      "essential": true,<br />      "memory": 128,<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        }<br />      ]<br />    },<br />    {<br />      "name": "nginx-proxy",<br />      "image": "nginx",<br />      "essential": true,<br />      "memory": 128,<br />      "portMappings": [<br />        {<br />          "hostPort": 80,<br />          "containerPort": 80<br />        }<br />      ],<br />      "links": [<br />        "php-app"<br />      ],<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "nginx-proxy-conf",<br />          "containerPath": "/etc/nginx/conf.d",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "awseb-logs-nginx-proxy",<br />          "containerPath": "/var/log/nginx"<br />        }<br />      ]<br />    }<br />  ]<br />}<br /> </pre>  | 

### Consideraciones adicionales sobre la migración
<a name="docker-multicontainer-migration.considerations"></a>

La plataforma Docker Amazon Linux 2 y la plataforma Docker de contenedores múltiples Amazon Linux AMI implementan propiedades del entorno de forma diferente. Estas dos plataformas también tienen directorios de registro diferentes a los que Elastic Beanstalk crea para cada uno de sus contenedores. Después de migrar desde la plataforma Docker de contenedores múltiples de Amazon Linux AMI, deberá tener en cuenta estas diferentes implementaciones para su nuevo entorno de plataforma Docker de Amazon Linux 2.


|  **Área**  |  **Plataforma Docker en Amazon Linux 2 con Docker Compose**  |  **Plataforma Docker de varios contenedores en la AMI de Amazon Linux**  | 
| --- | --- | --- | 
|  Propiedades del entorno  |  Para que los contenedores accedan a las propiedades del entorno, debe agregar una referencia al archivo `.env` en el archivo `docker-compose.yml`. Elastic Beanstalk genera el archivo `.env`, enumerando cada una de las propiedades como variables de entorno. Para obtener más información, consulte [Referencia a variables de entorno en contenedores](create_deploy_docker.container.console.md#docker-env-cfg.env-variables).   |  Elastic Beanstalk puede pasar directamente las propiedades del entorno al contenedor. El código que se ejecuta en el contenedor puede acceder a estas propiedades como variables de entorno sin ninguna configuración adicional.   | 
|  Directorios de registro  |  Para cada contenedor, Elastic Beanstalk crea un directorio de registro llamado `/var/log/eb-docker/containers/<service name>` (o `${EB_LOG_BASE_DIR}/<service name>`). Para obtener más información, consulte [Registro personalizado del contenedor de Docker con Docker Compose](create_deploy_docker.container.console.md#docker-env-cfg.dc-customized-logging).   |  Para cada contenedor, Elastic Beanstalk crea un directorio de registro llamado `/var/log/containers/<containername>`. Para obtener más información, consulte `mountPoints` en [Formato de definición de contenedor](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun_format).   | 

### Pasos para realizar la migración
<a name="docker-multicontainer-migration.procedure"></a>

**Para migrar a la plataforma Docker de Amazon Linux 2**

1. Cree el archivo `docker-compose.yml ` para su aplicación, basado en el archivo `Dockerrun.aws.json v2` existente. Para obtener más información, consulte la sección anterior [El archivo `docker-compose.yml`](#docker-multicontainer-migration.files).

1. En el directorio raíz de la carpeta del proyecto de la aplicación, reemplace el archivo `Dockerrun.aws.json v2` por el archivo `docker-compose.yml` que acaba de crear. 

   La estructura de directorios debe ser similar a la siguiente.

   ```
   ~/myApplication
   |-- docker-compose.yml
   |-- .ebextensions
   |-- php-app
   |-- proxy
   ```

1. Utilice el comando **eb init** para configurar el directorio local para la implementación en Elastic Beanstalk.

   ```
   ~/myApplication$ eb init -p docker application-name
   ```

1. Utilice el comando **eb create** para crear un entorno e implementar la imagen de Docker.

   ```
   ~/myApplication$ eb create environment-name
   ```

1. Si la aplicación es una aplicación web, después de que se inicie el entorno, utilice el comando **eb open** para verla en un navegador web.

   ```
   ~/myApplication$ eb open environment-name
   ```

1. Puede mostrar el estado del entorno recién creado mediante el comando **eb status**.

   ```
   ~/myApplication$ eb status environment-name
   ```