Contêineres
Contêineres
Contêineres são pacotes leves e independentes que incluem tudo o que é necessário para executar uma aplicação: código, runtime, ferramentas de sistema, bibliotecas e configurações. Diferentemente de máquinas virtuais que virtualizam hardware, contêineres virtualizam o sistema operacional, compartilhando o kernel do host enquanto isolam os processos da aplicação. Isso os torna muito mais eficientes e mais rápidos para iniciar.

Docker é a plataforma de contêineres mais conhecida. Popularizou a conteinerização tornando-a acessível e fácil de usar. O Docker fornece ferramentas para construir imagens de contêiner (Dockerfile), executar contêineres e gerenciá-los. Embora "Docker" frequentemente se refira à plataforma inteira, o Docker Engine é o runtime real que executa os contêineres. O Docker também inclui o Docker Compose para definir aplicações com vários contêineres e o Docker Swarm para orquestração básica.
containerd é um runtime de contêineres core padrão da indústria que na verdade alimenta o Docker (o Docker o utiliza por baixo do capô). Ele gerencia o ciclo de vida completo do contêiner - transferência de imagens, armazenamento, execução e rede. Muitas implantações de Kubernetes usam containerd diretamente em vez de passar pelo Docker.
CRI-O é um runtime de contêineres leve construído especificamente para Kubernetes. Ele implementa a Container Runtime Interface (CRI) do Kubernetes e é projetado para ser um runtime mínimo para o Kubernetes sem recursos extras.
Podman é um motor de contêineres sem daemon compatível com os comandos do Docker, mas que não exige um serviço em segundo plano rodando com privilégios de root. É popular em ambientes preocupados com segurança e em sistemas Red Hat/Fedora.
LXC/LXD (Linux Containers) é uma tecnologia de contêineres mais antiga que fornece virtualização em nível de SO. Contêineres LXC são mais parecidos com VMs leves, executando um sistema Linux completo, enquanto contêineres Docker tipicamente executam aplicações únicas.

Kubernetes (K8s) é a plataforma dominante de orquestração de contêineres. Ele próprio não executa contêineres, mas gerencia runtimes de contêiner, automatizando implantação, escalonamento, rede e gerenciamento de aplicações conteinerizadas através de clusters de máquinas. O Kubernetes introduz conceitos como pods (grupos de contêineres), serviços, deployments e namespaces para gerenciar aplicações complexas.
Docker Swarm é a ferramenta de orquestração nativa do Docker, mais simples que o Kubernetes, mas com menos recursos. É mais fácil de configurar, mas em grande parte foi ofuscado pelo Kubernetes.
Apache Mesos com Marathon foi uma das primeiras plataformas de orquestração de contêineres, embora seja menos comum hoje. Pode orquestrar tanto contêineres quanto outras cargas de trabalho.
Nomad da HashiCorp é uma alternativa mais simples ao Kubernetes que pode orquestrar contêineres, VMs e aplicações independentes.
Amazon ECS/EKS, Azure Container Instances, Google Kubernetes Engine são serviços gerenciados de contêineres específicos de nuvem que lidam com grande parte da complexidade da infraestrutura.

Contêineres Windows permitem a conteinerização de aplicações Windows, embora sejam menos comuns que contêineres Linux. Eles existem em dois tipos: Windows Server Containers (isolamento por processo) e Hyper-V Containers (isolamento mais forte).
Contêineres Serverless como AWS Fargate, Azure Container Instances e Google Cloud Run permitem executar contêineres sem gerenciar a infraestrutura subjacente — você apenas fornece a imagem do contêiner.
O ecossistema em grande parte convergiu em torno dos padrões OCI (Open Container Initiative), o que significa que a maioria das ferramentas é interoperável. Docker continua sendo o mais popular para desenvolvimento, containerd para runtimes de produção e Kubernetes para orquestração em escala.
Atualizado
Isto foi útil?
