Troubleshooting — Docker¶
Exécution Docker très lente sur WSL2¶
Symptôme : compute sur quelques fichiers prend plusieurs secondes.
Sur 1000+ fichiers, c'est inutilisable.
Cause : trois facteurs cumulés :
- Overhead de démarrage du conteneur (~1-2s par appel)
- b3sum appelé une fois par fichier (pas en batch)
- Accès aux volumes WSL2 via un pont réseau lent (filesystem Windows bridgé)
Solution recommandée : installer les dépendances nativement dans WSL2.
hash-tool bascule automatiquement en mode natif si b3sum et jq sont disponibles.
# Ubuntu / WSL2
sudo apt-get install -y jq
sudo wget https://github.com/BLAKE3-team/BLAKE3/releases/latest/download/b3sum_linux_x64_musl \
-O /usr/local/bin/b3sum
sudo chmod +x /usr/local/bin/b3sum
# Vérifier le mode actif
bash hash-tool check-env
# -> Exécution native active
Gain de performance typique en mode natif sur WSL2 : 10x à 100x selon le volume.
Fichiers .b3 non créés sur l'hôte après compute¶
Symptôme : compute affiche Base enregistrée mais aucun fichier .b3
n'apparaît dans le dossier hôte.
Cause 1 — version antérieure à 2.0.2 : bug dans _run_docker_integrity —
le chemin passé au conteneur manquait le préfixe /bases/. La base était écrite
dans /app à l'intérieur du conteneur au lieu de /bases monté.
Solution : mettre à jour vers la version ≥ 2.0.2.
Cause 2 — chemin hôte relatif dans -v : Docker exige des chemins absolus
pour les montages de volumes.
Diagnostic :
# Tester l'accès au volume depuis l'intérieur du conteneur
docker run --rm -v "$(pwd)/bases":/bases hash_tool shell
ls /bases
Solution :
# Utiliser $(pwd) pour résoudre en absolu
docker run --rm \
-v "$(pwd)/data":/data:ro \
-v "$(pwd)/bases":/bases \
hash_tool compute /data /bases/hashes.b3
Permission denied sur /bases ou /resultats¶
Symptôme : erreur Permission denied lors de l'écriture du .b3 ou des résultats.
Cause : le conteneur Alpine tourne en root (UID 0). Si le dossier hôte appartient à un autre utilisateur avec des permissions restrictives, l'écriture échoue.
Diagnostic :
Solution 1 : faire tourner le conteneur avec l'UID de l'utilisateur hôte :
docker run --rm \
--user "$(id -u):$(id -g)" \
-v /srv/bases:/bases \
hash_tool compute /data /bases/hashes.b3
Solution 2 : élargir les permissions du dossier hôte (moins recommandé) :
/data monté en :ro mais compute échoue¶
Symptôme : Permission denied sur l'écriture du .b3.
Cause : tentative d'écrire la base dans /data monté en lecture seule.
compute doit écrire dans /bases, pas dans /data.
Solution : séparer les volumes source et bases :
# Mauvais — compute ne peut pas écrire dans /data:ro
docker run --rm \
-v /srv/donnees:/data:ro \
hash_tool compute /data /data/hashes.b3
# Correct — base écrite dans /bases séparé
docker run --rm \
-v /srv/donnees:/data:ro \
-v /srv/bases:/bases \
hash_tool compute /data /bases/hashes.b3
Fallback Docker non déclenché¶
Symptôme : check-env signale EXEC_MODE=none alors que Docker est installé
et b3sum est absent.
Cause : _docker_available() vérifie docker image inspect hash_tool —
si l'image n'est pas buildée localement, le fallback ne s'active pas.
Solution :
ARM64 / NAS Synology : exec format error¶
Symptôme : exec format error ou standard_init_linux.go: exec user process
caused: exec format error au lancement du conteneur.
Cause : image buildée pour amd64, exécutée sur un hôte arm64.
Diagnostic :
# Architecture de l'hôte
uname -m
# aarch64 -> ARM64
# Architecture de l'image
docker image inspect hash_tool | grep Architecture
Solution : builder l'image pour la bonne architecture :
Puis adapter la variable HASH_TOOL_DOCKER_IMAGE :
Chemins /mnt/c/ non montés correctement (WSL2)¶
Symptôme : compute tourne sans erreur mais les fichiers .b3 n'apparaissent
pas dans le dossier Windows attendu, ou verify ne trouve pas les données.
Cause : Docker Desktop sur WSL2 ne monte pas les chemins /mnt/c/... (filesystem
Windows) comme volumes Docker de manière fiable.
Solution : travailler exclusivement dans le filesystem Linux natif :
# Mauvais
cd /mnt/c/Users/moi/Documents/hash-tool
bash hash-tool compute -data /mnt/c/Users/moi/Documents/donnees ...
# Correct
cd ~/hash-tool
bash hash-tool compute -data ~/donnees ...
Si les fichiers doivent rester sur Windows, copier les résultats après exécution :