Os containers são responsáveis por isolar o software de seu ambiente hospedeiro e assim garantir que ele funcione de maneira uniforme, independentemente de quaisquer configurações personalizadas que uma máquina possa ter, mesmo que haja diferença nos ambientes de desenvolvimento e teste de software com ambiente de produção.
Pode se dizer que o Docker foi a tecnologia responsável por alavancar esse conceito de computação em containers e repercutir de forma muito positiva sua utilização para os novos ambientes de TI, sendo único para sua finalidade, pois se concentra em separar as dependências dos aplicativos com a infraestrutura em si, atendendo aos requisitos tanto dos desenvolvedores (Devs), quantos dos operadores (Ops), se tornando a principal ferramenta do mercado para adoção e operação de containers, sendo disponibilizado de forma open source.
Com a grande adoção do Docker pelas empresas, muitos containers passaram a existir em uma mesmo ambiente e gerenciar esses ambientes passou a ser uma tarefa complexa, passando a ser necessário uma ferramenta que pudesse gerenciar esses containers, assim surgiu os “orquestradores”, que passaram a administrar todo o ciclo de vida dos containers de forma automatizada.
Os orquestradores vieram para resolver muitos problemas que o Docker sozinho não conseguia lidar, como escalabilidade automática, balanceamento de carga, comunicação entre containers, exposição de aplicações e serviços, etc. Atualmente existem diversas ferramentas para esta função, onde podemos destacar o Kubernetes (desenvolvido pelo Google) e o Openshift (desenvolvido pela RedHat), porém ambos são disponibilizados de forma Open Source.
O Kubernetes é uma plataforma portátil e extensível de código aberto para gerenciamento de cargas de trabalho e serviços containerizados, que facilita tanto a configuração declarativa quanto a automação de processo, fornecendo um ambiente de gerenciamento centrado em containers, orquestrando toda a infraestrutura de computação, rede e armazenamento em nome das cargas de trabalho dos usuários, permitindo que os componentes possam ser reiniciados e movidos entre os nós do cluster, conforme necessário, pois foi projetado para ser tolerante a falhas. Isso fornece grande parte da simplicidade da Plataforma como Serviço (PaaS) com a flexibilidade da Infraestrutura como Serviço (IaaS) e permite a portabilidade entre os provedores de infraestrutura em Cloud.
Pode-se dizer que “acima” do Kubernetes, temos o Openshift que possui um “self-service” de componentes, onde podem ser selecionado a gosto de cliente, tendo soluções internas de registry, DNS, build de imagens a partir de código fonte e uma preocupação latente com a padronização de itens importantes como: monitoramento, segurança, logs, integração contínua, etc.