Entender o Kubernetes vs. Docker é um dos tópicos mais importantes em nuvem nativa e DevOps. Embora o Kubernetes e o Docker certamente pertençam a uma conversa juntos, a verdade é que eles não devem necessariamente ser comparados um com o outro. Na verdade, Kubernetes e Docker não estão na concorrência direta entre si. Em vez disso, considere-as como duas tecnologias que podem complementar e trabalhar uma com a outra.
Como você sabe qual dessas circunstâncias pode estar enfrentando? Para chegar lá, é importante primeiro entender as áreas específicas que o Kubernetes e o Docker se sobrepõem e contrastam.
O Docker é uma plataforma de código aberto para contêineres de aplicações. Se o conceito é novo para você, um contêiner é um formato de empacotamento independente que coloca todo o código e dependências necessários em um formato executável. Para usar uma analogia do mundo real, um contêiner é como um pacote da IKEA com todas as peças, suportes e parafusos da mesa (e chave sextavada, é claro) - mas além de conter todas as peças, ele constrói a mesa para você quando você executa o contêiner.
O Docker é geralmente usado por desenvolvedores de aplicações devido ao seu formato leve e padronizado. Essas características permitem que os desenvolvedores criem, testem e implementem com flexibilidade e escalabilidade.
O Docker também tem outro significado no setor de TI - existe uma empresa real chamada Docker, Inc. A empresa desenvolve ferramentas para trabalhar dentro da plataforma. Essa diferença é importante notar, dado o nome sobreposto.
Se o Docker for um único contêiner, o Kubernetes será uma ferramenta para gerenciar muitos contêineres de uma vez. Como o Docker (a plataforma, não a empresa), o Kubernetes é uma plataforma de código aberto, embora seja gerenciada pela Cloud Native Computing Foundation como um projeto com mais de 2.300 colaboradores. O Kubernetes funciona como um sistema operacional para a nuvem, agilizando e simplificando o gerenciamento em máquinas virtuais e nuvens para que os departamentos de TI possam lidar com coisas em escala.
Do que o Kubernetes é capaz? O Kubernetes funciona de forma semelhante a qualquer tipo de gerenciamento de sistema encontrado em um sistema local, apenas na escala de um contêiner. As provisões, atualizações, programações, exclusões e monitoramento geral de integridade estão todas ao alcance do Kubernetes. Para voltar à analogia da IKEA, se um contêiner for uma única mesa, o Kubernetes é como o gerente de instalações que permite encomendar, distribuir e verificar o status de mesas, cadeiras e outros móveis embalados no armazém da IKEA.
Uma parte ausente em qualquer discussão do Docker e do Kubernetes é a definição de tempos de execução de contêiner. O que é um tempo de execução de contêiner? Em suma, é o motor que opera o contêiner - voltando à analogia da IKEA, os tempos de execução do contêiner são as instruções de montagem dentro da caixa. Em alguns casos, isso é simples, e o gerenciamento de execução é tratado no que é conhecido como tempo de execução de contêiner de baixo nível. Para situações mais complexas, os tempos de execução de contêiner de alto nível fornecem direção para a integração da API, formatos de imagem e gerenciamento de imagem. Em alguns casos, o termo pode ser usado de forma intercambiável com o Docker, embora haja um pouco mais de nuance do que isso.
O Kubernetes executa uma API conhecida como Container Runtime Interface (CRI). Isso faz interface com cada tempo de execução do contêiner para executar o pacote. Mais uma vez, usando a analogia IKEA, o CRI do Kubernetes é a pessoa que lê a instrução de montagem (tempo de execução do contêiner) dentro do pacote (contêiner).
Outros tempos de execução de contêiner existem além do Docker. Dois outros populares são:
Containerd: Containerd iniciado como parte do projeto do Docker. No entanto, o objetivo era tornar o Docker mais flexível e modular, de modo que os desenvolvedores optaram por separar o Containerd em seu próprio projeto. O Containerd lida com necessidades de tempo de execução de contêiner de alto nível, como extrair imagens de registros, gerenciamento de imagens e integração com tempos de execução de baixo nível para executar o processo de contêiner
CRI-O: CRI-O é outra alternativa de tempo de execução de contêiner de código aberto para o Docker. Ele implementa o Kubernetes Container Runtime Interface (CRI) para permitir tempos de execução compatíveis com o padrão Open Container Initiative.
Tanto CRI-O quanto Containerd usam as especificações fornecidas pelo CRI, tornando-as totalmente compatíveis com o Kubernetes.
Docker vs. Kubernetes” é frequentemente discutido, mas a verdade é que os dois não estão em competição direta um com o outro. A analogia do IKEA usada neste artigo mostra como eles estão relacionados e por que são essenciais para executar o gerenciamento de TI moderno, mas não são concorrentes de forma alguma. Em vez disso, eles fazem parte do ecossistema nativo da nuvem. Os contêineres Docker fazem parte do que o Kubernetes gerencia e o benefício do Kubernetes é a capacidade de dimensionar facilmente o volume de contêineres Docker.
Dessa forma, a pergunta não é "escolho o Docker ou o Kubernetes?" Em vez disso, a principal consideração dos diretores de TI é como eles usarão o Kubernetes e o Docker juntos em termos de gerenciamento e operações.
Kubernetes e Docker são criados para funcionarem juntos. Embora não seja necessário usar o Kubernetes para gerenciar uma implementação do Docker, eles são um conjunto eficaz em situações nas quais várias instâncias de implementações devem ser gerenciadas. Isso ocorre especialmente em situações em que várias implementações da mesma aplicação são usadas, bem como quando o dimensionamento é necessário. A natureza de código-fonte aberto do sistema de orquestração do Kubernetes garante uma plataforma continuamente suportada que gerencie complexidades entre vários servidores.
No Kubernetes, vários pacotes do Docker podem ser implementados e gerenciados, por meio de recursos como processamento em lote de patches e atualizações e monitoramento em escala de problemas, tudo isso sem deixar de tratar solicitações sob demanda. Com o Kubernetes, os departamentos de TI podem:
A Oracle Cloud Infrastructure oferece diversos serviços para acelerar e criar aplicações modernas nativas da nuvem. Especificamente, o Container Engine for Kubernetes e o Registro de Contêiner - que gerenciam e analisam imagens do Docker - são ferramentas robustas e gratuitas (incluídas) que simplificam o gerenciamento e aumentam o desempenho. Veja você mesmo experimentando a Oracle Cloud gratuitamente para acessar o Kubernetes.
Após o fechamento do Parque Arqueológico de Pompeia, na Itália, em março de 2020, quaisquer planos de reabertura exigiram uma medida de gerenciamento e controle para garantir o distanciamento social. Planos formados para permitir que os turistas acessem o novo aplicativo MyPompeii com diversos produtos Oracle selecionados para agilizar uma solução móvel nativa da nuvem, incluindo Oracle Container Engine for Kubernetes e Oracle Container Registry.
O Snap Vision baseado em Londres fornece tecnologia de pesquisa visual alimentada por inteligência artificial para ajudar os compradores a descobrir as roupas que eles adoram. Como a COVID-19 forçou o encerramento de compras nas lojas por períodos significativos, a tecnologia da Snap Vision foi oferecida aos varejistas do Reino Unido para ajudar a criar uma experiência de compra digital. O dimensionamento foi um desafio significativo, embora a Snap Vision tenha sido capaz de hospedar novos ambientes de varejistas a um custo baixo, graças à Oracle Cloud Infrastructure com Kubernetes.