Containers e Docker
O que é um Container
Um container é uma unidade leve de software que empacota uma aplicação junto com todas as suas dependências — bibliotecas, binários e arquivos de configuração — em um ambiente isolado. Diferente de uma máquina virtual (VM), o container não virtualiza o hardware: ele compartilha o kernel do sistema operacional host.
Container vs. Máquina Virtual
| Característica | Container | VM |
|---|---|---|
| Isolamento | Nível de processo | Nível de hardware |
| Overhead | Muito baixo | Alto (inclui SO completo) |
| Tempo de inicialização | Segundos | Minutos |
| Portabilidade | Alta | Moderada |
| Hypervisor necessário | Não | Sim |
Docker
Docker é a plataforma de containerização mais utilizada. Ele usa uma arquitetura cliente-servidor com os seguintes componentes principais:
- Docker Engine: daemon que gerencia containers
- Docker Image: template imutável usado para criar containers
- Docker Container: instância em execução de uma imagem
- Docker Hub: repositório público de imagens
Imagem vs. Container
Uma imagem é como um snapshot de sistema de arquivos. Um container é a execução dessa imagem. Múltiplos containers podem ser iniciados a partir de uma única imagem, cada um operando de forma independente.
Microserviços e Containers
Containers são a base da arquitetura de microserviços, onde uma aplicação é dividida em serviços menores e independentes. Cada microserviço roda em seu próprio container, podendo ser escalado, atualizado e implantado de forma isolada.
Essa abordagem é oposta à arquitetura monolítica, onde toda a aplicação é um único bloco indivisível.
Virtualização de Rede com Containers
Do ponto de vista de rede, cada container recebe:
- Interface de rede virtual própria
- Endereço IP (geralmente em rede privada interna)
- Regras de NAT para comunicação externa
Isso tem implicações diretas para redes corporativas: containers podem criar sobreposição de endereçamento IP e exigir configurações específicas em switches e firewalls.
Relevância para o CCNA
O exame CCNA 200-301 aborda containers dentro do domínio 6.0 — Automation and Programmability e do módulo de Cloud. Os pontos-chave são:
- Entender a diferença entre containers e VMs
- Conhecer o papel dos containers em ambientes de nuvem e DevOps
- Compreender como containers impactam o planejamento de rede (NAT, segmentação, firewalls)
- Saber que containers compartilham o kernel do host (Type 1 vs. Type 2 hypervisor não se aplica)
Orquestração de Containers
Para ambientes com muitos containers, ferramentas de orquestração gerenciam ciclo de vida, escalabilidade e rede:
- Kubernetes (K8s): padrão de mercado para orquestração
- Docker Swarm: solução nativa mais simples do Docker
O CCNA não exige configuração dessas ferramentas, apenas compreensão conceitual de sua função.
Pontos de Atenção no Exame
- Containers são mais eficientes que VMs em termos de uso de recursos
- Containers não substituem VMs em todos os cenários — VMs oferecem isolamento mais forte
- Docker usa namespaces e cgroups do Linux para isolamento e controle de recursos
- Em cloud, containers são frequentemente orquestrados por Kubernetes