Docker x Kubernetes
O Docker e o Kubernetes são tecnologias fundamentais no ecossistema de containers, mas com propósitos distintos e complementares.
O Docker é uma plataforma voltada à criação, empacotamento e execução de aplicações em containers. Ele permite reunir o software e todas as suas dependências em uma imagem padronizada, garantindo que o aplicativo funcione da mesma forma em qualquer ambiente. Essa portabilidade e isolamento simplificam o desenvolvimento, os testes e a implantação, reduzindo conflitos de configuração e aumentando a eficiência operacional.
Exemplo com Docker (Flask em Python)
Suponha uma aplicação web em Python (Flask). Com o Docker, criamos um Dockerfile:
FROM python:3.12
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
Depois, executamos:
docker build -t minhaapp .
docker run -d -p 8080:80 minhaapp
Essas instruções criam a imagem e executam um container com a aplicação. O Docker garante que ela funcione da mesma forma em qualquer máquina, ideal para testes locais e ambientes menores.
Já o Kubernetes atua como um orquestrador de containers, gerenciando automaticamente múltiplos containers em diferentes servidores: distribui cargas, escala horizontalmente, reinicia containers com falhas e facilita rolling updates. Em cenários complexos e de grande escala, ele assegura disponibilidade, resiliência e automação.
Exemplo com Kubernetes (Deployment)
Quando a aplicação precisa rodar em vários servidores para atender mais usuários, criamos um deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: minhaapp
spec:
replicas: 3
selector:
matchLabels:
app: minhaapp
template:
metadata:
labels:
app: minhaapp
spec:
containers:
- name: minhaapp
image: minhaapp:latest
ports:
- containerPort: 80
Aplicamos no cluster com:
kubectl apply -f deployment.yaml
O Kubernetes cria três réplicas do container, distribui entre os nós, monitora continuamente e substitui qualquer instância com falha.
Resumo prático
- Docker: “Roda minha aplicação aqui.” (empacota e executa containers)
- Kubernetes: “Mantenha várias cópias rodando, balanceie o tráfego e garanta que nunca pare.” (orquestra e escala em produção)
