Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Optimisation des images Docker générées par AWS App2Container
Créée par Varun Sharma (AWS)
Environnement : PoC ou pilote | Technologies : Conteneurs et microservices ; Modernisation ; DevOps | Services AWS : Amazon ECS |
Récapitulatif
AWS App2Container est un outil de ligne de commande qui permet de transformer des applications existantes exécutées sur site ou sur des machines virtuelles en conteneurs, sans qu'il soit nécessaire de modifier le code.
En fonction du type d'application, App2Container adopte une approche conservatrice pour identifier les dépendances. En mode processus, tous les fichiers du serveur d'applications sont inclus dans l'image du conteneur. Dans de tels cas, une image assez grande peut être générée.
Ce modèle fournit une approche pour optimiser les images de conteneur générées par App2Container. Il s'applique à toutes les applications Java découvertes par App2Container en mode processus. Le flux de travail défini dans le modèle est conçu pour être exécuté sur le serveur d'applications.
Conditions préalables et limitations
Prérequis
Un compte AWS actif
Application Java exécutée sur un serveur d'applications sur un serveur Linux
App2Container installé et configuré, avec toutes les conditions requises remplies, sur le serveur Linux
Architecture
Pile technologique source
Une application Java exécutée sur un serveur Linux
Pile technologique cible
Une image Docker générée par App2Container
Flux d'architecture cible
![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)
Découvrez les applications qui s'exécutent sur le serveur d'applications et analysez-les.
Conteneurisez les applications.
Évaluez la taille de l'image Docker. Si l'image est trop grande, passez à l'étape 4.
Utilisez le script shell (joint) pour identifier les fichiers volumineux.
Mettez à jour les
appSpecificFiles
listesappExcludedFiles
et duanalysis.json
fichier.
Outils
Outils
AWS App2Container — AWS App2Container (A2C) est un outil en ligne de commande destiné à vous aider à transférer des applications exécutées dans votre centre de données sur site ou sur des machines virtuelles, afin qu'elles s'exécutent dans des conteneurs gérés par Amazon Elastic Container Service (Amazon ECS) ou Amazon Elastic Kubernetes Service (Amazon EKS).
Code
Le script optimizeImage.sh
shell et un analysis.json
fichier d'exemple sont joints.
Le optimizeImage.sh
fichier est un script utilitaire permettant de consulter le contenu du fichier généré par App2Container. ContainerFiles.tar
L'examen identifie les fichiers ou les sous-répertoires volumineux qui peuvent être exclus. Le script est un wrapper pour la commande tar suivante.
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
Dans la commande tar, le script utilise les valeurs suivantes :
| Le chemin vers |
| Le type de fichier correspondant |
| Le répertoire de premier niveau correspondant |
| La profondeur du chemin absolu |
| La taille de chaque fichier |
Le script effectue les opérations suivantes :
Il permet
tar -Ptvf
de lister les fichiers sans les extraire.Il filtre les fichiers par type de fichier, en commençant par le répertoire de premier niveau.
Sur la base de la profondeur, il génère le chemin absolu sous forme d'indice.
Sur la base de l'index et des magasins, il fournit la taille totale du sous-répertoire.
Elle affiche la taille du sous-répertoire.
Vous pouvez également remplacer les valeurs manuellement dans la commande tar.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Découvrez les applications Java locales. | Pour découvrir toutes les applications exécutées sur le serveur d'applications, exécutez la commande suivante.
| AWS DevOps |
Analysez les applications découvertes. | Pour analyser chaque application à l'aide de
| AWS DevOps |
Conteneurisez les applications analysées. | Pour conteneuriser une application, exécutez la commande suivante.
La commande génère l'image Docker ainsi qu'un bundle tar dans l'emplacement de l'espace de travail. Si l'image Docker est trop grande, passez à l'étape suivante. | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Identifiez la taille du fichier tar des artefacts. | Identifiez le
Il s'agit de la taille totale du fichier tar après optimisation. | AWS DevOps |
Répertoriez les sous-répertoires situés sous le répertoire/ainsi que leurs tailles. | Pour identifier les tailles des principaux sous-répertoires du répertoire de
| AWS DevOps |
Identifiez les sous-répertoires volumineux sous le répertoire /. | Pour chaque sous-répertoire principal répertorié dans la commande précédente, identifiez la taille de ses sous-répertoires. Par exemple, utilisez-le
Répétez ce processus pour chaque sous-répertoire répertorié à l'étape précédente (par exemple, | AWS DevOps |
Analysez le dossier volumineux de chaque sous-répertoire du répertoire /. | Pour chaque sous-répertoire répertorié à l'étape précédente, identifiez les dossiers nécessaires à l'exécution de l'application. Par exemple, en utilisant les sous-répertoires de l'étape précédente, listez tous les sous-répertoires du
Pour exclure les sous-répertoires dont l'application n'a pas besoin, ajoutez ces sous-répertoires dans le Un | AWS DevOps |
Identifiez les fichiers nécessaires dans la liste AppExcludes. | Pour chaque sous-répertoire ajouté à la liste AppExcludes, identifiez tous les fichiers de ce sous-répertoire requis par l'application. Dans le fichier analysis.json, ajoutez les fichiers ou sous-répertoires spécifiques dans la section ci-dessous. Par exemple, si le | AWS DevOps |
Tâche | Description | Compétences requises |
---|---|---|
Conteneurisez l'application analysée. | Pour conteneuriser l'application, exécutez la commande suivante.
La commande génère l'image Docker ainsi qu'un bundle tar dans l'emplacement de l'espace de travail. | AWS DevOps |
Identifiez la taille du fichier tar des artefacts. | Identifiez le
Il s'agit de la taille totale du fichier tar après optimisation. | AWS DevOps |
Exécutez l'image Docker. | Pour vérifier que l'image démarre sans erreur, exécutez l'image Docker localement à l'aide des commandes suivantes. Pour identifier Pour faire fonctionner le conteneur, utilisez | AWS DevOps |