Introdução a Containers (Docker/Podman)
O que são containers?
Containers são uma tecnologia que permite empacotar e isolar aplicações com suas dependências em um ambiente de software contido. Isso garante que a aplicação funcione de forma consistente em diferentes ambientes de computação
Cada container executa um aplicativo ou serviço específico, como processo principal, em um ambiente isolado, mas compartilha o kernel do sistema operacional
Por que usar containers?
- Portabilidade: As aplicações em containers podem ser executadas em qualquer lugar que suporte a tecnologia de container, sem a necessidade de reconfiguração
- Eficiência: Os containers compartilham o kernel do sistema operacional do host, o que os torna mais leves e rápidos do que as máquinas virtuais
- Isolamento: Os containers fornecem um ambiente isolado para cada aplicação, o que ajuda a evitar conflitos de dependência e a melhorar a segurança
Container vs VM
A diferença principal entre containers e máquinas virtuais (VMs) é que containers compartilham o kernel do sistema operacional, sendo assim mais leves e rápidos de iniciar, enquanto VMs incluem todo o sistema operacional, necessitando de mais recursos e ajustes
| Característica | Containers | Máquinas Virtuais (VMs) |
|---|---|---|
| Isolamento | Isolamento de processos | Isolamento completo do SO |
| Recursos | Compartilham o SO do host | Cada VM tem seu próprio SO |
| Tamanho | Leves (megabytes) | Pesadas (gigabytes) |
| Inicialização | Rápida (segundos) | Lenta (minutos) |
| Portabilidade | Alta | Média |
| Desempenho | Próximo ao nativo | Menor devido à sobrecarga |
Quando usar cada um?
- Use containers quando: você precisa executar várias aplicações em um único servidor, busca alta portabilidade e um ciclo de desenvolvimento rápido
- Use VMs quando: você precisa de isolamento completo do sistema operacional, ou quando precisa executar aplicações que requerem um sistema operacional diferente do host
Primeiros passos com Docker
Dockerfile
Um Dockerfile é um arquivo de texto que contém os comandos para montar uma imagem de container. O Docker constrói imagens automaticamente lendo as instruções de um Dockerfile.
Exemplo: Nginx com index.html customizado
-
Crie um arquivo
index.htmlcom o seguinte conteúdo:<!DOCTYPE html> <html> <head> <title>Página customizada</title> </head> <body> <h1>Olá do container Nginx!</h1> </body> </html> -
Crie um
Dockerfileno mesmo diretório:FROM nginx:alpine COPY index.html /usr/share/nginx/html -
Construa a imagem:
docker build -t meu-nginx . -
Execute o container:
docker run -d -p 8080:80 meu-nginx
Acesse http://localhost:8080 em seu navegador para ver a página customizada.
Docker Compose
O Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-container. Com o Compose, você usa um arquivo YAML para configurar os serviços da sua aplicação. Em seguida, com um único comando, você cria e inicia todos os serviços a partir da sua configuração.
Mais detalhes na documentação oficial: https://docs.docker.com/compose/
Exemplo: docker-compose.yml
Usando o mesmo exemplo do Nginx, o arquivo docker-compose.yml seria assim:
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
Para executar, use o comando:
docker compose up
Para executar em background, use:
docker compose up -d
Para parar os containers, use:
docker compose down -v