As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Otimizar imagens do Docker geradas pelo AWS App2Container
Criado por Varun Sharma (AWS)
Ambiente: PoC ou piloto | Tecnologias: contêineres e microsserviços; Modernização; DevOps | Serviços da AWS: Amazon ECS |
Resumo
O AWS App2Container é uma ferramenta de linha de comando que ajuda a transformar aplicativos existentes executados on-premises ou em máquinas virtuais em contêineres, sem a necessidade de alterações no código.
Com base no tipo de aplicativo, o App2Container adota uma abordagem conservadora para identificar dependências. No modo de processo, todos os arquivos que não são do sistema no servidor de aplicativos são incluídos na imagem do contêiner. Nesses casos, uma imagem bastante grande pode ser gerada.
Esse padrão fornece uma abordagem para otimizar as imagens de contêiner geradas pelo App2Container. É aplicável a todos os aplicativos Java descobertos pelo App2Container no modo de processo. O fluxo de trabalho definido no padrão foi projetado para ser executado no servidor do aplicativo.
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Um aplicativo Java em execução em um servidor de aplicativos em um servidor Linux
App2Container instalado e configurado, com todos os pré-requisitos atendidos, no servidor Linux
Arquitetura
Pilha de tecnologia de origem
Um aplicativo Java em execução em um servidor Linux
Pilha de tecnologias de destino
Uma imagem do Docker gerada pelo App2Container
Fluxo da arquitetura de destino
![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 os aplicativos em execução no servidor de aplicativos e analisar os aplicativos.
Colocar os aplicativos no contêiner.
Avalie o tamanho da imagem do Docker. Se a imagem estiver muito grande, prossiga para a etapa 4.
Use o script de shell (anexado) para identificar arquivos grandes.
Atualize as listas
appExcludedFiles
eappSpecificFiles
no arquivoanalysis.json
e.
Ferramentas
Ferramentas
AWS App2Container: o AWS App2Container (A2C)é uma ferramenta da linha de comando que ajuda você a mover sem alterações (lift-and-shift) os aplicativos executados em seus datacenters on-premises ou em máquinas virtuais, para que eles sejam executados em contêineres gerenciados pelo Amazon Elastic Container Service (Amazon ECS) ou Amazon Elastic Kubernetes Service (Amazon EKS). .
Código
O script de shell optimizeImage.sh
e um arquivo analysis.json
de exemplo estão anexados.
O arquivo optimizeImage.sh
é um script utilitário para revisar o conteúdo do arquivo gerado pelo App2Container,. ContainerFiles.tar
. A análise identifica arquivos ou subdiretórios que são grandes e podem ser excluídos. O script é um invólucro para o seguinte 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
No comando tar, o script usa os seguintes valores:
| O caminho para |
| Tipo de arquivo a ser usado |
| O diretório de nível superior a ser correspondente |
| A profundidade do caminho absoluto |
| O tamanho de cada arquivo |
O script faz o seguinte:
Ele usa
tar -Ptvf
para listar os arquivos sem extraí-los.Ele filtra os arquivos por tipo de arquivo, começando pelo diretório de nível superior.
Com base na profundidade, ele gera o caminho absoluto como um índice.
Com base no índice e nos armazenamentos, ele fornece o tamanho total do subdiretório.
Ele imprime o tamanho do subdiretório.
Você também pode substituir os valores manualmente no comando tar.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Descubra os aplicativos Java locais on-premises. | Para descobrir todos os aplicativos em execução no servidor de aplicativos, execute o comando a seguir.
| AWS DevOps |
Analise os aplicativos descobertos. | Para analisar cada aplicativo usando o
| AWS DevOps |
Coloque os aplicativos analisados em contêineres. | Para armazenar um aplicativo em contêineres, execute o comando a seguir.
O comando gera a imagem do Docker junto com um pacote tar no local do espaço de trabalho. Se a imagem do Docker for muito grande, vá para a próxima etapa. | AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Identifique o tamanho do arquivo tar dos artefatos. | Identifique o arquivo
Esse é o tamanho total do arquivo tar após a otimização. | AWS DevOps |
Liste os subdiretórios no diretório/e seus tamanhos. | Para identificar os tamanhos dos subdiretórios principais sob o diretório de nível superior
| AWS DevOps |
Identifique subdiretórios grandes no diretório /. | Para cada subdiretório principal listado no comando anterior, identifique os tamanhos de seus subdiretórios. Use Por exemplo, use
Repita esse processo para cada subdiretório listado na etapa anterior (por exemplo, | AWS DevOps |
Analise a pasta grande em cada subdiretório sob o diretório /. | Para cada subdiretório listado na etapa anterior, identifique as pastas necessárias para executar o aplicativo. Por exemplo, usando os subdiretórios da etapa anterior, liste todos os subdiretórios no diretório
Para excluir subdiretórios que não são necessários para o aplicativo, no arquivo Um arquivo | AWS DevOps |
Identifique os arquivos necessários na lista AppExcludes. | Para cada subdiretório adicionado à lista AppExcludes, identifique todos os arquivos desse subdiretório que sejam exigidos pelo aplicativo. No arquivo analysis.json, adicione os arquivos ou subdiretórios específicos na seção Por exemplo, se o diretório | AWS DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Coloque em contêineres o aplicativo analisado. | Para conteinerizar o aplicativo, execute o seguinte comando.
O comando gera a imagem do Docker junto com um pacote tar no local do espaço de trabalho. | AWS DevOps |
Identifique o tamanho do arquivo tar dos artefatos. | Identifique o arquivo
Esse é o tamanho total do arquivo tar após a otimização. | AWS DevOps |
Executar a imagem do Docker. | Para verificar se a imagem começa sem erros, execute a imagem do Docker localmente usando os comandos a seguir. Para identificar o Para executar o contêiner, use | AWS DevOps |
Recursos relacionados
Anexos
Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip