paint-brush
Como perder peso com sua imagem Docker?por@infinity
2,203 leituras
2,203 leituras

Como perder peso com sua imagem Docker?

por Rishabh Agarwal4m2024/01/19
Read on Terminal Reader
Read this story w/o Javascript

Muito longo; Para ler

A conteinerização é um processo de implantação de software que agrupa o código de um aplicativo com todos os arquivos e bibliotecas necessários para ser executado em qualquer infraestrutura. Ao otimizar suas imagens Docker, você pode agilizar o ciclo geral de desenvolvimento, mas também reforça as medidas de segurança em vigor, garantindo um ambiente de software mais robusto e eficiente.
featured image - Como perder peso com sua imagem Docker?
Rishabh Agarwal HackerNoon profile picture

Conteinerização ”, disse meu gerente inequivocamente quando lhe perguntei sobre a coisa que mais revolucionou a indústria de desenvolvimento de software. Ele argumentou que sem a conteinerização, o rápido dimensionamento e a implantação global do software atual teriam sido um desafio muito mais formidável. É notável notar que quase todo o software em uso hoje aproveita a conteinerização em diversas capacidades, ressaltando seu papel indispensável na alimentação do ecossistema de software moderno!


Para quem não sabe, aqui está uma definição do site da AWS ~

 *“Containerisation is a software deployment process that bundles an application's code with all the files and libraries it needs to run on any infrastructure. Traditionally, to run any application on your computer, you had to install the version that matched your machine's operating system.”*


As imagens servem como blocos de construção para contêineres, semelhantes a projetos que orientam sua criação. Portanto, manter imagens de contêiner leves e simplificadas acelera o processo de implantação e facilita a distribuição dessas imagens. Ao otimizar suas imagens Docker, você não apenas pode agilizar o ciclo geral de desenvolvimento, mas também reforçar as medidas de segurança em vigor, garantindo um ambiente de software mais robusto e eficiente.


Neste artigo, exploraremos vários métodos para criar imagens Docker eficientes, aumentando, em última análise, a eficiência do seu aplicativo.

Empacote um único aplicativo por contêiner

É um erro comum tratar contêineres como Máquinas Virtuais (VMs) e empacotar mais de um aplicativo dentro de um único contêiner. Embora aumente o tamanho do seu contêiner, essa prática também tem outras desvantagens.


Prevê-se que um contêiner tenha uma vida útil intimamente relacionada ao aplicativo que está executando. O contêiner deve iniciar quando o aplicativo for iniciado e cessar quando o aplicativo terminar. Soluções de orquestração de contêineres, como Docker e Kubernetes, dependem significativamente desse atributo dos contêineres. Se um contêiner estiver executando muitos aplicativos, as ferramentas de orquestração não conseguirão identificar e reiniciar seu aplicativo!

Utilizando caches de forma inteligente

As imagens são compostas de camadas e cada instrução no seu Dockerfile adiciona uma nova camada. As tecnologias de conteinerização, como o Docker, tentarão reutilizar camadas de construções anteriores sempre que possível, a fim de reduzir o tempo de construção. O cache de uma camada só poderá ser usado se nenhuma das camadas subjacentes tiver sido alterada desde as compilações anteriores.


Para aumentar a velocidade de construção de imagens, é benéfico posicionar instruções que podem mudar frequentemente abaixo em seu Dockerfile. Essa abordagem permite que o Docker aproveite seu sistema de cache de forma mais eficaz. Por exemplo, como o código-fonte costuma sofrer alterações frequentes, é aconselhável copiá-lo para a imagem no final do processo.


Cache de imagens ~ https://cloud.google.com/architecture/best-practices-for-building-containers


Embora não torne suas imagens mais claras, faz com que o processo de construção seja mais rápido!

Remova ferramentas desnecessárias

Freqüentemente, as imagens de contêiner incluem ferramentas desnecessárias, causando inchaço da imagem e possíveis vulnerabilidades de segurança. Por exemplo, ferramentas como netcat podem ser exploradas por hackers para realizar atividades maliciosas dentro do seu contêiner, caso obtenham acesso não autorizado.


Manter rigorosamente o conjunto de ferramentas e bibliotecas fornecidas com a imagem do contêiner pode ajudar significativamente na redução das ameaças à segurança e também resultaria em imagens mais finas. Imagens menores são baixadas mais rapidamente, o que significa que o contêiner inicia mais rápido.

Use a menor imagem base

A imagem à qual nos referimos na instrução FROM é chamada de imagem base. A imagem base determina muito o tamanho da imagem final criada. Devemos tentar usar a menor imagem base possível para reduzir o tamanho final da nossa imagem.


Tente usar imagens alpinas sempre que possível, pois elas são menores e geralmente contêm ferramentas suficientes para apoiar atividades de desenvolvimento.


Mesmo quando uma imagem pequena não contém todas as ferramentas necessárias, usá-la ainda pode ser uma opção melhor. A instalação dos pacotes necessários sobre a imagem base mais leve ainda pode proporcionar economia em relação ao uso da imagem mais pesada.

Copie apenas o necessário!

Ao copiar o código-fonte, muitos dos arquivos e pastas indesejados também podem ser copiados. Isso aumenta o tamanho da sua imagem e, em última análise, leva ao inchaço. Tente minimizar a quantidade de arquivos copiados e tente mantê-los no mínimo.


A importância de otimizar imagens de contêineres e estabelecer práticas recomendadas é frequentemente ignorada em nosso setor. No entanto, os benefícios substanciais que surgem da adesão a estas práticas não podem ser exagerados. Como desenvolvedores, é essencial priorizar consistentemente a criação de imagens de contêiner compactas e rápidas.


Com isso chegamos ao final deste artigo. Espero que você tenha gostado de ler!