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.
Optimizar imágenes de Docker generadas por AWS App2Container
Creado por Varun Sharma (AWS)
Entorno: PoC o piloto | Tecnologías: contenedores y microservicios; Modernización; DevOps | Servicios de AWS: Amazon ECS |
Resumen
AWS App2Container es una herramienta de línea de comandos que le ayuda a transformar en contenedores las aplicaciones existentes en las instalaciones que se ejecutan en máquinas virtuales sin necesidad de cambiar el código.
En función del tipo de aplicación, App2Container adopta un enfoque conservador para identificar las dependencias. En el modo de proceso, todos los archivos que no son del sistema en el servidor de aplicaciones se incluyen en la imagen del contenedor. En esos casos, se puede generar una imagen de gran tamaño.
Este patrón proporciona un enfoque para optimizar las imágenes del contenedor generadas por App2Container. Es aplicable a todas las aplicaciones Java detectadas por App2Container en modo de proceso. El flujo de trabajo definido en el patrón ha sido diseñado para ejecutarse en el servidor de aplicaciones.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa
Un servidor de aplicaciones con una aplicación Java que se ejecuta en un servidor Linux
App2Container instalado y configurado, con todos los requisitos previos satisfechos, en el servidor Linux
Arquitectura
Pila de tecnología de origen
Aplicaciones Java que se ejecutan en un servidor Linux
Pila de tecnología de destino
Una imagen de Docker generada por App2Container
Arquitectura de destino flow
![Diagram showing AWS App2Container process for containerizing Java app on Linux system.](images/pattern-img/dc756bff-1fcd-4fd2-8c4f-dc494b5007b9/images/8eadcb44-378f-4903-8a5b-5b03c9c835bf.png)
Descubra las aplicaciones que se ejecutan en el servidor de aplicaciones y analice las aplicaciones.
Contenerización de aplicaciones.
Evalúe el tamaño de la imagen de Docker. Si la imagen es demasiado grande, continúe con el paso 4.
Utilice el script de intérprete de comandos (adjunto) para identificar los archivos de gran tamaño.
Actualice las listas
appExcludedFiles
yappSpecificFiles
del archivoanalysis.json
.
Herramientas
Herramientas
AWS App2Container (A2C): AWS App2Container (A2C) es una herramienta de la línea de comandos que le ayuda a migrar mediante lift-and-shift las aplicaciones que se ejecutan en centros de datos en las instalaciones o en máquinas virtuales, de modo que se ejecuten en contenedores administrados por Amazon Elastic Container Service (Amazon ECS) o Amazon Elastic Kubernetes Service (Amazon EKS).
Código
Se adjuntan el script de intérprete de comandos optimizeImage.sh
y un archivo analysis.json
de ejemplo.
El archivo optimizeImage.sh
es un script de utilidad para revisar el contenido del archivo generado por App2Container, ContainerFiles.tar
. La revisión identifica los archivos o subdirectorios grandes que se pueden excluir. El script es un contenedor para el siguiente comando tar.
tar -Ptvf <path>|tr -s ' '|cut -d ' ' -f3,6| awk '$2 ~/<filetype>$/'| awk '$2 ~/^<toplevel>/'| cut -f1-<depth> -d'/'|awk '{ if ($1>= <size>) arr[$2]+=$1 } END { for (key in arr) { if(<verbose>) printf("%-50s\t%-50s\n", key, arr[key]) else printf("%s,\n", key) } } '|sort -k2 -nr
En el comando tar, el script usa los siguientes valores:
| La ruta a |
| Tipo de archivo a comparar |
| Directorio de nivel superior a comparar |
| Profundidad de la ruta absoluta |
| Tamaño de cada archivo |
El script hace lo siguiente:
Emplea
tar -Ptvf
para enumerar los archivos sin extraerlos.Filtra los archivos por tipo de archivo, empezando por el directorio de nivel superior.
En función de la profundidad, genera la ruta absoluta como un índice.
Según el índice y el almacenamiento, indica el tamaño total del subdirectorio.
Imprime el tamaño del subdirectorio.
También puede sustituir los valores manualmente en el comando tar.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Descubra las aplicaciones Java en las instalaciones. | Para descubrir todas las aplicaciones en ejecución en el servidor de aplicaciones, ejecute el siguiente comando.
| AWS DevOps |
Analice las aplicaciones descubiertas. | Para analizar cada aplicación mediante el
| AWS DevOps |
Coloque las aplicaciones analizadas en contenedores. | Ejecute el siguiente comando para la contenerización de una aplicación.
El comando genera la imagen de Docker junto con un paquete tar en la ubicación del espacio de trabajo. Si la imagen de Docker es demasiado grande, continúe al siguiente paso. | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Identifique el tamaño del archivo tar de artefactos. | Identifique el archivo
Este es el tamaño total del archivo tar tras la optimización. | AWS DevOps |
Enumere los subdirectorios del directorio / y sus tamaños. | Para identificar los tamaños de los subdirectorios principales en el directorio de nivel superior
| AWS DevOps |
Identifique los subdirectorios grandes en el directorio /. | En cada subdirectorio principal enumerado en el comando anterior, identifique los tamaños de sus subdirectorios. Use Por ejemplo, use
Repita este proceso en cada subdirectorio de la lista del paso anterior (por ejemplo, | AWS DevOps |
Analice la carpeta grande de cada subdirectorio en el directorio /. | En cada subdirectorio enumerado en el paso anterior, identifique las carpetas necesarias para ejecutar la aplicación. Por ejemplo, en los subdirectorios del paso anterior, enumere todos los subdirectorios del directorio
Para excluir los subdirectorios que la aplicación no necesita, en el archivo Se adjunta un archivo | AWS DevOps |
Identifique los archivos necesarios en la lista appExcludes. | En cada subdirectorio agregado a la lista appExcludes, identifique los archivos de dicho subdirectorio necesarios para la aplicación. En el archivo analysis.json, añada los archivos o subdirectorios específicos en la sección Por ejemplo, si el directorio | AWS DevOps |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Coloque la aplicación analizada en un contenedor. | Ejecute el siguiente comando para la contenerización de la aplicación.
El comando genera la imagen de Docker junto con un paquete tar en la ubicación del espacio de trabajo. | AWS DevOps |
Identifique el tamaño del archivo tar de artefactos. | Identifique el archivo
Este es el tamaño total del archivo tar tras la optimización. | AWS DevOps |
Ejecutar la imagen de Docker. | Para comprobar que la imagen se inicia sin errores, ejecute la imagen de Docker de forma local mediante los siguientes comandos. Para identificar el Para ejecutar el contenedor, use | AWS DevOps |
Recursos relacionados
Conexiones
Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip