M8 · Cloud e Virtualização

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