Docker Sandboxes позволяют запустить OpenClaw — open-source AI-агент — в полностью изолированной среде с локальной языковой моделью: без API-ключей, без облачных расходов и с надёжной защитой хоста.
Что такое OpenClaw и почему важна безопасность?
OpenClaw — это open-source AI-агент для разработчиков, который умеет читать и редактировать файлы, выполнять shell-команды, взаимодействовать с браузером и внешними сервисами. Именно эти широкие возможности делают его потенциально опасным при небрежной настройке: известны случаи WebSocket-уязвимостей, вредоносных плагинов в маркетплейсе и более 30 000 публично открытых инстансов в сети.
Docker Sandboxes решают эту проблему элегантно: агент работает внутри изолированной micro VM, видит только разрешённые файлы и хосты, а API-ключи никогда не попадают внутрь контейнера — их подставляет сетевой прокси снаружи.
Быстрый старт: запуск за 2-3 команды
Для начала убедитесь, что у вас установлен Docker Desktop, а в настройках активирован Docker Model Runner (Settings → Docker Model Runner → Enable). Затем скачайте локальную модель:
docker model pull ai/gpt-oss:20B-UD-Q4_K_XL
Создайте и запустите sandbox:
docker sandbox create --name openclaw -t olegselajev241/openclaw-dmr:latest shell .
docker sandbox network proxy openclaw --allow-host localhost
docker sandbox run openclaw
Внутри sandbox запустите стартовый скрипт:
~/start-openclaw.sh
Готово — перед вами терминальный UI OpenClaw, который общается с локальной моделью прямо на вашем компьютере. Модель работает через Docker Model Runner, агент изолирован, сеть ограничена прокси.
Поддержка облачных моделей
Если вы хотите использовать облачные провайдеры (Anthropic, OpenAI), это тоже работает «из коробки». Сетевой прокси sandbox автоматически подставит переменные ANTHROPIC_API_KEY или OPENAI_API_KEY из хост-окружения — агент никогда не увидит сами ключи и не сможет их похитить. При этом команда --allow-host localhost для облачных моделей не нужна вовсе.
Это даёт гибкость: бесплатные локальные модели — для экспериментов, облачные — для продуктивной работы, и всё это в одной и той же защищённой среде.
Выбор модели
Стартовый скрипт автоматически определяет все доступные в Docker Model Runner модели. Вы можете посмотреть список:
~/start-openclaw.sh list
Или явно указать конкретную модель:
~/start-openclaw.sh ai/qwen2.5:7B-Q4_K_M
Любая модель, загруженная через docker model pull, становится доступна мгновенно.
Как это работает внутри
Преднастроенный образ olegselajev241/openclaw-dmr:latest основан на базовом шаблоне sandbox и содержит три дополнения: Node.js 22, сам OpenClaw и небольшой сетевой мост.
Мост нужен из-за особенности сети: Docker Model Runner на хосте слушает localhost:12434, но localhost внутри sandbox — это сам контейнер, а не хост. При этом Node.js (основа OpenClaw) не поддерживает переменную HTTP_PROXY. Поэтому между агентом и моделью работает ~20-строчный bridge-скрипт, который перенаправляет запросы через прокси sandbox:
OpenClaw → bridge (localhost:54321) → proxy (host.docker.internal:3128) → Model Runner (host localhost:12434)
Это решение прозрачно для пользователя и не требует ручной настройки.
Сборка собственного образа
Если вы хотите кастомизировать среду, весь процесс сборки открыт. Алгоритм следующий:
- Создать базовый sandbox и установить внутрь Node.js 22 и OpenClaw через
npm install -g openclaw@latest. - Добавить bridge-скрипт для перенаправления запросов к Model Runner.
- Настроить конфиг OpenClaw, указав кастомный провайдер
docker-model-runnerс нужной моделью. - Сохранить готовый контейнер как образ:
docker sandbox save my-openclaw my-openclaw-image:latest - Опубликовать в реестре и передать коллегам — они запустят идентичную среду одной командой.
Итоги: зачем это нужно на практике?
Docker Sandboxes + OpenClaw + Docker Model Runner — это готовая связка для команд, которым важны три вещи одновременно: приватность (модель на локальном железе, ключи не утекают), безопасность (агент изолирован, не может повредить хост или подключиться к нежелательным ресурсам) и воспроизводимость (образ sandbox можно сохранить и раздать всей команде). При этом переключение между локальными и облачными моделями не требует изменения архитектуры — только смена настройки в интерфейсе OpenClaw.
Original https://www.docker.com/blog/run-openclaw-securely-in-docker-sandboxes/