Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Ottimizza le immagini Docker generate da AWS App2Container
Creato da Varun Sharma (AWS)
Ambiente: PoC o pilota | Tecnologie: contenitori e microservizi; Modernizzazione; DevOps | Servizi AWS: Amazon ECS |
Riepilogo
AWS App2Container è uno strumento a riga di comando che aiuta a trasformare le applicazioni esistenti in esecuzione in locale o su macchine virtuali in contenitori, senza bisogno di modifiche al codice.
In base al tipo di applicazione, App2Container adotta un approccio conservativo per identificare le dipendenze. In modalità processo, tutti i file non di sistema sul server delle applicazioni sono inclusi nell'immagine del contenitore. In questi casi, potrebbe essere generata un'immagine abbastanza grande.
Questo modello fornisce un approccio per ottimizzare le immagini dei contenitori generate da App2Container. È applicabile a tutte le applicazioni Java scoperte da App2Container in modalità processo. Il flusso di lavoro definito nel modello è progettato per essere eseguito sul server delle applicazioni.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo
Un'applicazione Java in esecuzione su un server di applicazioni su un server Linux
App2Container è installato e configurato, con tutti i prerequisiti soddisfatti, sul server Linux
Architettura
Stack tecnologico di origine
Un'applicazione Java in esecuzione su un server Linux
Stack tecnologico Target
Un'immagine Docker generata da App2Container
Flusso dell'architettura Target
![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)
Scopri le applicazioni in esecuzione sul server delle applicazioni e analizza le applicazioni.
Containerizza le applicazioni.
Valuta la dimensione dell'immagine Docker. Se l'immagine è troppo grande, continua con il passaggio 4.
Utilizzate lo script di shell (allegato) per identificare file di grandi dimensioni.
Aggiorna gli
appSpecificFiles
elenchiappExcludedFiles
and nelanalysis.json
file.
Strumenti
Strumenti
AWS App2Container — AWS App2Container (A2C) è uno strumento a riga di comando che consente di eseguire applicazioni eseguite nel data center locale o su macchine virtuali, in modo che vengano eseguite in contenitori gestiti da Amazon Elastic Container Service (Amazon ECS) o Amazon Elastic Kubernetes Service (Amazon EKS).
Codice
Lo optimizeImage.sh
script di shell e un file di esempio sono allegati. analysis.json
Il optimizeImage.sh
file è uno script di utilità per la revisione del contenuto del file generato da App2Container,. ContainerFiles.tar
La revisione identifica file o sottodirectory di grandi dimensioni che possono essere esclusi. Lo script è un wrapper per il seguente 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
Nel comando tar, lo script utilizza i seguenti valori:
| Il percorso verso |
| Il tipo di file da abbinare |
| La directory di primo livello da abbinare |
| La profondità del percorso assoluto |
| La dimensione di ogni file |
Lo script svolge le seguenti funzioni:
Viene utilizzato
tar -Ptvf
per elencare i file senza estrarli.Filtra i file per tipo di file, a partire dalla directory di primo livello.
In base alla profondità, genera il percorso assoluto come indice.
In base all'indice e agli archivi, fornisce la dimensione totale della sottodirectory.
Stampa la dimensione della sottodirectory.
Puoi anche sostituire i valori manualmente nel comando tar.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Scopri le applicazioni Java locali. | Per scoprire tutte le applicazioni in esecuzione sul server delle applicazioni, esegui il comando seguente.
| AWS DevOps |
Analizza le applicazioni scoperte. | Per analizzare ogni applicazione utilizzando
| AWS DevOps |
Containerizza le applicazioni analizzate. | Per containerizzare un'applicazione, esegui il comando seguente.
Il comando genera l'immagine Docker insieme a un pacchetto tar nella posizione dell'area di lavoro. Se l'immagine Docker è troppo grande, procedi al passaggio successivo. | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Identifica la dimensione del file tar di Artifacts. | Identifica il
Questa è la dimensione totale del file tar dopo l'ottimizzazione. | AWS DevOps |
Elenca le sottodirectory nella cartella/e le relative dimensioni. | Per identificare le dimensioni delle principali sottodirectory nella directory di
| AWS DevOps |
Identifica le sottodirectory di grandi dimensioni nella cartella/. | Per ogni sottodirectory principale elencata nel comando precedente, identificate le dimensioni delle relative sottodirectory. Si usa Ad esempio, utilizzare
Ripetete questo processo per ogni sottodirectory elencata nel passaggio precedente (ad esempio, | AWS DevOps |
Analizza la cartella di grandi dimensioni in ogni sottodirectory nella directory /. | Per ogni sottodirectory elencata nel passaggio precedente, identificate le cartelle necessarie per eseguire l'applicazione. Ad esempio, utilizzando le sottodirectory del passaggio precedente, elencate tutte le sottodirectory della directory e le
Per escludere le sottodirectory che non sono necessarie all'applicazione, aggiungete tali sottodirectory nel Viene allegato un file di esempio | AWS DevOps |
Identifica i file necessari dall'elenco AppExcludes. | Per ogni sottodirectory aggiunta all'elenco AppExcludes, identifica tutti i file in quella sottodirectory richiesti dall'applicazione. Nel file analysis.json, aggiungi i file o le sottodirectory specifici nella sezione sottostante. Ad esempio, se la | AWS DevOps |
Attività | Descrizione | Competenze richieste |
---|---|---|
Containerizza l'applicazione analizzata. | Per containerizzare l'applicazione, esegui il comando seguente.
Il comando genera l'immagine Docker insieme a un pacchetto tar nella posizione dell'area di lavoro. | AWS DevOps |
Identifica la dimensione del file tar di Artifacts. | Identifica il
Questa è la dimensione totale del file tar dopo l'ottimizzazione. | AWS DevOps |
Esegui l'immagine Docker. | Per verificare che l'immagine si avvii senza errori, esegui l'immagine Docker localmente usando i seguenti comandi. Per identificare Per far funzionare il contenitore, usa | AWS DevOps |