This is the Trace Id: eae9c79299fa9b70ed9b9fce8486e860
Avançar para o conteúdo principal
Azure

Kubernetes vs. Docker: Qual é a diferença?

Saiba como o Docker e o Kubernetes funcionam, como diferem e quando as equipas usam cada um para criar, implementar e fazer a gestão de aplicações.

O que são Docker e Kubernetes?

O Docker e o Kubernetes são muitas vezes mencionados em conjunto quando as equipas falam sobre desenvolvimento de aplicações, mas não são a mesma coisa. O Docker foca-se na forma como as aplicações são empacotadas e executadas, enquanto o Kubernetes se foca na forma como essas aplicações são geridas depois de estarem em uso, especialmente à medida que os sistemas crescem e se tornam mais complexos.

Principais conclusões

  • O Docker e o Kubernetes resolvem problemas diferentes e são normalmente usados em conjunto, não como tecnologias concorrentes.
  • O Docker foca-se em empacotar e executar aplicações de forma consistente em ambientes de desenvolvimento e produção.
  • O Kubernetes faz a gestão de aplicações em escala, tratando da disponibilidade, da coordenação e da fiabilidade à medida que os sistemas crescem.
  • Os contentores suportam práticas de desenvolvimento modernas, incluindo arquiteturas de microsserviços e fluxos de trabalho DevOps.
  • As organizações usam tecnologias de contentores para criar aplicações nativas de cloud seguras, portáteis e escaláveis.
  • Em conjunto, o Docker e o Kubernetes mostram como as tecnologias de contentores evoluíram do empacotamento de aplicações para uma infraestrutura gerida e escalável.

Kubernetes vs. Docker

As equipas de desenvolvimento criam e executam frequentemente aplicações dentro de contentores. Neste contexto, um contentor é um pacote que inclui uma aplicação juntamente com tudo o que esta precisa para ser executada, como bibliotecas, dependências e ficheiros de configuração. Os contentores ajudam o software a ser executado de forma consistente em ambientes de desenvolvimento, teste e produção, incluindo num servidor na cloud.

O Docker e Kubernetes são duas tecnologias amplamente usadas nesta área. Compreender Docker vs. Kubernetes começa por ver o que cada um foi concebido para fazer.

Qual é a diferença entre o Docker e o Kubernetes?

O Docker e o Kubernetes são ambos usados em ambientes baseados em contentores, mas têm finalidades diferentes.

O Docker centra-se na contentorização. Empacota aplicações e as respetivas dependências em contentores normalizados para que sejam executadas de forma consistente em diferentes ambientes, desde o computador portátil de um programador até à produção. Na sua essência, o Docker opera ao nível da aplicação, criando imagens de contentor e executando esses contentores de forma fiável onde quer que o Docker esteja disponível.

O Kubernetes foi concebido para a orquestração de contentores. Opera ao nível da infraestrutura, fazendo a gestão de como os contentores são implementados, dimensionados e mantidos em clusters de máquinas. O Kubernetes agenda contentores com base nos recursos disponíveis, monitoriza a integridade da aplicação, reinicia contentores com falhas e trata da rede para que as aplicações distribuídas continuem a ser executadas sem problemas.

Em suma, o Docker prepara e executa contentores, enquanto o Kubernetes faz a gestão desses contentores depois de estarem em movimento.

Como as suas responsabilidades são complementares, o Docker e o Kubernetes são frequentemente usados em conjunto. O Docker cria as imagens de contentor e o Kubernetes assume o controlo após a implementação para coordenar e monitorizar esses contentores em diferentes ambientes.

Note que o Kubernetes não está exclusivamente associado ao Docker. Através de uma interface padrão de runtime de contentores, o Kubernetes pode orquestrar contentores criados com outros runtimes compatíveis. Esta flexibilidade permite que o Kubernetes sem Docker faça a gestão de cargas de trabalho contentorizadas, mesmo em ambientes onde o Docker não é usado diretamente.

Benefícios e casos de utilização do Docker e do Kubernetes

Benefícios e casos de utilização do Docker e do Kubernetes

Ao decidir entre Kubernetes, Docker ou ambos, as equipas normalmente consideram fatores como a complexidade da aplicação, a escala da implementação e a quantidade de automatização necessária para fazer a gestão das cargas de trabalho ao longo do tempo. Alguns ambientes beneficiam de uma contentorização simples, enquanto outros requerem orquestração em vários sistemas.

Benefícios do Docker

O Docker centra-se na criação e execução de contentores. Simplifica a forma como as aplicações são empacotadas para que possam ser executadas de forma consistente em ambientes de desenvolvimento, teste e produção. Os principais benefícios incluem:

  • Empacotamento padronizado de aplicações. O Docker empacota uma aplicação e as respetivas dependências numa imagem de contentor. Isto garante que a aplicação funcione da mesma forma, independentemente do local onde for implementada, o que ajuda a reduzir os problemas relacionados com o ambiente durante o desenvolvimento e a implementação.
  • Ambientes locais e de produção consistentes. As equipas de desenvolvimento podem criar e testar aplicações localmente usando as mesmas imagens de contentor que são executadas em produção. Esta consistência ajuda as equipas a identificar problemas mais cedo e a simplificar a passagem de trabalho entre desenvolvimento e operações.
  • Runtime de contentores leve e portátil. Os contentores Docker arrancam rapidamente e usam menos recursos do que as tradicionais máquinas virtuais. Isto torna-os adequados para o desenvolvimento de aplicações em evolução e para iteração rápida.

Estas capacidades ajudam as equipas a criar e a disponibilizar aplicações de forma mais eficiente, simplificando a forma como o software é empacotado e executado.

Casos de utilização do Docker

  • Desenvolvimento e teste de aplicações. As equipas de desenvolvimento usam o Docker para criar ambientes repetíveis para criar e testar software. Isto é comum em fluxos de trabalho ágeis e DevOps onde as alterações frequentes têm de ser validadas rapidamente.
  • Aplicações baseadas em microsserviços. As aplicações divididas em serviços mais pequenos dependem frequentemente do Docker para empacotar cada serviço de forma independente. Isto permite que as equipas desenvolvam, atualizem e implementem componentes sem afetar o sistema inteiro.
  • Pipelines de integração contínua e entrega contínua (CI/CD). Os contentores Docker são normalmente usados em pipelines de integração contínua e entrega contínua. Os sistemas automatizados podem criar imagens de contentor, executar testes e preparar aplicações para implementação de forma consistente e repetível.

Benefícios do Kubernetes

O Kubernetes faz a gestão de contentores depois de estes serem implementados, especialmente em várias máquinas. Adiciona automatização que ajuda a manter a disponibilidade e a fiabilidade da aplicação em ambientes distribuídos. Os principais benefícios incluem:

  • Dimensionamento automático com base na procura da aplicação. O Kubernetes monitoriza cargas de trabalho e ajusta o número de contentores em execução à medida que a procura muda. Isto ajuda a manter o desempenho durante picos de tráfego, sem intervenção manual.
  • Autorrecuperação através da substituição de contentores. Quando um contentor falha ou deixa de responder, o Kubernetes deteta o problema e substitui-o automaticamente. Esta monitorização contínua ajuda a manter as aplicações disponíveis mesmo quando componentes individuais falham.
  • Implementações por fases para atualizações controladas. O Kubernetes introduz atualizações gradualmente, substituindo contentores numa sequência definida. Isto reduz o tempo de inatividade e dá suporte à entrega contínua sem interromper cargas de trabalho ativas.

Estas capacidades ajudam a manter as aplicações a funcionar sem problemas à medida que as cargas de trabalho aumentam ou mudam na infraestrutura.

Casos de utilização do Kubernetes

  • Aplicações distribuídas com vários serviços. As aplicações compostas por muitos componentes interligados requerem coordenação entre sistemas. Por exemplo, uma plataforma de comércio eletrónico pode executar contentores separados para pagamentos, inventário e contas de clientes. O Kubernetes faz a gestão da comunicação e da implementação entre estes serviços.
  • Sistemas de produção que requerem elevada disponibilidade. As aplicações que suportam a atividade em tempo real dos utilizadores dependem da automatização para minimizar o tempo de inatividade. Plataformas de streaming, serviços financeiros e ferramentas de colaboração recorrem frequentemente ao Kubernetes para monitorizar cargas de trabalho e responder a falhas.
  • Cargas de trabalho com padrões de tráfego imprevisíveis. As aplicações com utilização variável beneficiam de escalonamento automatizado. Os sites de retalho durante saldos sazonais ou as plataformas de bilhética durante o lançamento de eventos usam frequentemente o Kubernetes para ajustar recursos à medida que a procura muda.

O Kubernetes também pode orquestrar contentores sem depender diretamente do Docker. Ao suportar vários runtimes de contentores, o Kubernetes pode fazer a gestão de cargas de trabalho contentorizadas criadas com tecnologias compatíveis.

Utilizar o Docker e o Kubernetes em conjunto

O Docker e o Kubernetes são frequentemente usados em conjunto quando as aplicações ultrapassam implementações de um único contentor e requerem gestão coordenada entre ambientes.

Em pipelines de CI/CD, o Docker fornece contentores portáteis que empacotam o código da aplicação e as respetivas dependências em ambientes de runtime consistentes. Depois, o Kubernetes faz a gestão desses contentores durante a implementação, ao agendar cargas de trabalho pela infraestrutura disponível e ao monitorizar o respetivo desempenho.

As aplicações nativas da nuvem também dependem de ambas as tecnologias a funcionar em conjunto. O Docker empacota componentes da aplicação em contentores, enquanto o Kubernetes orquestra esses contentores em clusters para manter a disponibilidade e dar suporte ao escalonamento à medida que a procura muda.

Em arquiteturas distribuídas que envolvem vários contentores a correr em vários sistemas, a gestão automatizada torna-se essencial. O Docker prepara cargas de trabalho contentorizadas para implementação, e o Kubernetes faz a gestão de como essas cargas de trabalho são executadas, comunicam e recuperam de falhas na infraestrutura.

Em conjunto, o Kubernetes e o Docker dão suporte à gestão coordenada de contentores ao longo de todo o ciclo de vida da aplicação.

Como as tecnologias de contentorização estão a evoluir

O Docker e o Kubernetes dão suporte a fases diferentes, mas interligadas, do ciclo de vida dos contentores, e é por isso que são frequentemente usados em conjunto nas arquiteturas de aplicações atuais.

O Docker centra-se no empacotamento de aplicações e das respetivas dependências em contentores portáteis que funcionam de forma consistente entre ambientes. O Kubernetes assenta nessa base ao fazer a gestão de contentores em escala, coordenando como são implementados, ligados em rede, monitorizados e recuperados em sistemas distribuídos.

Esta combinação reflete mudanças mais amplas na forma como as aplicações são concebidas e operadas. As arquiteturas nativas da nuvem dependem cada vez mais de microserviços, pipelines de implementação automatizados e infraestrutura que se pode adaptar à procura em mudança.

À medida que as organizações adotam estratégias híbridas e multicloud, o empacotamento de contentores proporciona consistência, enquanto as plataformas de orquestração dão flexibilidade entre ambientes. O Kubernetes expandiu-se para além de um único runtime de contentores, permitindo que as equipas orquestrem cargas de trabalho contentorizadas com padrões abertos, em vez de ficarem limitadas a uma única abordagem de ferramentas.

Estas tendências moldaram a forma como plataformas cloud suportam a entrega de aplicações baseadas em contentores. Por exemplo, Microsoft Azure fornece serviços geridos que se alinham com diferentes níveis de maturidade de contentores. Azure Kubernetes Service (AKS) oferece clusters Kubernetes geridos, permitindo que as equipas se concentrem na implementação e operação de aplicações sem fazer a gestão da infraestrutura subjacente. Para cenários em que não é necessária orquestração completa, Azure Container Apps suporta a execução de aplicações contentorizadas com escalonamento e gestão incorporados, abstraindo grande parte da complexidade operacional.

Em conjunto, o Docker e o Kubernetes ilustram como as tecnologias de contentores evoluíram de um simples empacotamento de aplicações para uma gestão de infraestrutura em grande escala. À medida que as arquiteturas distribuídas se tornam mais comuns, as plataformas de orquestração e os serviços cloud geridos desempenham um papel cada vez mais central no suporte de sistemas baseados em contentores fiáveis e escaláveis.

imagem de fundo em gradiente
Recursos

Explore recursos para programadores

Saiba mais sobre a tecnologia mais recente para programadores com uma vasta gama de recursos para estudantes e profissionais.
mulher sentada em frente a três monitores que exibem código de software
Recursos do Azure

Visitar o centro de recursos do Azure

Encontre formação e programas de certificação gratuitos do Azure, vídeos de instruções sobre o Azure, e relatórios de analistas e e-books.
homem a usar portátil num escritório em casa
Recursos para programadores estudantes

Impulsionar a sua carreira na área tecnológica

Aprenda sobre tecnologias da cloud e desenvolva as suas competências de programador com ferramentas e programas para estudantes.
Grupo de pessoas a usar computadores portáteis e a olhar para uma apresentação numa sala de conferências
Eventos do Azure

Explorar eventos e webinars do Azure

Comunique com especialistas e programadores do Azure em eventos digitais e presenciais e formações virtuais.
FAQ

Perguntas frequentes

  • Docker e Kubernetes desempenham funções diferentes, mas complementares. O Docker foca-se na forma como as aplicações são empacotadas e executadas, enquanto o Kubernetes se foca na forma como essas aplicações são geridas após a implementação, especialmente à medida que os sistemas se tornam mais complexos. Em resumo, o Docker prepara as aplicações para serem executadas de forma consistente, e o Kubernetes faz a gestão delas em escala em vários ambientes.
  • O Docker e o Kubernetes não são tecnologias concorrentes, e a maioria das equipas não escolhe uma em vez da outra. O Docker é muitas vezes usado mais cedo no ciclo de vida da aplicação para empacotar e executar aplicações, enquanto o Kubernetes é usado mais tarde para fazer a gestão dessas aplicações em produção. A escolha certa depende da complexidade, da escala e das necessidades operacionais da aplicação.
  • O Kubernetes não substitui o Docker porque desempenham funções diferentes. O Kubernetes foi concebido para orquestrar contentores após a implementação, não para empacotar ou criar aplicações. Embora o Kubernetes possa fazer a gestão de contentores criados com diferentes runtimes, ferramentas como o Docker continuam a ser frequentemente usadas para preparar imagens de contentor durante os fluxos de trabalho de desenvolvimento e entrega.
  • Sim, pode usar o Docker sem o Kubernetes, especialmente em ambientes mais simples. As equipas utilizam muitas vezes o Docker em exclusivo para desenvolvimento de aplicações, testes ou implementações mais pequenas, em que a orquestração completa não é necessária. Nestes casos, o Docker oferece uma forma simples de empacotar e executar aplicações sem a complexidade adicional de fazer a gestão de um cluster do Kubernetes.