Básico sobre Docker e Containers

docker-logo

Nos últimos anos, Docker e containers revolucionaram a forma como aplicações são desenvolvidas, distribuídas e executadas. Empresas como Google, Netflix, Amazon, Microsoft e Spotify utilizam essa tecnologia diariamente para garantir escalabilidade, rapidez e confiabilidade em seus sistemas.

Mas afinal, o que são containers? O que é Docker? Vamos entender de uma forma bem simples.


Imagine um navio de cargas

Antes da invenção dos containers marítimos, transportar mercadorias era extremamente complicado.

Cada empresa embalava seus produtos de uma maneira diferente.

Um caminhão precisava descarregar caixa por caixa.

Depois tudo era colocado manualmente em um navio.

Ao chegar ao destino, fazia-se novamente todo esse processo.

Era demorado, caro e sujeito a erros.

Foi então que surgiram os containers metálicos padronizados.

Não importa se dentro existe:

  • roupas;
  • alimentos;
  • eletrônicos;
  • automóveis.

O caminhão, o trem e o navio transportam exatamente o mesmo container.

O importante é que todos seguem um padrão.

Na informática acontece praticamente a mesma coisa.


O problema antes do Docker

Imagine um desenvolvedor criando um sistema em seu computador.

Ele instala:

  • Ubuntu;
  • Apache;
  • PHP 8.3;
  • MySQL;
  • Redis;
  • Bibliotecas específicas.

No computador dele tudo funciona perfeitamente.

Mas quando o sistema vai para o servidor da empresa…

Surge o famoso problema:

“Na minha máquina funciona.”

O servidor possui outra versão do PHP.

Outra biblioteca.

Outro sistema operacional.

Outro banco.

Resultado:

A aplicação para de funcionar.


A solução: Containers

O container funciona como uma caixa totalmente preparada, contendo tudo o que a aplicação precisa para funcionar.

Dentro dele ficam:

  • sistema básico;
  • bibliotecas;
  • dependências;
  • configuração;
  • aplicação.

Assim, o container roda exatamente da mesma forma em qualquer computador.

Não importa se ele será executado:

  • no notebook;
  • em um servidor físico;
  • em uma máquina virtual;
  • na AWS;
  • na Azure;
  • no Google Cloud.

Se existe Docker instalado, o container funcionará praticamente da mesma maneira.


O que é Docker?

O Docker é uma plataforma responsável por criar, distribuir e executar containers.

Ele é quem gerencia todo esse processo.

Podemos imaginar da seguinte forma:

  • Container = a caixa.
  • Docker = o caminhão que transporta e gerencia as caixas.

Um exemplo simples

Imagine uma pizzaria.

Antes:

Cada pizzaiolo precisava montar toda a cozinha.

Comprar forno.

Comprar ingredientes.

Instalar equipamentos.

Depois fazer a pizza.

Agora imagine que tudo já venha preparado.

Existe uma cozinha portátil completa.

Basta ligar na tomada.

Começar a trabalhar.

Isso é um container.


Como funciona um container?

Um container possui tudo que a aplicação precisa.

Exemplo:

Minha aplicação

├── PHP
├── Apache
├── MySQL Client
├── Bibliotecas
├── Configurações
└── Código da aplicação

Quando iniciamos esse container, tudo já está pronto.

Não precisamos instalar nada.


Máquina Virtual x Container

Essa é uma das maiores dúvidas.

Máquina Virtual

Uma máquina virtual simula um computador inteiro.

Ela possui:

  • BIOS
  • Kernel
  • Sistema Operacional completo
  • Drivers
  • Aplicações

Exemplo:

Servidor Físico

Hypervisor

Windows Server

Ubuntu

Debian

CentOS

Cada máquina virtual possui seu próprio sistema operacional.

Isso consome muita memória.

Muito processamento.

Muito armazenamento.


Container

Já o container compartilha o kernel do sistema operacional.

Ele executa apenas a aplicação.

Servidor Linux

Docker Engine

Container 1

Container 2

Container 3

Cada container possui somente o necessário.

Resultado:

  • inicia em segundos;
  • ocupa poucos megabytes;
  • consome menos memória;
  • utiliza menos CPU.

Comparação

Máquina VirtualContainer
Sistema operacional completoCompartilha o kernel
Mais pesadaMuito leve
Inicializa em minutosInicializa em segundos
Alto consumo de memóriaBaixo consumo
Mais lentaMuito rápida

O que existe dentro de um container?

Um container normalmente possui: Sistema Base > Bibliotecas > Dependências > Aplicação > Configurações

Tudo isso fica isolado. Um container não interfere no outro.


O que é uma Imagem Docker?

Antes de criar um container, precisamos de uma imagem.

Uma imagem é como uma receita de bolo.

Ela descreve exatamente tudo que será instalado.

Exemplo: Ubuntu + PHP + Apache + Composer + Minha aplicação

Essa receita gera uma imagem.

Quando executamos a imagem, nasce um container.

Podemos resumir assim: Imagem => docker run => container


Docker Hub

O Docker possui um repositório chamado Docker Hub.

É semelhante ao GitHub.

Lá encontramos milhares de imagens prontas.

Exemplos:

  • Ubuntu
  • Debian
  • MySQL
  • PostgreSQL
  • Nginx
  • Apache
  • Redis
  • MongoDB
  • WordPress
  • Jenkins

Basta baixar.

Executar.

Pronto.


Exemplo prático

Quer iniciar um servidor web?

Basta executar: docker run nginx

Em poucos segundos existe um servidor Nginx funcionando.

Sem instalar nada manualmente.


Docker Compose

Imagine uma aplicação composta por:

  • Front-end
  • Backend
  • Banco de dados
  • Redis
  • RabbitMQ

Criar cada container individualmente seria trabalhoso.

Para isso existe o Docker Compose.

Ele utiliza um arquivo chamado: docker-compose.yml

Nesse arquivo descrevemos toda a infraestrutura.

Um único comando sobe tudo. => docker compose up


Vantagens do Docker

Entre os principais benefícios estão:

  • rapidez na implantação;
  • padronização dos ambientes;
  • facilidade para testes;
  • redução de erros;
  • economia de recursos;
  • maior escalabilidade;
  • facilidade para atualizações;
  • isolamento das aplicações;
  • integração com DevOps;
  • compatibilidade com CI/CD.

Docker na Computação em Nuvem

Hoje praticamente todos os grandes provedores suportam containers.

Entre eles:

  • AWS
  • Microsoft Azure
  • Google Cloud
  • Oracle Cloud
  • IBM Cloud

Isso facilita mover aplicações entre diferentes provedores sem grandes alterações.


Docker e Kubernetes

Quando uma empresa possui poucos containers, o Docker é suficiente.

Mas imagine milhares deles rodando ao mesmo tempo.

Quem controla tudo isso?

Entra em cena o Kubernetes.

Ele é um orquestrador de containers.

Suas funções incluem:

  • criar containers automaticamente;
  • reiniciar containers com falha;
  • distribuir carga entre servidores;
  • escalar aplicações conforme a demanda;
  • realizar atualizações sem interromper o serviço.

Em outras palavras:

  • Docker cria e executa os containers.
  • Kubernetes gerencia milhares de containers de forma automática.

Conclusão

Docker e containers transformaram a maneira como aplicações são desenvolvidas e implantadas. Em vez de depender da configuração específica de cada servidor, os desenvolvedores empacotam toda a aplicação com suas dependências em um ambiente isolado e portátil.

Essa abordagem elimina problemas de compatibilidade, acelera implantações e facilita a escalabilidade, tornando-se uma das bases da computação em nuvem, das arquiteturas de microsserviços e das práticas modernas de DevOps. Em conjunto com ferramentas como Docker Compose e Kubernetes, os containers permitem que organizações entreguem software de forma mais rápida, confiável e eficiente.

Publicar comentário