Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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ísticaContainersMáquinas Virtuais (VMs)
IsolamentoIsolamento de processosIsolamento completo do SO
RecursosCompartilham o SO do hostCada VM tem seu próprio SO
TamanhoLeves (megabytes)Pesadas (gigabytes)
InicializaçãoRápida (segundos)Lenta (minutos)
PortabilidadeAltaMédia
DesempenhoPróximo ao nativoMenor 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

  1. Crie um arquivo index.html com o seguinte conteúdo:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Página customizada</title>
    </head>
    <body>
        <h1>Olá do container Nginx!</h1>
    </body>
    </html>
    
  2. Crie um Dockerfile no mesmo diretório:

    FROM nginx:alpine
    COPY index.html /usr/share/nginx/html
    
  3. Construa a imagem:

    docker build -t meu-nginx .
    
  4. 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