docker.user и права томов, «нет утилиты» внутри и OOM/137OpenClaw Gateway в Docker/Compose у вас уже идёт, а при включении песочницы агента всплывают неподнявшиеся контейнеры, рабочая зона только для чтения, нет команды внутри песочницы, OOM с 137 на сборке. Материал в 2026-типичном виде: порядок выкл → вкл → проверка → разбор, ключи, docker.user и выравнивание прав на том, таблица OOM/137 и ссылки на уже существующие статьи про Docker, тома и doctor. После чтения вы сможете отделить: плохой образ, сбой UID на маунте или лимит по ресурсам и сигнатурам в логе.
Корневая причина — граница процесса:
brew install на хосте, не окажется в PATH песочницы без слоя в образе или маунта.Permission denied / EROFS.| Режим | Для чего | Цена | Расхожий промах |
|---|---|---|---|
| Docker-песочница | Жёстко изолировать непроверенные скрипты, чистая среда | образ, pull/сборка, UID/тома | думать, что хостовый PATH унаследуется |
| SSH/удалённый shell | Запуск на доверённом удалённом Mac с полной цепочкой | плечо атаки, тяжёлые роли | подмена ноутбука песочницей |
| Без песочницы | интранет, низкий риск, быстрый разбор | код, который исполняет модель, остаётся рискованным | должное отключение в CI/проде |
agents.defaults.sandbox.docker и sandbox-setup.shДва слоя: какой движок песочницы (образ/рантайм) и откуда образ. В репозитории обычно scripts/sandbox-setup.sh для сборки/скачивания образа, который видит docker на хосте. agents.defaults.sandbox.docker.image — тот, на котором крутится сессия. Расхождение: Gateway думает, что песочница включена, а docker run даёт manifest not found или pull access denied.
Где смотреть в других статьях? OPENCLAW_IMAGE / Control UI — Docker+GHCR. Тома, права, персистентность, Skills — чеклист по томам. Здесь: только песочница и OOM/137.
docker.user и маунт OPENCLAW_HOME: ориентир по симптому, а не chmod 777 подрядРекомендуемый порядок:
docker.user как дописываемый UID:GID (по документации; в версиях вложенность под sandbox.docker);chown всего репозитория — подкаталог для маунта, а не весь диск.На Linux и на удалённом Mac именованные/ bind-тома, метки SELinux усиливают эффект «в Compose смотрелось нормально, внутри — нет». Берите первую строку I/O-ошибки из логов Gateway/песочницы, а не случайные оживления в чате.
PATH из образа? docker exec + command -v важнее догадок.~/.cache)? Логичнее кэш в образе/общем слое, а не дырка с хоста.HTTP(S)_PROXY; сеть часто сыпется как «command not found».exit 137: «убили» и «мало памяти»137 = 128 + 9 (SIGKILL) часто связывают с OOM, но встречается и docker kill вручную, и лимит по памяти cgroup. В разборе: docker build vs docker run, параллельные сборки в Docker Desktop/VM, на удалённом Mac — реальная свободная RAM и swap, а не лимит одного контейнера. Отдельно: код 1/2 + много Cannot allocate memory в одном пакете с кратким запасом RAM/темп-диском.
При OOM на сборке: снизить параллелизм, многостадийная сборка, больше памяти у VM, выделенный удалённый Mac с запасом RAM как стабильный фундамент — другое, чем «случайно влезли IDE+локальная LLM+Docker на ноутбуке». Общее хранилище: inode, мелкие файлы могут «под OOM» подвисать — сегменты томов, политика уборки.
sandbox-setup, имя и id образа встык с конфигом.docker.user + маунты — по одной переменной, с diff, чтобы не потерять откат.{
"agents": {
"defaults": {
"sandbox": { "mode": "docker" },
"docker": { "user": "1000:1000" }
}
}
}
// Вынесено в sandbox.docker в вашей сборке — проверяйте doctor/доку
docker events/движок, и memory pressure — не путать прикладной OOM с docker build в параллель.chown -R 1000:1000 в одной папке проекта и «сдвиг домашки» — разные риски; тикет и откат.pip индекса, скачивания без кэш-слоя: «один раз сработало» ≠ «сто раз»; цифру первого старта в таблицу ёмкости.Как правило, проигрыш по одновременным пикам RAM и I/O и воспроизводимой среде. Когда в проде 7×24 Gateway+песочница нужны, а стабильных инструментов выделенного Apple Silicon в облаке, диск- и лог-регламента, предсказуемой аренды больше, облачные Mac MACCOME лучше бьют в длительно живущий OpenClaw — вы меньше воюете с локальной случайностью и больше отдаёте время цепочке и релизу.
Вопросы
В песочнице нет команды, поставленной на хосте. Что делать?
Внедрить в образ или смонтировать пути, обновить PATH по политике. Сходно с MCP/Skills-разбором, но граница — контейнер.
Код 137 — всегда OOM?
Необязательно. Разделите cgroup, системный OOM, ручной kill; взять кривую памяти. Начните с официального doctor/«нет ответа» по чтению логов.
Сначала песочница или Mac в облаке с большой RAM?
Сначала изоляция или нехватка объёма — на минимальном воспроизведении. 137 исчез с большим Docker/памятью — ресурс. Всегда ненадёжный код — песочница+политика. Тарифы: аренда Mac, цены и, для заказа, Сингапур.