Files
guara/docs/pt-BR/docker.md
T
Lucas Rayan b4a85722a6
Release / Cria a release (push) Canceled after 0s
Release / CLI (linux-aarch64) (push) Canceled after 0s
Release / CLI (linux-x86_64) (push) Canceled after 0s
Release / CLI (macos-aarch64) (push) Canceled after 0s
Release / CLI (macos-x86_64) (push) Canceled after 0s
Release / CLI (windows-x86_64) (push) Canceled after 0s
Release / App desktop (linux-x86_64) (push) Canceled after 0s
Release / App desktop (macos-aarch64) (push) Canceled after 0s
Release / App desktop (macos-x86_64) (push) Canceled after 0s
Release / App desktop (windows-x86_64) (push) Canceled after 0s
Release / Publica a release (push) Canceled after 0s
release: 1.1.0
2026-10-20 13:36:18 -03:00

3.0 KiB

Usando o Guará com Docker

English · Português

A imagem traz o terminal guara e o smartctl. Ela serve em três casos:

  1. Servidor ou NAS Linux sem desktop, com o disco danificado conectado.
  2. Arquivos de imagem forense (.img, E01, AFF4) em qualquer sistema com Docker, porque não precisa acessar dispositivo.
  3. Ambiente reproduzível para scripts e CI.

Não é o caminho recomendado para a maioria das pessoas. No desktop, use os pacotes de Releases.

Limites

  • Dispositivos brutos só funcionam em hospedeiros Linux. No Windows e no macOS o Docker roda dentro de uma máquina virtual e não repassa discos físicos. Use um arquivo de imagem.
  • A interface gráfica não é servida pelo container. O guara ui escuta só em 127.0.0.1 e só aceita esse Host, de propósito; abrir isso para fora enfraqueceria a proteção, então não faz parte da imagem.
  • Arquivos gravados numa pasta montada pertencem ao root, a menos que você passe --user (possível ao trabalhar com arquivos de imagem).

Construir

docker build -t guara .

Arquivos de imagem (qualquer sistema)

Monte a pasta da imagem somente para leitura e outra pasta para os resultados:

docker run --rm \
  -v "$PWD/imagens:/imagens:ro" \
  -v "$PWD/saida:/saida" \
  --user "$(id -u):$(id -g)" \
  guara scan /imagens/disco.img --session /saida/s.json --list

docker run --rm \
  -v "$PWD/imagens:/imagens:ro" -v "$PWD/saida:/saida" \
  --user "$(id -u):$(id -g)" \
  guara recover /saida/s.json /saida/recuperados

Disco físico (hospedeiro Linux)

Passe o dispositivo somente para leitura com a opção :r. O Docker passa a bloquear escritas nele no nível do kernel, além de o Guará nunca gravar na origem:

docker run --rm \
  --device=/dev/sdb:/dev/sdb:r \
  -v /mnt/outro-disco/saida:/saida \
  guara scan /dev/sdb --session /saida/s.json --list
  • O destino precisa estar em outro disco que não seja o /dev/sdb.
  • Ler dispositivo bruto exige root dentro do container, então não use --user aqui.
  • Verificado localmente com um dispositivo de loop (Linux): inspect, scan e recover leem através de --device=...:r, e uma tentativa de escrita (dd of=/dev/loop0) falha com Operation not permitted. Dispositivos de loop ficam ocultos no guara devices, como outros dispositivos virtuais, então informe o caminho explicitamente; um pendrive real aparece na lista.
  • O SMART depende do hospedeiro, do controlador e do dispositivo. --cap-add=SYS_RAWIO é o complemento usual quando só --device não basta, mas isso não foi verificado com um dispositivo de loop, que não tem dados SMART.
  • Evite --privileged: ele dá ao container acesso a todos os dispositivos.

Outros comandos

Tudo da referência do terminal funciona do mesmo jeito, por exemplo:

docker run --rm --device=/dev/sdb:/dev/sdb:r guara devices
docker run --rm --device=/dev/sdb:/dev/sdb:r guara health /dev/sdb