Подходит ли мне Docker?
- Да: вам нужна изолированная одноразовая среда Gateway или запуск OpenClaw на хосте без локальных установок.
- Нет: вы запускаете OpenClaw на своей машине и хотите самый быстрый цикл разработки. Вместо этого используйте обычный процесс установки.
- Примечание о песочнице: стандартный бэкенд песочницы использует Docker, когда песочница включена, но песочница по умолчанию отключена и не требует запуска всего Gateway в Docker. Также доступны бэкенды песочницы SSH и OpenShell. См. Песочница.
Предварительные требования
- Docker Desktop (или Docker Engine) + Docker Compose v2
- Минимум 2 ГБ ОЗУ для сборки образа (
pnpm installможет быть завершен из-за нехватки памяти на хостах с 1 ГБ с кодом выхода 137) - Достаточно места на диске для образов и журналов
- При запуске на VPS/публичном хосте изучите
Усиление безопасности для сетевой доступности,
особенно политику файрвола Docker
DOCKER-USER.
Контейнеризированный Gateway
Соберите образ
openclaw/openclaw для хостов, предпочитающих Docker Hub:ghcr.io/openclaw/openclaw или openclaw/openclaw. Избегайте зеркал
Docker Hub от сообщества, потому что OpenClaw не контролирует их сроки релизов,
пересборки или политику хранения. Распространенные официальные теги: main, latest,
<version> (например, 2026.2.26) и бета-версии, такие как
2026.2.26-beta.1. Бета-теги не перемещают latest или main.Повторный запуск без доступа к сети
--offline проверяет, что OPENCLAW_IMAGE уже существует локально, отключает
неявные загрузки и сборки Compose, затем выполняет обычный процесс настройки, включая
синхронизацию .env, исправление разрешений, первичную настройку, синхронизацию конфигурации Gateway
и запуск Compose.Если задано OPENCLAW_SANDBOX=1, офлайн-настройка также проверяет настроенный стандартный
образ песочницы и активные образы песочницы для каждого агента в демоне за
OPENCLAW_DOCKER_SOCKET. Браузерные образы на базе Docker также должны содержать
текущую метку контракта браузера OpenClaw. Если обязательный образ отсутствует или
несовместим, настройка завершается без изменения конфигурации песочницы вместо
сообщения об успехе с неработоспособной песочницей.Завершите первичную настройку
- запросит API-ключи провайдера
- сгенерирует токен Gateway и запишет его в
.env - создаст каталог секретного ключа auth-profile
- запустит Gateway через Docker Compose
openclaw-gateway. openclaw-cli предназначен для команд, которые вы запускаете после того,
как контейнер Gateway уже существует.Откройте интерфейс управления
http://127.0.0.1:18789/ в браузере и вставьте настроенный
общий секрет в Settings. Скрипт настройки по умолчанию записывает токен в .env;
если вы переключите конфигурацию контейнера на аутентификацию по паролю, используйте
вместо него этот пароль.Нужен URL еще раз?Ручной процесс
Если вы предпочитаете выполнять каждый шаг самостоятельно, а не использовать скрипт настройки:docker compose из корня репозитория. Если вы включили OPENCLAW_EXTRA_MOUNTS
или OPENCLAW_HOME_VOLUME, скрипт настройки записывает docker-compose.extra.yml;
добавьте его после любого стандартного файла переопределения, например
-f docker-compose.yml -f docker-compose.override.yml -f docker-compose.extra.yml,
когда существуют оба файла переопределения.openclaw-cli использует сетевое пространство имен openclaw-gateway, это
инструмент после запуска. До docker compose up -d openclaw-gateway выполняйте первичную настройку
и записи конфигурации на этапе настройки через openclaw-gateway с
--no-deps --entrypoint node.Переменные окружения
Скрипт настройки принимает следующие необязательные переменные окружения:| Переменная | Назначение |
|---|---|
OPENCLAW_IMAGE | Использовать удаленный образ вместо локальной сборки |
OPENCLAW_IMAGE_APT_PACKAGES | Установить дополнительные apt-пакеты во время сборки (через пробел) |
OPENCLAW_IMAGE_PIP_PACKAGES | Установить дополнительные пакеты Python во время сборки (через пробел) |
OPENCLAW_EXTENSIONS | Предварительно установить зависимости Plugin во время сборки (имена через пробел) |
OPENCLAW_EXTRA_MOUNTS | Дополнительные bind-mount с хоста (через запятую source:target[:opts]) |
OPENCLAW_HOME_VOLUME | Сохранять /home/node в именованном томе Docker |
OPENCLAW_SANDBOX | Включить начальную настройку песочницы (1, true, yes, on) |
OPENCLAW_SKIP_ONBOARDING | Пропустить интерактивный шаг первичной настройки (1, true, yes, on) |
OPENCLAW_DOCKER_SOCKET | Переопределить путь к сокету Docker |
OPENCLAW_DISABLE_BONJOUR | Отключить рекламу Bonjour/mDNS (по умолчанию 1 для Docker) |
OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS | Отключить bind-mount-наложения исходного кода встроенных Plugin |
OTEL_EXPORTER_OTLP_ENDPOINT | Общая конечная точка коллектора OTLP/HTTP для экспорта OpenTelemetry |
OTEL_EXPORTER_OTLP_*_ENDPOINT | Конечные точки OTLP для отдельных сигналов: трасс, метрик или журналов |
OTEL_EXPORTER_OTLP_PROTOCOL | Переопределение протокола OTLP. Сегодня поддерживается только http/protobuf |
OTEL_SERVICE_NAME | Имя сервиса, используемое для ресурсов OpenTelemetry |
OTEL_SEMCONV_STABILITY_OPT_IN | Включить новейшие экспериментальные семантические атрибуты GenAI |
OPENCLAW_OTEL_PRELOADED | Не запускать второй SDK OpenTelemetry, если один уже предварительно загружен |
brew; эти зависимости должны быть предоставлены пользовательским образом
или установлены вручную. Для зависимостей, доступных из пакетов Debian, используйте
OPENCLAW_IMAGE_APT_PACKAGES во время сборки образа. Устаревшее имя
OPENCLAW_DOCKER_APT_PACKAGES по-прежнему принимается.
Для зависимостей Python используйте OPENCLAW_IMAGE_PIP_PACKAGES. Это выполняет
python3 -m pip install --break-system-packages во время сборки образа, поэтому закрепляйте
версии пакетов и используйте только доверенные индексы пакетов.
Сопровождающие могут тестировать исходный код встроенного Plugin с упакованным образом, смонтировав
один каталог исходного кода Plugin поверх его упакованного пути исходного кода, например
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro.
Этот смонтированный каталог исходного кода переопределяет соответствующий скомпилированный
бандл /app/dist/extensions/synology-chat для того же идентификатора Plugin.
Наблюдаемость
Экспорт OpenTelemetry выполняется из контейнера Gateway наружу к вашему коллектору OTLP. Он не требует опубликованного порта Docker. Если вы собираете образ локально и хотите, чтобы встроенный экспортер OpenTelemetry был доступен внутри образа, добавьте его runtime-зависимости:@openclaw/diagnostics-otel из ClawHub в
упакованных установках Docker перед включением экспорта. Пользовательские образы, собранные из исходного кода, могут
по-прежнему включать локальный исходный код Plugin с
OPENCLAW_EXTENSIONS=diagnostics-otel. Чтобы включить экспорт, разрешите и включите
Plugin diagnostics-otel в конфигурации, затем задайте
diagnostics.otel.enabled=true или используйте пример конфигурации в Экспорт OpenTelemetry
. Заголовки аутентификации коллектора настраиваются через
diagnostics.otel.headers, а не через переменные окружения Docker.
Метрики Prometheus используют уже опубликованный порт Gateway. Установите
clawhub:@openclaw/diagnostics-prometheus, включите Plugin
diagnostics-prometheus, затем собирайте метрики:
/metrics или неаутентифицированный путь reverse-proxy. См.
Метрики Prometheus.
Проверки работоспособности
Конечные точки проб контейнера (аутентификация не требуется):HEALTHCHECK, который опрашивает /healthz.
Если проверки продолжают завершаться ошибкой, Docker помечает контейнер как unhealthy, и
системы оркестрации могут перезапустить или заменить его.
Аутентифицированный глубокий снимок состояния:
LAN и loopback
scripts/docker/setup.sh по умолчанию задает OPENCLAW_GATEWAY_BIND=lan, чтобы доступ с хоста к
http://127.0.0.1:18789 работал через публикацию порта Docker.
lan(по умолчанию): браузер хоста и CLI хоста могут обращаться к опубликованному порту Gateway.loopback: только процессы внутри сетевого пространства имен контейнера могут напрямую обращаться к Gateway.
gateway.bind (lan / loopback / custom /
tailnet / auto), а не псевдонимы хоста вроде 0.0.0.0 или 127.0.0.1.Локальные провайдеры хоста
Когда OpenClaw работает в Docker,127.0.0.1 внутри контейнера — это сам контейнер,
а не ваша хост-машина. Используйте host.docker.internal для AI-провайдеров, которые
работают на хосте:
| Провайдер | URL хоста по умолчанию | URL настройки Docker |
|---|---|---|
| LM Studio | http://127.0.0.1:1234 | http://host.docker.internal:1234 |
| Ollama | http://127.0.0.1:11434 | http://host.docker.internal:11434 |
docker-compose.yml
сопоставляет host.docker.internal с host gateway Docker для Linux Docker
Engine. Docker Desktop уже предоставляет то же имя хоста в macOS и Windows.
Сервисы хоста также должны слушать на адресе, доступном из Docker:
docker run, добавьте
такое же сопоставление хоста самостоятельно, например
--add-host=host.docker.internal:host-gateway.
Бэкенд Claude CLI в Docker
Официальный Docker-образ OpenClaw не предустанавливает Claude Code. Установите и войдите в Claude Code внутри пользователя контейнера, который запускает OpenClaw, затем сохраните домашний каталог этого контейнера, чтобы обновления образа не стирали бинарный файл или состояние аутентификации Claude. Для новых установок Docker включите постоянный том/home/node перед запуском
настройки:
.env перед повторным запуском настройки. Скрипт
настройки сам не читает .env; он перезаписывает .env из текущей оболочки и
значений по умолчанию. Для сгенерированного .env выполните:
.env содержит значения, которые ваша оболочка не может загрузить,
сначала вручную повторно экспортируйте существующие значения, на которые вы
полагаетесь, такие как OPENCLAW_IMAGE, порты, режим привязки,
пользовательские пути, OPENCLAW_EXTRA_MOUNTS, песочница и настройки пропуска
onboarding. Сгенерированный overlay монтирует домашний том как для
openclaw-gateway, так и для openclaw-cli.
Запускайте оставшиеся команды со сгенерированным overlay Compose, чтобы оба
сервиса монтировали сохраненный домашний каталог. Если ваша настройка также
использует docker-compose.override.yml, включите его перед
docker-compose.extra.yml.
Установите Claude Code в этот сохраненный домашний каталог:
claude в
/home/node/.local/bin/claude. Укажите OpenClaw использовать этот путь внутри
контейнера:
claude-cli:
OPENCLAW_HOME_VOLUME сохраняет нативную установку Claude Code в
/home/node/.local/bin и /home/node/.local/share/claude, а также настройки и
состояние аутентификации Claude Code в /home/node/.claude и
/home/node/.claude.json. Сохранения только /home/node/.openclaw
недостаточно для повторного использования Claude CLI. Если вы используете
OPENCLAW_EXTRA_MOUNTS вместо домашнего тома, смонтируйте все эти пути Claude в
оба сервиса Docker.
Bonjour / mDNS
Сетевой мост Docker обычно ненадежно пересылает multicast Bonjour/mDNS (224.0.0.251:5353). Поэтому встроенная настройка Compose по умолчанию задает
OPENCLAW_DISABLE_BONJOUR=1, чтобы Gateway не уходил в цикл сбоев и не
перезапускал рекламу снова и снова, когда мост отбрасывает multicast-трафик.
Для Docker-хостов используйте опубликованный URL Gateway, Tailscale или
wide-area DNS-SD. Задавайте OPENCLAW_DISABLE_BONJOUR=0 только при запуске с
host networking, macvlan или другой сетью, где multicast mDNS заведомо работает.
О подводных камнях и устранении неполадок см. обнаружение Bonjour.
Хранилище и сохранение данных
Docker Compose монтирует bind-mountOPENCLAW_CONFIG_DIR в
/home/node/.openclaw, OPENCLAW_WORKSPACE_DIR в
/home/node/.openclaw/workspace и OPENCLAW_AUTH_PROFILE_SECRET_DIR в
/home/node/.config/openclaw, поэтому эти пути сохраняются при замене
контейнера. Если какая-либо переменная не задана, встроенный
docker-compose.yml использует запасной путь внутри ${HOME} или /tmp, если
сам HOME также отсутствует. Это не дает docker compose up вывести
спецификацию тома с пустым источником в минимальных окружениях.
В этом смонтированном каталоге конфигурации OpenClaw хранит:
openclaw.jsonдля конфигурации поведенияagents/<agentId>/agent/auth-profiles.jsonдля сохраненной OAuth/API-key-аутентификации провайдера.envдля runtime-секретов из переменных окружения, таких какOPENCLAW_GATEWAY_TOKEN
OPENCLAW_CONFIG_DIR.
Установленные загружаемые plugins хранят состояние своих пакетов в смонтированном
домашнем каталоге OpenClaw, поэтому записи об установке plugin и корни пакетов сохраняются при
замене контейнера. Запуск Gateway не создает деревья зависимостей bundled-plugin.
Полные сведения о сохранении данных в развертываниях VM см. в
Среда выполнения Docker VM — что и где сохраняется.
Очаги роста диска: следите за media/, JSONL-файлами сессий, общей
базой данных состояния SQLite, корнями пакетов установленных plugin и ротационными файловыми логами
в /tmp/openclaw/.
Вспомогательные shell-скрипты (необязательно)
Для более удобного повседневного управления Docker установитеClawDock:
scripts/shell-helpers/clawdock-helpers.sh, повторно выполните приведенную выше команду установки, чтобы ваш локальный файл помощника отслеживал новое расположение.
Затем используйте clawdock-start, clawdock-stop, clawdock-dashboard и т. д. Выполните
clawdock-help, чтобы увидеть все команды.
Полное руководство по помощнику см. в ClawDock.
Включить песочницу агента для Docker gateway
Включить песочницу агента для Docker gateway
docker.sock только после успешного выполнения предварительных условий песочницы. Если
настройку песочницы невозможно завершить, скрипт сбрасывает agents.defaults.sandbox.mode
в off. Ходы Codex в code-mode по-прежнему ограничены Codex
workspace-write, пока песочница OpenClaw активна; не монтируйте
сокет Docker хоста в контейнеры песочницы агента.Автоматизация / CI (неинтерактивный режим)
Автоматизация / CI (неинтерактивный режим)
-T:Примечание по безопасности общей сети
Примечание по безопасности общей сети
openclaw-cli использует network_mode: "service:openclaw-gateway", чтобы команды CLI
могли обращаться к gateway через 127.0.0.1. Рассматривайте это как общую
границу доверия. Конфигурация compose удаляет NET_RAW/NET_ADMIN и включает
no-new-privileges как для openclaw-gateway, так и для openclaw-cli.Сбои DNS Docker Desktop в openclaw-cli
Сбои DNS Docker Desktop в openclaw-cli
openclaw-cli
с общей сетью завершаются ошибкой после удаления NET_RAW, что проявляется как
EAI_AGAIN во время команд на основе npm, например openclaw plugins install.
Оставляйте стандартный усиленный compose-файл для обычной работы gateway. Локальное
переопределение ниже ослабляет профиль безопасности контейнера CLI, восстанавливая
стандартные возможности Docker, поэтому используйте его только для одноразовой команды CLI,
которой нужен доступ к реестру пакетов, а не как стандартный вызов Compose:openclaw-cli, пересоздайте его
с тем же переопределением. docker compose exec и docker exec не могут
изменить возможности Linux в уже созданном контейнере.Разрешения и EACCES
Разрешения и EACCES
node (uid 1000). Если вы видите ошибки разрешений для
/home/node/.openclaw, убедитесь, что ваши bind mount на хосте принадлежат uid 1000:blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
с последующим plugin present but blocked. Это означает, что uid процесса и владелец
смонтированного каталога plugin не совпадают. Предпочтительно запускать контейнер от
стандартного uid 1000 и исправить владельца bind mount. Выполняйте chown
/path/to/openclaw-config/npm на root:root только если вы намеренно запускаете
OpenClaw от root в долгосрочной перспективе.Более быстрые пересборки
Более быстрые пересборки
pnpm install повторно, пока lockfile не изменятся:Параметры контейнера для опытных пользователей
Параметры контейнера для опытных пользователей
node. Для более
полнофункционального контейнера:- Сохраняйте
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - Встройте системные зависимости:
export OPENCLAW_IMAGE_APT_PACKAGES="git curl jq" - Встройте зависимости Python:
export OPENCLAW_IMAGE_PIP_PACKAGES="requests==2.32.5 humanize==4.14.0" - Встройте Playwright Chromium:
export OPENCLAW_INSTALL_BROWSER=1 - Или установите браузеры Playwright в сохраняемый том:
- Сохраняйте загрузки браузера: используйте
OPENCLAW_HOME_VOLUMEилиOPENCLAW_EXTRA_MOUNTS. OpenClaw автоматически обнаруживает управляемый Playwright Chromium из Docker-образа в Linux.
OpenAI Codex OAuth (безголовый Docker)
OpenAI Codex OAuth (безголовый Docker)
Метаданные базового образа
Метаданные базового образа
node:24-bookworm-slim и включает tini как процесс инициализации точки входа (PID 1), чтобы процессы-зомби удалялись, а сигналы корректно обрабатывались в долгоживущих контейнерах. Он публикует аннотации базового OCI-образа, включая org.opencontainers.image.base.name,
org.opencontainers.image.source и другие. Базовый digest Node
обновляется через PR Dependabot для базового Docker-образа; релизные сборки не запускают
слой обновления дистрибутива. См.
аннотации OCI-образов.Запуск на VPS?
См. Hetzner (Docker VPS) и среду выполнения Docker VM для общих шагов развертывания VM, включая встраивание бинарных файлов, сохранение данных и обновления.Песочница агента
Когдаagents.defaults.sandbox включен с бэкендом Docker, gateway
запускает выполнение инструментов агента (shell, чтение/запись файлов и т. д.) внутри изолированных Docker-контейнеров,
а сам gateway остается на хосте. Это дает жесткую границу
вокруг недоверенных или многопользовательских сессий агентов без контейнеризации всего
gateway.
Область песочницы может быть для каждого агента (по умолчанию), для каждой сессии
или общей. Каждая область получает собственное рабочее пространство, смонтированное в /workspace.
Также можно настроить политики разрешения/запрета инструментов, изоляцию сети, лимиты ресурсов
и контейнеры браузера.
Полную конфигурацию, образы, заметки по безопасности и многоагентные профили см.:
- Песочница — полный справочник по песочнице
- OpenShell — интерактивный shell-доступ к контейнерам песочницы
- Многоагентная песочница и инструменты — переопределения для каждого агента
Быстрое включение
docker build.
Устранение неполадок
Образ отсутствует или контейнер песочницы не запускается
Образ отсутствует или контейнер песочницы не запускается
scripts/sandbox-setup.sh
(checkout исходников) или inline-команды docker build из Песочница § Образы и настройка (установка npm),
либо задайте agents.defaults.sandbox.docker.image для своего пользовательского образа.
Контейнеры автоматически создаются для каждой сессии по требованию.Ошибки разрешений в песочнице
Ошибки разрешений в песочнице
docker.user в UID:GID, соответствующий владельцу смонтированного рабочего пространства,
или выполните chown для папки рабочего пространства.Пользовательские инструменты не найдены в песочнице
Пользовательские инструменты не найдены в песочнице
sh -lc (login shell), который загружает
/etc/profile и может сбросить PATH. Установите docker.env.PATH, чтобы добавить ваши
пути пользовательских инструментов в начало, или добавьте скрипт в /etc/profile.d/ в вашем Dockerfile.OOM-killed во время сборки образа (exit 137)
OOM-killed во время сборки образа (exit 137)
Требуется авторизация или сопряжение в Control UI
Требуется авторизация или сопряжение в Control UI
Цель Gateway показывает ws://172.x.x.x или ошибки сопряжения из Docker CLI
Цель Gateway показывает ws://172.x.x.x или ошибки сопряжения из Docker CLI
Связанные материалы
- Обзор установки — все способы установки
- Podman — альтернатива Docker на базе Podman
- ClawDock — настройка Docker Compose от сообщества
- Обновление — поддержание OpenClaw в актуальном состоянии
- Конфигурация — конфигурация gateway после установки