Introdução Ao Docker
1 Através de tutoriais básicos e para iniciantes em Docker podemos aprender os fundamentos sobre conteinerização e como rodar aplicações em ambientes isolados. Mas nesse caso em específico também é importante a prática com laboratórios desde o início do aprendizado.2
-
O que é? Um software de virtualização que funciona através de empacotar a aplicação com todas as configurações necessárias (containers) que pode ser distribuído e compartilhado com muita facilidade.
-
Que problema resolve? Padroniza e automatiza o desenvolvimento local, evitando erros de instalação de dependências e otimizando o tempo do desenvolvedor
-
Por que não uma VM? O docker usa a camada de aplicação do S.O e o Kernel do Host, diferente de uma VM que tem seu próprio. Fazendo com que o tamanho das imagens de Docker sejam muito menores. Mas a compatibilidade é limitada , já que o docker precisa do Kernel do Host.

Imagens Vs Containers?
Imagens são os pacotes que juntam os requisitos necessários para rodar a aplicação, incluindo as configurações de ambiente, empacotados e enviados ao hub ou gerenciador de artefatos.
Já os container são as instâncias que fazemos das imagens, elas rodando.
- Imagens são versionadas também, através das tags.
Docker Registry
- Lugar para guardar e distribuir imagens docker
- Docker Hub
Comandos Docker Com Prisma
docker compose up,docker compose downsudo systemctl restart docker→ restarta tudodocker exec -it meu_container bash???sudo chown -R usuarioPC prismanpm run migrate→ short , ta no package- generate
- buid sempre vem com infos novas
Comandos
Se você quer remover completamente tudo relacionado ao Docker em um único comando no fish shell, aqui está uma solução completa:
docker stop (docker ps -q); \
docker rm (docker ps -a -q); \
docker volume rm (docker volume ls -q); \
docker network rm (docker network ls -q); \
docker rmi -f (docker images -q); \
docker system prune -a -f --volumesEste comando:
- Para todos os containers em execução
- Remove todos os containers (parados e em execução)
- Remove todos os volumes
- Remove todas as redes (exceto as redes padrão)
- Remove todas as imagens forçadamente
- Executa uma limpeza completa do sistema, incluindo cache de construção, imagens pendentes, redes não utilizadas e volumes não utilizados
Tenha cuidado ao executar isto em ambiente de produção, pois ele realmente remove TUDO do seu ambiente Docker e não há volta atrás (a menos que você tenha backups).
Gestão De Contêineres
# Listar contêineres em execução
docker ps
# Listar todos os contêineres (incluindo parados)
docker ps -a
# Iniciar um contêiner
docker start <nome-do-container>
# Parar um contêiner
docker stop <nome-do-container>
# Reiniciar um contêiner
docker restart <nome-do-container>
# Remover um contêiner
docker rm <nome-do-container>
# Forçar remoção de um contêiner em execução
docker rm -f <nome-do-container>
# Remove os containers, deleta os volumes e apaga networks relacuonadas não mais utilizadas
docker compose down --volumes --remove-orphansDocker Compose
# Iniciar todos os serviços definidos no docker-compose.yml
docker compose up -d
# Parar todos os serviços
docker compose down
# Reiniciar serviços
docker compose restart
# Reconstruir serviços
docker compose up -d --build
# Listar serviços em execução
docker compose ps
# Iniciar um serviço específico
docker compose up -d <nome-do-servico>
# Parar um serviço específico
docker compose stop <nome-do-servico>
# Reiniciar um serviço específico
docker compose restart <nome-do-servico>Comandos Exec (Execução Em Contêineres)
# Executar comando em um contêiner em execução (modo interativo)
docker exec -it <nome-do-container> <comando>
# Exemplo: abrir shell bash no contêiner
docker exec -it <nome-do-container> /bin/sh
# Executar comando sem modo interativo
docker exec <nome-do-container> <comando>
# Recarregar configuração do Caddy
docker exec caddy-gateway caddy reload --config /etc/caddy/Caddyfile
# Verificar configuração do Caddy sem aplicá-la
docker exec caddy-gateway caddy validate --config /etc/caddy/Caddyfile
# Executar curl dentro do contêiner
docker exec caddy-gateway curl -I http://docmost:3000
# Verificar configuração de rede no contêiner
docker exec docmost-0.20 netstat -tulpn
# Investigar problemas de rede entre contêineres
docker exec caddy-gateway ping docmostComandos De Logs
# Ver logs de um contêiner
docker logs <nome-do-container>
# Ver últimas N linhas de logs
docker logs --tail 50 <nome-do-container>
# Ver logs continuamente (follow)
docker logs -f <nome-do-container>
# Ver logs com timestamp
docker logs -t <nome-do-container>
# Combinação de opções
docker logs -f --tail 100 -t <nome-do-container>
# Filtrar logs por palavra-chave
docker logs <nome-do-container> | grep "error"
# Formatar logs JSON com jq
docker logs caddy-gateway | jq
# Extrair campos específicos com jq
docker logs caddy-gateway | jq '.msg'
# Formatar logs JSON coloridos e mais legíveis
docker logs caddy-gateway | jq -r '. | "\u001b[33m[\(.ts)]\u001b[0m \u001b[31m[\(.msg)]\u001b[0m"'Comandos De Rede Docker
# Listar redes Docker
docker network ls
# Inspecionar uma rede
docker network inspect internal
# Conectar um contêiner a uma rede
docker network connect <nome-da-rede> <nome-do-container>
# Desconectar um contêiner de uma rede
docker network disconnect <nome-da-rede> <nome-do-container>
# Criar uma nova rede
docker network create <nome-da-rede>Comandos Específicos Para Caddy
# Recarregar configuração do Caddy
docker exec caddy-gateway caddy reload --config /etc/caddy/Caddyfile
# Validar configuração do Caddy
docker exec caddy-gateway caddy validate --config /etc/caddy/Caddyfile
# Formatar automaticamente o Caddyfile
docker exec caddy-gateway caddy fmt --overwrite /etc/caddy/Caddyfile
# Usar a API de administração do Caddy
docker exec -i caddy-gateway curl -X POST "http://localhost:2019/load" -H "Content-Type: text/caddyfile" --data-binary @- < ./Caddyfile
# Ver status do Caddy
docker exec caddy-gateway caddy statusScripts Úteis Para Monitoramento
Script Para Monitorar Logs Formatados
#!/bin/bash
# salve como monitor-caddy-logs.sh
docker logs -f caddy-gateway | jq -r '. | "\u001b[33m[" + (.ts | tostring) + "]\u001b[0m \u001b[36m[Status: " + (.status | tostring) + "]\u001b[0m \u001b[31m[Erro: " + .msg + "]\u001b[0m"'Verificar Conectividade Entre Contêineres
#!/bin/bash
# salve como check-docker-network.sh
echo "Verificando conexão do Caddy para DocMost..."
docker exec caddy-gateway ping -c 3 docmost
docker exec caddy-gateway curl -I docmost:3000
echo "Verificando configuração de rede do DocMost..."
docker exec docmost-0.20 netstat -tulpn | grep 3000Resolução De Problemas
Verificar Se a Porta Está Aberta no Contêiner
docker exec docmost-0.20 netstat -tulpnVerificar Rotas De Rede Dentro Do Contêiner
docker exec caddy-gateway ip routeReiniciar Apenas a Rede De Um Contêiner
docker restart caddy-gatewayVerificar Logs Do Sistema Docker
sudo journalctl -u docker