Containers

Docker

30/01/2026

🐳 Docker: Guia Completo para Iniciantes

Este documento é um guia de referência rápida e prática para quem está começando com Docker. Ele aborda conceitos, instalação, comandos essenciais e a criação de ambientes.


1. Conceitos Fundamentais

O que são Containers?

Um container é um pacote de software padronizado que agrupa o código de uma aplicação com todas as suas dependências (bibliotecas, configurações, binários) para que a aplicação execute de forma rápida e confiável em qualquer ambiente.

O que é uma Imagem?

Container vs. Máquina Virtual (VM)

Característica Container Máquina Virtual (VM)
Sistema Operacional Compartilha o Kernel do Host (Linux) Possui S.O. completo próprio
Tamanho Leve (Megabytes) Pesado (Gigabytes)
Boot Instantâneo (Segundos) Lento (Minutos)
Desempenho Nativo Overhead de virtualização

2. Gerenciando o Serviço Docker

Como iniciar e verificar o status do Docker em diferentes sistemas operacionais.

🪟 Windows (PowerShell)

Geralmente gerenciado pelo Docker Desktop, mas pode ser controlado via terminal (Admin).

# Iniciar serviço
Start-Service docker

# Verificar status
Get-Service docker
🐧 Linux (Bash)
O Docker roda como um serviço nativo (daemon).
# Iniciar serviço
sudo systemctl start docker

# Habilitar no boot (iniciar com o sistema)
sudo systemctl enable docker

# Verificar status
sudo systemctl status docker

🍎 macOS

3. Ciclo de Vida: Comandos Básicos

Onde encontrar imagens? O repositório oficial é o Docker Hub.

Baixar e Executar (Docker Run)
O comando docker run baixa a imagem (se não existir localmente) e cria um container novo.

Sintaxe: docker run [flags] <imagem>

Exemplos:

# Baixa e roda (prende o terminal)
docker run ubuntu

Modo Interativo (acessa o terminal do container)

-i: interativo | -t: terminal (tty)

docker run -it ubuntu
Rodando em Background (Detached)
Para liberar o terminal enquanto o serviço roda, usamos a flag -d.
# Exemplo com Nginx rodando em segundo plano
docker run -d nginx
````

**Listar Containers**

```Bash
# Lista apenas containers em execução (ativos)
docker ps

# Lista TODOS os containers (inclusive parados/histórico)
docker ps -a

4. Configurações de Execução

Expondo Portas
Para acessar a aplicação do container no navegador da sua máquina (Host). Flag: -p :

# Acessível em localhost:8080 (mapeia para a porta 80 do container)
docker run -d -p 8080:80 nginx

Nomeando Containers
Para facilitar o gerenciamento e não depender de IDs aleatórios. Flag: –name

docker run -d -p 80:80 --name meu-servidor-web nginx

Persistência de Dados (Volumes)
Se o container for removido, os dados somem. Use volumes para persistir dados ou injetar configurações. Flag: -v :

# Exemplo: Montando um arquivo de configuração personalizado no Nginx
docker run -d \
  -p 8080:80 \
  -v /meus-projetos/nginx.conf:/etc/nginx/nginx.conf \
  nginx

5. Manutenção e Monitoramento

Logs
Essencial para debugar aplicações que rodam em background.

# Ver últimos logs
docker logs <nome_ou_id>

# Acompanhar logs em tempo real (follow)
docker logs -f <nome_ou_id>

Parar, Iniciar e Reiniciar

# Parar um container em execução (Graceful shutdown)
docker stop <nome_ou_id>

# Iniciar um container que está parado (NÃO cria um novo)
docker start <nome_ou_id>

# Reiniciar
docker restart <nome_ou_id>
Removendo (Limpeza)
# Remover container parado
docker rm <nome_ou_id>

# Forçar remoção de container em execução (Cuidado!)
docker rm -f <nome_ou_id>

# Remover uma imagem baixada
docker rmi <nome_imagem>

6. Prática: Criando sua Própria Imagem (Dockerfile)

Vamos criar uma imagem para uma aplicação Node.js simples.

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
    res.send("Olá! Minha aplicação está rodando no Docker 🐳");
});

app.listen(port, () => {
    console.log(`Executando na porta: ${port}`);
});
Passo 2: Criar o Dockerfile
Crie um arquivo chamado Dockerfile (sem extensão) na raiz do projeto:

Passo 2: Criar o Dockerfile
Crie um arquivo chamado Dockerfile (sem extensão) na raiz do projeto:

# 1. Define a imagem base (Linux Alpine com Node)
FROM node:18-alpine

# 2. Define o diretório de trabalho dentro do container
WORKDIR /app

# 3. Copia arquivos de dependências
COPY package*.json ./

# 4. Instala as dependências
RUN npm install

# 5. Copia o restante do código fonte
COPY . .

# 6. Documenta a porta que será usada
EXPOSE 3000

# 7. Comando para rodar a aplicação
CMD ["node", "app.js"]
Passo 3: Build e Run

Passo 3: Build e Run
No CMD ou Terminal dentro da pasta do Projeto:

# Construir a imagem
docker build -t minha-app-node .

# Rodar o container
docker run -d -p 3000:3000 --name app-node-teste minha-app-node
7. Cheat Sheet (Resumo)
docker pull <imagem>: Baixa a imagem do Docker Hub.

docker run <imagem>: Cria e inicia um novo container.

docker ps: Lista containers ativos.

docker ps -a: Lista todos os containers (ativos e inativos).

docker logs <id>: Mostra a saída (stdout) do container.

docker stop <id>: Para a execução do container.

docker rm <id>: Apaga o container (deve estar parado).

docker images: Lista as imagens baixadas na máquina.

docker rmi <imagem>: Apaga uma imagem do disco.

docker build -t <tag> .: Cria uma imagem a partir de um Dockerfile.

☁️ Platform Hub: Orquestração de Ambientes Efêmeros

O Platform Hub é um orquestrador de ambientes efêmeros projetado para simplificar a entrega e o teste de software. Ele permite que desenvolvedores disponibilizem versões funcionais de seus sistemas (Projetos), encapsulando toda a complexidade da infraestrutura.

Esses ambientes podem ser instanciados sob demanda por qualquer usuário. Isso significa que, em vez de configurar servidores manualmente ou lidar com dependências locais, o usuário final pode “subir” uma instância completa e isolada da aplicação com apenas alguns cliques, utilizá-la para testes ou validações e descartá-la posteriormente.


🚀 Onde Testar

Para experimentar a orquestração na prática e visualizar os projetos disponíveis para instanciação imediata, acesse o portal oficial da ferramenta:

Referências e Link de Acesso

Voltar