DEV Community

Cover image for Kubernetes vs Docker
Diego Dmitry
Diego Dmitry

Posted on

Kubernetes vs Docker

O uso dessas ferramentas não é uma equação ou um ou outro. Vamos detalhar sua origem, finalidade e como usar a ferramenta certa para o trabalho.

Tenha em mente estas definições:

  • Docker Engine é um "contêiner em tempo de execução". Ele sabe como executar e gerenciar contêineres em um único host. Você deve controlar cada host separadamente.
  • Kubernetes (K8s) é uma "plataforma de orquestração de contêineres" de código aberto (também conhecido como orquestrador). Ele sabe como gerenciar contêineres em muitos hosts.

Origem do Docker

Em 2013, Solomon Hykes, CEO da Dotcloud, anunciou o projeto de código aberto Docker. Quando chegou a sua versão 1.0 em 2014.

O conceito de aplicativos em contêineres, é para isolar muitos aplicativos uns dos outros em um único servidor, existe há décadas. Não havia uma ferramenta fácil para usar focada no ciclo de vida completo do aplicativo, até o Docker.
Traditional Servers vs Container Apps
A equipe que criou o Docker pegou ferramentas complexas e as envolveu em uma interface de linha de comando (CLI) que meros mortais, como eu, poderia entender.


O que o Docker Engine tem a ver com o Docker?

Logo após o lançamento do Docker, os fundadores descartaram o Dotcloud e criaram o Docker Inc.

Neste post, vamos focar no projeto original, agora chamado de Docker Engine. É sobre isso que as pessoas geralmente falam quando dizem “Docker” e ao qual vou me referir neste artigo.

Observe que o Docker também faz o Docker Desktop, um pacote de produtos para Windows e Mac. O Docker Desktop é a maneira mais fácil de executar Docker e Kubernetes em sua máquina local para aplicativos de desenvolvimento e teste de servidor. Milhões de pessoas o usam todos os meses, e eu recomendo.


Principais inovações do Docker

  1. Easy Packing -> O Docker pega seu aplicativo e todas as suas dependências de software – menos o kernel do sistema operacional e os drivers de hardware – e os agrupa em um conjunto de tarballs (semelhantes a arquivos zip). O(s) tarball(s) do aplicativo e os metadados são conhecidos juntos como uma imagem de contêiner. Isso agora é considerado a maneira moderna de empacotar aplicativos no servidor.

  2. Fácil execução do aplicativo -> O Docker executa cada contêiner em um sistema de arquivos isolado. Cada contêiner obtém sua própria rede e recursos.

  3. Fácil distribuição de aplicativos -> O Docker criou a ideia de um “registro de imagem de contêiner”, que permite armazenar imagens em um servidor HTTP/S e enviá-las/baixá-las tão facilmente quanto um git commit. O registro mais popular é o Docker Hub e você pode encontrar muitos projetos de código aberto com imagens oficiais.


    Por que precisamos do Kubernetes?

    Você descobrirá que, assim que começar a usar contêineres, desejará usá-los em todos os lugares - e, depois de ter mais do que alguns servidores, começará a desejar uma maneira mais fácil de executar vários contêineres relacionados para seus aplicativos.

Com o Docker, você ainda precisa configurar redes manualmente entre servidores, incluindo políticas de segurança, DNS, armazenamento, balanceadores de carga, backups, monitoramento e muito mais. Quando se trata de dezenas de contêineres relacionados, isso cria tanto trabalho (se não mais) quanto antes dos aplicativos em contêineres.

Esse problema de vários servidores é o que os fundadores do Kubernetes queriam resolver. Eles sabiam que, para tornar os sistemas de contêineres de produção tão fáceis quanto o Docker para uma única máquina, eles precisavam abordar o hardware subjacente e os recursos de rede. O Kubernetes é um sistema de cluster multiservidor de código aberto. Ele orquestra todas as ferramentas necessárias para uma solução do mundo real que hospeda dezenas, centenas ou até milhares de aplicativos.

Assim como o Kubernetes é para um grupo de servidores, o Docker é para um único servidor. É um conjunto de programas e APIs que controlam muitos Docker Engines a partir de uma CLI.

O principal trabalho do Kubernetes é dizer ao Docker o que fazer, mas agora ele fornece um número crescente de tarefas relacionadas. Outros recursos integrados incluem verificações de integridade do contêiner, substituição automática de aplicativos com falha, automatização de configurações de web proxy, gerenciamento de rede, políticas de segurança e até mesmo armazenamento externo de provisionamento automático.
Traditional Servers vs Container Apps


Using Docker with Kubernetes

Agora que você sabe de onde vêm essas ferramentas e quais problemas elas resolvem, a pergunta é: você deve usá-las?

Se você só precisa controlar contêineres em uma única máquina, o Docker é a melhor escolha. Mantenha-o simples para começar e você poderá se tornar um orquestrador mais tarde. Se você precisar executar vários contêineres para seus aplicativos, talvez seja hora de considerar o Kubernetes.

Lembre-se, as ferramentas não são o objetivo final. Independentemente de você escolher Docker, Kubernetes ou servidores em nuvem, lembre-se de que a ferramenta não é o objetivo final. Sempre tenha em mente os objetivos de devops na sua empresa e tente não se distrair com o apelo “brilhante” de ferramentas avançadas, apenas para usar novas tecnologias.

Top comments (0)