sudo usermod -aG docker $USER
Faça logout e login novamente para a alteração ter efeito.
2
Verificar a Instalação
bash — verificar versão
$docker --versionDocker version 24.0.7, build afdd53b
bash — testar com Hello World
$docker run hello-worldUnable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-worldStatus: Downloaded newer image for hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.
🎉 Se você viu "Hello from Docker!", está tudo funcionando!
O Docker baixou a imagem hello-world do Docker Hub, criou um container e executou — tudo automaticamente.
📋 Comandos — Imagens
bash — gerenciar imagens
# Baixar uma imagem do Docker Hub$docker pullnginx# Listar imagens locais$docker imagesREPOSITORY TAG IMAGE ID SIZEnginx latest a6bd71f48f68 187MBhello-world latest d2c94e258dcb 13.3kB# Remover uma imagem$docker rmihello-world
Imagens Populares no Docker Hub
Imagem
Descrição
nginx
Servidor web
mysql
Banco de dados MySQL
python
Ambiente Python
node
Runtime Node.js
ubuntu
Sistema Ubuntu mínimo
📦 Comandos — Containers
bash — gerenciar containers
# Criar e executar container$docker runnginx# Executar em background (-d) com nome (--name)$docker run-d--namemeu-nginxnginx# Listar containers em execução$docker ps# Listar TODOS os containers (inclusive parados)$docker ps -a# Parar um container$docker stopmeu-nginx# Iniciar container parado$docker startmeu-nginx# Remover container$docker rmmeu-nginx
🔌 Mapeamento de Portas
Para acessar um serviço dentro do container, é preciso mapear as portas com -p!
Todo tráfego na porta 8080 é encaminhado para a porta 80 do container
Exemplo
Significado
-p 80:80
Mesma porta no host e no container
-p 3000:80
Host porta 3000 → Container porta 80
-p 8080:8080
Ambos usam porta 8080
💾 Volumes — Persistência de Dados
⚠ Containers são efêmeros! Quando você remove um container, todos os dados dentro dele são perdidos. Volumes resolvem esse problema.
bash — trabalhar com volumes
# Bind Mount: montar pasta local no container# Sintaxe: -v /caminho/host:/caminho/container$docker run-d-p8080:80-v/home/user/site:/usr/share/nginx/html nginx
# Volume nomeado: Docker gerencia o armazenamento$docker volume createmeus-dados$docker run-d-vmeus-dados:/var/lib/mysql mysql
# Listar volumes$docker volume ls
Tipo
Sintaxe
Uso ideal
Bind Mount
-v /caminho/host:/caminho
Desenvolvimento — edite e veja na hora
Volume Nomeado
-v nome:/caminho
Bancos de dados e dados persistentes
🚀 Exemplo Prático: Site com Nginx
Vamos colocar um site no ar em um container em menos de 1 minuto:
bash — site em container passo a passo
# 1. Criar pasta para o site$mkdir ~/meu-site$cd ~/meu-site# 2. Criar página HTML$ echo "<h1>Olá Docker!</h1>" > index.html
# 3. Executar Nginx com o site mapeado$docker run-d \
--namemeu-site \
-p8080:80 \
-v~/meu-site:/usr/share/nginx/html \
nginx
# 4. Acessar no navegador: http://localhost:8080
✅ Seu site está rodando em um container!
Edite o index.html e atualize o navegador — as mudanças aparecem instantaneamente graças ao bind mount.
Comandos úteis para esse container:
bash — inspecionar container
# Ver logs do container$docker logsmeu-site# Entrar dentro do container (terminal interativo)$docker exec-itmeu-site bash
🔧 Referência de Comandos
docker ps
Lista containers em execução (-a para todos)
docker images
Lista imagens baixadas localmente
docker pull
Baixa imagem do Docker Hub
docker run
Cria e executa um container a partir de uma imagem
docker stop/start
Para ou inicia um container existente
docker logs
Exibe a saída (stdout) do container
Limpeza
bash — liberar espaço em disco
# Remover containers parados$docker container prune# Remover imagens não usadas$docker image prune# Limpar TUDO não utilizado (containers, imagens, volumes, redes)$docker system prune -a
🎯 Desafio Interativo
Arraste cada conceito para seu par correto:
Imagem
docker ps
-p
Docker Hub
-d
Template para criar containers
Comando para listar containers
Flag para mapear portas
Repositório público de imagens Docker
Flag para executar em background
🛠 Atividade Prática
💻 Terminal Linux⏱ ~30 min🧑💻 Individual
1
Instalar e verificar o Docker
Siga os passos de instalação e confirme com docker --version. Execute docker run hello-world para testar.
2
Baixar e rodar o Nginx
Execute docker run -d -p 8080:80 --name web nginx e acesse http://localhost:8080 no navegador. Confirme que a página padrão do Nginx aparece.
3
Criar site com bind mount
Crie a pasta ~/meu-site com um index.html personalizado. Suba um container Nginx mapeando essa pasta e acesse no navegador.
4
Explorar comandos
Liste os containers com docker ps -a, veja os logs com docker logs, pare e remova os containers criados. Limpe o ambiente com docker system prune.
📋 Observe: Edite o index.html enquanto o container está rodando e recarregue o navegador. O que acontece? Por que a mudança aparece instantaneamente?
❓ Verifique seu Conhecimento
Qual a diferença principal entre um container Docker e uma máquina virtual?
AContainers são mais lentos que VMs
BContainers compartilham o kernel do host, VMs têm kernel próprio
CContainers precisam de mais RAM que VMs
DContainers não podem executar aplicações web
✓ Containers Docker compartilham o kernel do sistema operacional host, tornando-os muito mais leves e rápidos que VMs completas.
Qual comando baixa uma imagem do Docker Hub sem iniciar um container?
Adocker run nginx
Bdocker get nginx
Cdocker pull nginx
Ddocker fetch nginx
✓ docker pull baixa a imagem. docker run baixa (se necessário) E inicia o container.
Qual flag do comando docker run mapeia a porta 80 do container para a porta 8080 do host?
A-p 8080:80
B-p 80:8080
C--port 8080=80
D-map 8080:80
✓ A sintaxe é -p porta_host:porta_container. Então -p 8080:80 → acesse o Nginx em http://localhost:8080.
O que é um Dockerfile?
AUm arquivo de logs dos containers
BUm script de inicialização do Docker daemon
CUm arquivo de configuração do Docker Desktop
DUm arquivo de instruções para construir uma imagem Docker
✓ O Dockerfile contém instruções (FROM, RUN, COPY, CMD...) que definem como construir uma imagem. Use docker build -t nome . para gerar a imagem.