PowerShell · Docker · Prática

Docker via PowerShell

Três atividades práticas, progressivas e comentadas para dominar containers do zero até subir um servidor web real.

🐳Docker Desktoppré-requisito
💻PowerShellWindows / macOS / Linux
📚3 atividadesdo básico ao servidor web
01

Comandos Essenciais do Docker

Aprenda a navegar pelo Docker com os comandos fundamentais: listar imagens, baixar, executar e gerenciar containers.

docker pull docker run docker ps docker stop docker rm docker images
⏱ 30 min
🎯 OBJETIVO Ao final desta atividade você saberá baixar imagens do Docker Hub, iniciar e parar containers, listar o que está rodando e limpar o ambiente.
1
Verificar a instalação do Docker
PowerShell
PS>docker version
Exibe a versão do Docker instalada. Client é o CLI que você usa e Server é o daemon que gerencia os containers.
PS>docker info
Mostra estatísticas completas do ambiente: containers em execução, imagens baixadas, drivers de rede e armazenamento.
💡 DICASe aparecer erro de conexão, abra o Docker Desktop e aguarde o ícone da baleia ficar verde.
2
Baixar sua primeira imagem (Hello World)
PowerShell
PS>docker pull hello-world
pull faz o download da imagem do Docker Hub (repositório público). hello-world é uma imagem mínima criada para testar o ambiente.
PS>docker images
Lista todas as imagens baixadas localmente. Você verá REPOSITORY, TAG (versão), IMAGE ID e SIZE.
3
Executar o container Hello World
PowerShell
PS>docker run hello-world
run cria e inicia um container a partir da imagem. O hello-world imprime uma mensagem de boas-vindas e encerra automaticamente.
Hello from Docker!
This message shows that your installation appears to be working correctly.
4
Rodar um container em segundo plano (detached)
PowerShell
PS>docker run -d --name meu-nginx nginx
-d (detached) roda o container em background — ele fica ativo mas não prende o terminal.
--name meu-nginx dá um nome amigável ao container em vez do ID aleatório.
nginx é a imagem de um servidor web leve (baixada automaticamente se não existir localmente).
PS>docker ps
ps lista containers em execução. Você verá o ID, a imagem usada, o comando, há quanto tempo está rodando e o status.
PS>docker ps -a
-a (all) lista todos os containers, inclusive os que já pararam. Você verá também o hello-world com status Exited.
5
Parar e remover containers
PowerShell
PS>docker stop meu-nginx
stop envia um sinal de encerramento ao container. Ele para de forma segura, preservando seu estado.
PS>docker rm meu-nginx
rm remove o container da lista. Atenção: apenas o container é excluído, a imagem permanece no disco.
PS>docker rmi hello-world
rmi (remove image) apaga a imagem do disco local. Use somente quando não precisar mais dela.
💡 DICAUse docker rm -f meu-nginx para parar e remover em um único comando com a flag -f (force).

✅ CHECKLIST FINAL — ATIVIDADE 1

  • Docker instalado e funcionando (docker version sem erros)
  • Imagem hello-world baixada e executada com sucesso
  • Container nginx rodando em background com nome personalizado
  • Uso de docker ps / docker ps -a compreendido
  • Container parado, removido e imagem deletada do disco
02

Container Ubuntu — Manipulação de Arquivos

Entre em um container Ubuntu interativo, crie diretórios e arquivos, escreva conteúdo, navegue pelo sistema e saia do container com segurança.

-it bash mkdir / touch echo / cat exit docker exec
⏱ 35 min
🎯 OBJETIVO Usar o modo interativo do Docker para trabalhar dentro de um container Linux como se fosse um servidor real — criando, editando e lendo arquivos sem instalar nada no Windows.
1
Iniciar um container Ubuntu interativo
PowerShell
PS>docker run -it --name meu-ubuntu ubuntu bash
-i mantém o STDIN aberto (input interativo).
-t aloca um pseudo-terminal (TTY), dando a interface de linha de comando.
ubuntu é a imagem oficial do Ubuntu.
bash é o shell que será executado ao entrar no container.
root@a3f1c2d4e5b6:/#
← Você agora está DENTRO do container! O hash após @ é o ID do container.
⚠️ ATENÇÃOO prompt mudou de PS> para root@...:#. Agora você está dentro do Linux! Os comandos a seguir são executados dentro do container.
2
Explorar e criar estrutura de diretórios
Dentro do Container Ubuntu
root@.../#pwd
pwd (print working directory) mostra em qual diretório você está. Resultado esperado: / (raiz do sistema).
root@.../#ls
Lista os arquivos e pastas do diretório atual. Você verá a estrutura básica do Linux: bin, etc, home, usr, var, etc.
root@.../#mkdir -p /minha-aula/documentos/notas
mkdir cria diretórios. A flag -p cria todos os níveis de uma vez, sem erro se já existirem.
root@.../#ls -la /minha-aula
-l exibe detalhes (permissões, tamanho, data) e -a mostra arquivos ocultos também.
3
Criar e escrever arquivos
Dentro do Container Ubuntu
root@.../#cd /minha-aula/documentos
cd (change directory) navega para a pasta especificada.
root@.../documentos#touch arquivo1.txt
touch cria um arquivo vazio. Se o arquivo já existir, atualiza a data de modificação.
root@.../documentos#echo "Olá, Docker! Aula de containers." > arquivo1.txt
echo imprime texto. O operador > redireciona a saída para um arquivo (sobrescreve). Use >> para adicionar ao final sem apagar.
root@.../documentos#echo "Segunda linha adicionada." >> arquivo1.txt
O >> acrescenta o conteúdo ao final do arquivo sem apagar o que já estava lá.
root@.../documentos#cat arquivo1.txt
cat exibe o conteúdo de um arquivo no terminal.
Olá, Docker! Aula de containers.
Segunda linha adicionada.
4
Copiar, mover e remover arquivos
Dentro do Container Ubuntu
root@.../documentos#cp arquivo1.txt notas/copia.txt
cp (copy) copia o arquivo para outra localização. O original é mantido.
root@.../documentos#mv arquivo1.txt arquivo_renomeado.txt
mv (move) renomeia ou move o arquivo. O arquivo original deixa de existir no caminho antigo.
root@.../documentos#ls -R
-R lista recursivamente todos os arquivos e subdiretórios abaixo do atual.
5
Sair do container e gerenciá-lo de fora
Dentro do Container → PowerShell
root@.../#exit
exit encerra o bash e sai do container. Como o bash era o processo principal, o container também para.
← Você voltou ao PowerShell!
PS>docker start meu-ubuntu
start reinicia um container que foi parado. Os arquivos criados dentro continuam lá!
PS>docker exec -it meu-ubuntu bash
exec executa um comando em um container já em execução. Diferente do run (que cria novo), o exec entra no container existente.
💡 ATENÇÃOUse Ctrl + P seguido de Ctrl + Q para sair do container sem encerrá-lo. DIGITE EXIT PARA SAIR DO CONTAINER E INICIAR A ATIVIDADE NOVA.

✅ CHECKLIST FINAL — ATIVIDADE 2

  • Container Ubuntu iniciado no modo interativo (-it bash)
  • Estrutura de diretórios criada com mkdir -p
  • Arquivo criado, escrito e lido com touch, echo e cat
  • Arquivo copiado e renomeado com cp e mv
  • Saída do container com exit e reentrada com docker exec
03

Servidor Web com Página Personalizada

Crie uma página HTML no PowerShell, coloque dentro de um container nginx com mapeamento de porta e acesse pelo browser junto com a turma.

-p (porta) -v (volume) nginx docker cp localhost browser
⏱ 45 min
🎯 OBJETIVO Subir um servidor web nginx dentro do Docker, mapear a porta para o computador host e servir uma página HTML criada por você — acessível pelo browser em localhost:8080.
1
Criar a página HTML no PowerShell
PowerShell
PS>mkdir C:\docker-site
Cria a pasta que guardará os arquivos do nosso site no computador local (host).
PS>Set-Content -Path "C:\docker-site\index.html" -Value @"
<!DOCTYPE html>
<html><head><meta charset="UTF-8">
<title>Meu Container Web</title></head>
<body><h1>🐳 Docker funcionando!</h1>
<p>Servidor web rodando dentro de um container nginx.</p>
</body></html>
"@
Set-Content é o comando PowerShell para escrever conteúdo em um arquivo. O bloco @" ... "@ é chamado de here-string e permite escrever texto com múltiplas linhas.
💡 DICAAbra o arquivo C:\docker-site\index.html no Notepad ou VS Code para personalizar o conteúdo antes de subir o servidor!
2
Iniciar o nginx com mapeamento de porta e volume
PowerShell
PS>docker run -d --name servidor-web -p 8080:80 -v C:\docker-site:/usr/share/nginx/html nginx
-d — roda em background (detached).
--name servidor-web — nome amigável para o container.
-p 8080:80 — mapeia a porta: 8080 do seu PC aponta para a porta 80 do container (porta padrão do nginx).
-v C:\docker-site:/usr/share/nginx/html — monta um volume: a pasta local é espelhada dentro do container. Qualquer mudança no HTML aparece imediatamente no browser!
3
Verificar e acessar pelo browser
PowerShell
PS>docker ps
Confirme que o container servidor-web está rodando. Na coluna PORTS você verá 0.0.0.0:8080→80/tcp.
CONTAINER ID IMAGE COMMAND PORTS NAMES
a1b2c3d4e5f6 nginx ... 0.0.0.0:8080->80/tcp servidor-web
PS>Start-Process "http://localhost:8080"
Abre o browser padrão do Windows diretamente na URL do servidor. Você verá sua página HTML servida pelo nginx dentro do container! 🎉
4
Atualizar o site em tempo real
PowerShell
PS>Add-Content -Path "C:\docker-site\index.html" -Value "<p>Linha atualizada em tempo real!</p>"
Add-Content acrescenta conteúdo ao arquivo sem apagar o que existe. Como usamos volume (-v), a mudança é refletida imediatamente no browser — sem reiniciar o container!
PS>docker logs servidor-web
logs exibe os registros de acesso do nginx. Cada visita ao browser aparece como uma linha de log com IP, método HTTP, URL e código de status.
172.17.0.1 - - [21/Apr/2026:10:30:00 +0000] "GET / HTTP/1.1" 200 512 "-"
5
Inspecionar o container e encerrar
PowerShell
PS>docker inspect servidor-web
inspect retorna um JSON completo com todos os detalhes do container: IP, portas, volumes montados, variáveis de ambiente, configurações de rede e muito mais.
PS>docker stats servidor-web
stats mostra em tempo real o consumo de CPU, memória, rede e disco do container. Pressione Ctrl+C para sair.
PS>docker stop servidor-web && docker rm servidor-web
Para e remove o container em sequência usando o operador && (o segundo comando só roda se o primeiro tiver êxito).
💡 BÔNUS — DESAFIO EXTRATente servir sua página para a turma! Descubra seu IP local com ipconfig e peça para um colega acessar http://SEU-IP:8080 pelo browser. (Verifique se o firewall do Windows permite a porta 8080.)

✅ CHECKLIST FINAL — ATIVIDADE 3

  • Página HTML criada com Set-Content no PowerShell
  • Container nginx iniciado com -p (porta) e -v (volume)
  • Site acessível em http://localhost:8080 no browser
  • Página atualizada em tempo real sem reiniciar o container
  • Logs visualizados com docker logs e uso com docker stats
  • Container parado e removido corretamente