Команды, которые запускают OpenClaw Gateway в Docker / Compose, редко тратят больше всего времени на pull образов — чаще на перезапуски, обновления или docker compose down, которые стирают сопряжение и конфиг, или на каталоги Skills только для чтения с потоком Permission denied, не совпадающим с сетевыми пунктами официального troubleshooting. Статья дополняет сетевую триажу Docker, триажу doctor после установки, прод-ранбук Docker и Gateway и безнадзорную эксплуатацию удалённых Mac: шесть ловушек томов/прав, две таблицы «что персистить» против антипаттернов, матрица симптом→команда→исправление, готовые фрагменты inspect, шестишаговый ранбук и три метрики для дашбордов. Порядок триажа: сначала тома и UID/GID, затем сеть и обратные прокси.
Образы — неизменяемые шаблоны; исчезает только состояние, записанное в записываемый слой, анонимные тома или неперсистентные пути. Фиксируйте сигналы ниже в тикетах изменений и проверяйте их на одной линии с правками Compose и тегами образов.
down -v или скрипты очистки удаляют кэши сопряжения, даже если «в git ничего не менялось».user — типичный провал.:ro «ради безопасности» блокирует кэши токенов или локальное состояние, которое ожидает апстрим; сбои могут быть незаметны до перезапуска.docker commit заманчив, но обновления или смена тега всё равно отбрасывают этот слой — в проде избегайте.Если сетевая триажа всё ещё показывает прерывистый успех CLI и гарантированный сбой после перезапуска, вернитесь сюда и проверьте, что именованные тома лежат на ожидаемом диске и пользователь процесса может писать в Skills, прежде чем трогать network_mode или прокси.
Точные подпути следуют вашему образу и документации; таблица задаёт три инженерных вопроса: переживает ли жизненный цикл контейнера, нужен ли бэкап, общий только для чтения? Фиксируйте ответы в README и онколл-плейбуках.
| Класс | Типичное персистируемое содержимое | Рекомендуемый шаблон | Антипаттерн |
|---|---|---|---|
| Конфиг и секреты | Эндпоинты Gateway, выбор провайдера, пути к токенам каналов | Bind на хост или именованный том; права под пользователя рантайма | Запекать в образ; хранить там, где синхронизация чистит каталоги |
| Рантайм и сопряжение | Состояние сопряжения устройств и восстановления сессии | Выделенное поддерево bind; tar перед обновлениями | Анонимные тома без описания в Compose; один prune удаляет всё |
| Skills / расширения | Скиллы и скрипты команды | Bind рядом с репозиторием; одинаковые пути в CI и проде | :ro, хотя кэши рантайма должны быть записываемыми; UID не может писать |
| Логи и буферы | Большие логи, выгрузки | Отдельный том или путь на хосте с ротацией | Заполнить записываемый слой до OOM или неожиданной read-only ФС |
Во время проверок логируйте ID образов, имена проектов Compose и томов в одной shell-сессии, чтобы упростить откаты; переиспользуйте страницу чеклиста релиза из прод-ранбука.
| Симптом | Сначала проверить | Типичное исправление | Если всё ещё падает |
|---|---|---|---|
После каждого docker compose up ощущение чистой установки | docker inspect Mounts против ожидаемых путей хоста; недавняя очистка -v | Явные bind или именованные тома; задокументировать, может ли down использовать -v | Убедиться, что вы в правильном каталоге проекта Compose |
| Skills игнорируются или запись не удаётся | id в контейнере против владения на хосте ls -ln | Подстроить user, chmod или выровнять UID в Dockerfile/entrypoint | Проверить, что монтирования не :ro |
| Поток ошибок прав | SELinux/AppArmor на Linux; общий доступ к файлам Docker Desktop на macOS | Linux: оценить метки или :z относительно базовой линии безопасности; macOS: добавить пути в File Sharing | Исключить read-only на уровне диска до возврата к сетевой триаже |
| После bump образа работает наполовину | Смена схемы конфига; старый каталог данных всё ещё смонтирован | Следовать release notes; бэкап перед обновлением | Запустить openclaw doctor против задокументированных breaking changes |
# 1) Попадают ли монтирования на ожидаемые пути хоста? (заменить контейнер)
docker inspect -f '{{ json .Mounts }}' <container> | jq .
# 2) Пользователь рантайма внутри контейнера (сравнить с владельцем на хосте)
docker exec -it <container> id
# 3) Проекты Compose и тома (избежать дрейфа анонимных)
docker compose ls
docker volume ls | grep <project>
# 4) Пример бэкапа bind перед обновлением (путь по договорённости команды)
tar czf openclaw-state-$(date +%Y%m%d).tgz ./openclaw-data/
Заметка: Docker Desktop на удалённых Mac обычно держит bind внутри домашних каталогов пользователей; на Linux в облаке часто нужны другие строки user и модели прав. «Работает на моём ноутбуке» не равно «работает на пуле хостов».
down -v.openclaw doctor и пробы каналов, чтобы избежать ложных отрицаний.Permission denied / EACCES; корреляция с обновлениями Gateway чаще указывает на монтирования, а не провайдеров.Стройте графики рядом с метриками диска и логов из статьи про удалённые Mac — проблемы томов часто видны как рост диска или read-only монтирования до скачков CPU.
Многие команды в 2025–2026 совмещают Gateway и Skills в одном дереве хоста; без квот на чисто логовые поддеревья логи могут заполнить bind и заблокировать запись конфига. Сначала ротация или разделение томов, а не бесконечное пересоздание контейнеров.
Различайте docker compose restart и down/up: первый обычно сохраняет объявленные тома; второй с флагами очистки меняет судьбу данных — держите шпаргалку глаголов в ранбуках.
Права однопользовательского ноутбука отличаются от пулов удалённых хостов с автоматическими логинами; сон, утилиты синхронизации и ручные правки bind делают «вчера работало» невоспроизводимым. OpenClaw как плоскость управления 24/7 требует контрактных путей, откатываемых обновлений и аудируемых прав.
Циклы обучения на личном железе нормальны, но цена в проде — шум пейджеров и мёртвые каналы. Эфемерные scratch-контейнеры без стабильных монтирований умножают области отказа при обновлениях. Командам, которым нужны всегда доступные, удобные для бэкапа и переносимые Gateway, чаще быстрее подходят профессиональные облачные Mac с bare metal Apple Silicon и выбором региона, чем бесконечная настройка личного Docker. MACCOME сдаёт в аренду Mac mini M4 / M4 Pro в нескольких регионах и даёт публичную справку — начните с центра помощи и цен аренды, затем оформляйте региональный заказ.
Совет по раскатке: прогоните проверки таблицы 2 на том же классе хостов, что и в проде (Docker Desktop vs Linux), до подключения каналов и моделей — избегайте дрейфа UID и путей «локально ок, в облаке нет».
Если у вас ещё Kubernetes, поды пересоздаются чаще стеков Compose: всё без PVC исчезает при rolling updates — то же правило явной персистентности, проверяйте через kubectl describe pvc и манифесты монтирования.
FAQ
Чем это отличается от статьи по сетевой триаже Docker?
Сеть — про связность и пространства имён; здесь — про данные на диске и возможность записи. Точки входа установки — гайд по трём платформам. Доступ и цены: центр помощи и цены аренды.
Сначала doctor или тома?
Сначала тома и права, затем doctor, чтобы не получать ложные срабатывания из-за постоянно пересоздаваемых контейнеров. Детали WSL2 — в статье doctor после установки.
Как это сочетается с эксплуатацией удалённых Mac?
Там — launchd/systemd, логи и триаж зависаний; здесь — персистентность Docker и запись. Обе статьи включайте в один обзор изменений и индекс онколла.