Os aplicativos conteinerizados são executados em pacotes isolados de código chamados contêineres. Os contêineres incluem todas as dependências que um aplicativo pode precisar executar em qualquer sistema operacional host, como bibliotecas, binários, arquivos de configuração e frameworks, em um único executável leve.
O processo de conteinerização de aplicativos torna o desenvolvimento de aplicativos mais rápido, mais eficiente e seguro, separando funcionalidades diferentes de dependências de hardware e outros softwares. Os contêineres podem ser executados em qualquer sistema operacional host e são isolados de outros objetos de software e hardware, o que os torna ferramentas versáteis para criar aplicativos que podem ser criados uma vez e executados em qualquer lugar.
Da Pesquisa Google ao YouTube e Gmail, tudo é executado em contêineres no Google. As plataformas de código aberto Kubernetes e Knative foram desenvolvidas no Google e são algumas das ferramentas mais usadas para gerenciar contêineres e aplicativos.
Isolamento
Como cada aplicativo conteinerizado existe em um ambiente isolado de outros apps e componentes do sistema, as falhas dentro do aplicativo não vão afetar outros aplicativos ou o sistema local, o que pode limitar o escopo do incidentes de bug.
Portabilidade
Os aplicativos conteinerizados operam independentemente do sistema operacional e, assim, podem ser transferidos para praticamente qualquer ambiente, como servidores físicos, máquinas virtuais, ou na máquina pessoal de um desenvolvedor ou na nuvem.
Leve
Ao contrário das máquinas virtuais, os contêineres não carregam uma versão do sistema operacional, o que os torna mais leves e eficientes do que outros métodos de virtualização.
Eficiência
Os aplicativos de conteinerização podem compartilhar o kernel e os recursos de computação de uma máquina, e as camadas de aplicativo em um contêiner podem ser compartilhadas por vários contêineres. Portanto, os aplicativos conteinerizados exigem menos recursos, permitindo que vários contêineres sejam executados na mesma máquina ou ambiente virtual.
Escalonabilidade
Outras instâncias de contêiner podem ser adicionadas rapidamente para lidar com o aumento das cargas de aplicativos.
Os aplicativos conteinerizados executam um pacote executável de software (o contêiner) que inclui todas as dependências necessárias para que o aplicativo seja executado em um sistema operacional host. O aplicativo conteinerizado tem vários objetos, incluindo todos os componentes de app (por exemplo, frameworks, bibliotecas) que compõem a imagem do contêiner, que é executada pelo mecanismo do contêiner. A imagem do contêiner é o projeto ou a arquitetura do sistema do contêiner. Quando o aplicativo é executado, o conteúdo da imagem é copiado para uma instância de contêiner e usado em qualquer número de contêineres do aplicativo. As imagens de contêiner são criadas em um padrão do setor chamado Iniciativa de contêiner aberto (OCI, na sigla em inglês), que ajuda o compartilhamento e a compatibilidade de contêineres.
Os contêineres são o ambiente de execução para o contêiner e são a plataforma em que os aplicativos conteinerizados são executados. Os contêineres aceitam os comandos para criar, gerenciar e iniciar contêineres por meio de ferramentas de cliente. Os mecanismos de contêiner mais conhecidos são as ferramentas como Docker ou CRI-O.
As ferramentas de orquestração são usadas para gerenciar aplicativos conteinerizados, principalmente em ambientes com muitos contêineres. Ferramentas de orquestração, como Kubernetes, implantar, gerenciar e escalonar contêineres
Os contêineres e máquinas virtuais têm função semelhante, mas tendem a usar menos recursos e são mais flexíveis.
As máquinas virtuais permitem que vários aplicativos e sistemas operacionais compartilhem os recursos de um único computador ou servidor físico e sejam executados simultaneamente (por exemplo, o Windows e o Linux compartilham o mesmo computador). Uma máquina virtual carrega os arquivos e as dependências, bem como a própria cópia do sistema operacional.
Os contêineres não carregam uma cópia do sistema operacional como as máquinas virtuais. Por isso, a principal diferença entre contêineres e máquinas virtuais é que a conteinerização usa os recursos de computação com mais eficiência. O tempo de execução do contêiner é instalado no sistema operacional do computador ou servidor, permitindo que todos os contêineres compartilhem o mesmo sistema operacional.
No nível mais básico, os contêineres vêm em dois tipos: contêineres do sistema e contêineres de aplicativo.
Os contêineres de aplicativos são soluções sem estado que normalmente executam um único processo. Quando falamos sobre aplicativos conteinerizados, eles executam contêineres de aplicativos, em que cada contêiner lida com um processo, com vários contêineres orquestrados por uma ferramenta como o Kubernetes.
Há muitos contêineres de aplicativos no mercado. O Docker é considerado o mais famosos, embora existam vários outros. O desenvolvimento de código aberto de contêineres é gerenciado pela OCI.
Os contêineres do sistema, também conhecidos como contêineres do sistema operacional, são mais antigos e funcionam como máquinas virtuais, mas sem o mesmo overhead de computação. Ele se comporta como um sistema independente e não inclui a imagem do contêiner nem exige software especializado. Os contêineres do sistema normalmente eram usados em aplicativos legados monolíticos.
Conheça abaixo alguns mecanismos comuns e tipos de ferramentas de aplicativos conteinerizados:
A plataforma de código aberto mais conhecida para conteinerização. O Docker permite a criação e a operação de contêineres baseados em Linux.
O projeto de código aberto LinuxContainers.org, LXC, permite que um app execute vários sistemas Linux simultaneamente, usando um único kernel do Linux como o sistema operacional.
Também conhecido como Rocket, o rkt é um mecanismo de contêiner baseado em aplicativo que permite controle detalhado de contêineres ou componentes específicos em um sistema de contêineres do Docker.
Uma interface de tempo de execução de contêiner (CRI, na sigla em inglês) para a plataforma de gerenciamento de contêineres Kubernetes, usada para ativar os tempos de execução compatíveis com OCI. Muitas vezes usado como um substituto do Docker ao usar o Kubernetes.
Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.