docker.user, droits de volume, outils absents, OOM/137Avec OpenClaw Gateway déjà sur Docker, activer le sandbox agent mène à conteneurs en échec, workspace en lecture seule, outils inconnus côté conteneur, 137 OOM en build. Ici, 2026, séquence exécutable arrêt, marche, vérif, triage, réglage docker.user et volumes, tableau OOM et découpage clair vis-à-vis de nos pages Docker, volumes, doctor. Vous distinguez mauvaise image, décalage UID, limite+logs.
La vraie cause est la frontière de processus :
brew n’entre pas dans le PATH du conteneur sans couche ou montage supplémentaire.Permission denied / EROFS.| Mode | Pour | Coût | Idée reçue |
|---|---|---|---|
| Sandbox Docker | isoler sévèrement des scripts non sûrs et reproductibilité | image, téléchargement, build, appariement UID/volume | les outils hôte s’importent d’office |
| SSH à distance | Mac distant de confiance avec toute la chaîne d’outils | plus grande surface, comptes lourds | confondre le poste de dév avec l’audit |
| Aucun sandbox | intranet, dépan. rapide | l’exécution par le modèle reste risquée | désactiver partout, y compris en CI |
agents.defaults.sandbox.docker + sandbox-setup.shDeux couches : l’implémentation de sandbox (image, runtime) et la provenance de l’image, souvent scripts/sandbox-setup.sh pour pré-construire / tirer l’image. agents.defaults.sandbox.docker.image est l’image de session ; s’ils divergent, on voit manifest not found / pull access denied tandis que l’UI croit le sandbox allumé.
Autre article ? Bloqué sur OPENCLAW_IMAGE : Docker+GHCR. Données, volume, perm, Skills, persistance : checklist volumes. Cette page: sous-système sandbox + 137 OOM uniquement.
docker.user + montage OPENCLAW_HOME : lire le symptôme, éviter chmod 777 massifOrdre recommandé :
docker.user sur un UID:GID cohérent avec l’écriture sur le volume (selon la doc ; parfois la clé est sous sandbox.docker).chown de tout le dépôt, ajuster plutôt un sous-répertoire monté dans le conteneur, pas tout le disque.Sur Linux et Mac distant, volumes nommés vs bind, étiquettes SELinux (certaines distros) amplifient le « juste dans Compose, faux dans le conteneur ». Lire la première ligne d’erreur I/O des logs Gateway et sandbox, pas des essais au hasard côté modèle.
PATH de l’image ? En docker exec, command -v vaut mieux qu’un avis par téléphone.~/.cache) ? Préférer le cache intégré à l’image ou une couche partagée, plutôt qu’un découpage ad hoc de l’hôte.HTTP(S)_PROXY manquant : les pannes réseau se lisent parfois comme command not found.exit 137 : « tué » et « mémoire insuffisante » dans Docker137 = 128 + 9 (SIGKILL) : souvent le tueur OOM, mais aussi docker kill manuel ou plafond mémoire cgroup. En triage : phase de build (docker build vs docker run) ; builds concurrents sur la VM Docker ; sur un Mac distant, RAM réellement libre et swap, pas seulement la limite d’un conteneur. Même file pour des codes 1/2 avec beaucoup de Cannot allocate memory (mémoire ou disque temporaire), sans boucle infinie de réglages côté modèle.
En cas d’OOM au build, ordre fréquent : réduire le parallélisme (--parallel …), build multi-étapes, augmenter la mémoire de la VM Docker, ou s’appuyer sur un Mac cloud dédié avec plus de mémoire comme base stable (autre nature qu’un laptop où IDE, modèle local et Docker se croisent par chance). Avec stockage partagé, surveiller aussi métadonnées et éclatement de petits fichiers (effet OOM) : volumes séparés ou nettoyage.
sandbox-setup fourni, construire ou tirer, et conserver le nom et l’ID d’image en accord avec la config.docker.user et montages : une seule variable à la fois, diff tracé pour pouvoir revenir en arrière.{
"agents": {
"defaults": {
"sandbox": { "mode": "docker" },
"docker": { "user": "1000:1000" }
}
}
}
// Souvent imbriqué sous sandbox.docker ; lancer openclaw doctor
docker events / journal moteur, memory pressure hôte — éviter d’identifier une OOM métier avec une OOM de docker build en parallèle.chown -R 1000:1000 sur un dépôt projet n’est pas le même risque qu’un déménagement de tout le répertoire perso : ticket + point de repli.pip, téléchargements répétés sans couche persistante → chiffrer un premier démarrage en revue de capacité.Pic mémoire+IO, cadre d’environnement délicat : production agent voit 137+amplification écriture. Besoin 7j/7 Gateway+Sandbox : cloud Apple Silicon dédié, règles disque/log, période déterminée. MACCOME Mac distant : socle OpenClaw fiable, moins de bataille locale, plus d’outillage produit.
FAQ
Le bac à sable ne trouve pas une commande installée sur l’hôte. Que faire ?
Installer l’outil dans l’image du sandbox ou ajuster les couches, ou monter d’autres répertoires et mettre à jour PATH selon la politique. Même idée qu’en vérification MCP/Skills côté Gateway, mais la frontière est ici celle du conteneur.
Le code 137 signifie-t-il toujours OOM ?
Non. Distinguer plafond cgroup, OOM système, arrêt manuel ; conserver mémoire moteur et mémoire hôte sur le même intervalle. Pour lire les logs en routine : doctor / pas de réponse.
D’abord activer le sandbox ou un Mac cloud avec plus de mémoire ?
D’abord prouver avec un minimum reproductible si c’est l’isolation ou la capacité brute qui manque. Si 137 disparaît quand on augmente la mémoire allouée à Docker ou au moteur, c’est la ressource ; si le code n’est jamais de confiance, c’est gouvernance + sandbox. Tarifs publics : location Mac ; référence commande : Singapour.