Вы только что установили Claude Code, открыли официальную документацию — и на первой же странице встречаете devcontainer, Docker и --dangerously-skip-permissions. Типичная реакция: «Мне нужен ИИ, который пишет код — зачем учить контейнеры?»
Это не попытка Anthropic усложнить жизнь новичкам. Главное отличие от обычного автодополнения: Claude Code реально выполняет команды, меняет несколько файлов, ставит зависимости и запускает тесты. Чем больше возможностей, тем выше риск ошибок и выхода за границы прав. Docker даёт воспроизводимый «забор» — защищает вашу машину и выравнивает окружение в команде.
Этот гайд выстроен по шагам для новичка: зачем рекомендуют Docker → Docker за 30 секунд → официальный devcontainer → первый успешный запуск → когда Docker не нужен. Быть DevOps-экспертом не обязательно.
Коротко: почему Claude Code постоянно упоминает Docker?
Три ключевые причины:
- Изоляция: команды в контейнере по умолчанию не достают до
~/.ssh, облачных ключей и личных файлов — пока вы сами их не смонтируете. - Воспроизводимость: в
.devcontainer/devcontainer.jsonпрописаны версия Node, CLI и прочее. Коллега клонирует репозиторий, пересобирает контейнер — и получает то же окружение. Конец истории «у меня работает, у тебя нет». - Базовая безопасность: в репозитории claude-code Anthropic поддерживает эталонный devcontainer с исходящим файрволом «запретить по умолчанию» (белый список npm, GitHub, API Anthropic и т.д.). Так в документации обоснован запуск агента без присмотра.
В документации Development containers сказано прямо: dev container работает в Docker, редактор (Cursor, VS Code, JetBrains…) подключается к нему. Терминал и сборка — внутри контейнера, редактируемые файлы остаются привязаны к локальному репозиторию. Claude Code тоже работает в контейнере — «рекомендовать Docker» не значит перенести всю разработку в контейнер, а значит выделить агенту ИИ ограниченную площадку.
Для полных новичков: что такое Docker?
Забудьте пока про Kubernetes и микросервисы. Достаточно одной аналогии:
Docker-контейнер = лёгкий одноразовый «мини-компьютер» с куском ОС, Node/Python и нужными инструментами. Он делит CPU с вашей машиной, но файловую систему и сеть можно настроить отдельно.
По сравнению с ВМ контейнеры стартуют быстрее и занимают меньше места. По сравнению с «поставить всё на хост» — контейнер не оставляет мусора, а это важно, когда ИИ за день перебирает десять наборов зависимостей.
Три термина, которые стоит запомнить:
| Термин | Можно представить как | Связь с Claude Code |
|---|---|---|
| Образ (Image) | Снимок окружения / установочный пакет | Официальный Dockerfile задаёт содержимое контейнера |
| Контейнер (Container) | Запущенное мини-окружение | Вы вводите claude — команды выполняются здесь |
| devcontainer | Инструкция, как редактор запускает контейнер | .devcontainer.json + опционально docker-compose.yml |
Общие основы Docker: Docker Get started. Здесь — кратчайший путь именно для Claude Code.
docker compose up в open-source AI-проектах, сначала прочитайте почему AI-туториалы 2026 года предполагают Docker. Эта статья объясняет, зачем Claude Code вписывает Docker в повествование о безопасности, и как настроить первый запуск.
Что внутри официального devcontainer от Anthropic?
Папка .devcontainer/ в anthropics/claude-code — не украшение, а воспроизводимый безопасный шаблон разработки:
devcontainer.json: тома, переменные окружения, расширения VS Code/Cursor, Feature для установки Claude Code;Dockerfile: базовый образ (Debian/Ubuntu), dev-инструменты, пользователь не root;init-firewall.sh: исходящий трафик по умолчанию запрещён, только домены из белого списка — то, что часто забывают в своих Dockerfile.
В документации рекомендуют Claude Code Dev Container Feature. Минимальный пример в devcontainer.json:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
},
"remoteUser": "node",
"mounts": [
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
],
"containerEnv": {
"DISABLE_AUTOUPDATER": "1"
}
}
Обратите внимание на именованный том для ~/.claude в mounts: после пересборки контейнера логин и история сессий сохраняются — не нужно заново проходить аутентификацию.
Если вы уже используете ECC (Everything Claude Code), devcontainer — это «аппаратный слой»: ECC управляет skills и hooks, Docker определяет, на какой файловой системе реально выполняются команды Claude.
Безопасность: почему «пропуск подтверждений» имеет смысл только в контейнере
Claude Code по умолчанию спрашивает подтверждение почти на каждый bash и каждую запись в файл. Для CI или длительных задач без присмотра некоторые добавляют --dangerously-skip-permissions.
Официальная позиция: этот флаг предназначен для hardened devcontainer — не для рабочего стола на хосте. Без подтверждений на хосте ИИ получает неограниченный доступ к вашему домашнему каталогу — удаление файлов, чтение секретов, запросы на любые URL. Контейнерный подход даёт как минимум:
- Границу файловой системы: только каталог проекта + нужные config-тома;
- Границу сети: исходящий файрвол ограничивает назначения;
- Границу пользователя: запуск не от root, ограниченный sudo.
Контейнер — не панацея. Смонтируете ~/.aws или URL продакшн-БД в .env — ИИ их прочитает. Безопасность зависит от того, что вы монтируете, и от доверия к репозиторию. Официально: «Only use dev containers when developing with trusted repositories.»
--dangerously-skip-permissions на хосте. Первое снимает изоляцию, второе — как повесить root-пароль на монитор.
Пошагово: первый запуск Claude Code с Docker
Проверенный путь на macOS / Windows (WSL2) — без предварительного прочтения всей книги по Docker.
Шаг 1: установить Docker Engine
Достаточно одного варианта; в команде важнее единообразие:
- macOS: Docker Desktop (проще всего); на Apple Silicon также Colima или OrbStack — CLI совместим с
docker; - Windows: Docker Desktop с бэкендом WSL2;
- Linux: Docker Engine или rootless Podman (проверьте поддержку devcontainer CLI).
Затем в терминале: docker --version и docker run hello-world — сообщение «Hello from Docker» означает успех.
Шаг 2: подготовить проект и devcontainer
В корне репозитория создайте .devcontainer/. Либо:
- Скопируйте эталон из
anthropics/claude-codeи адаптируйте Dockerfile; либо - В Cursor / VS Code: Dev Containers: Add Dev Container Configuration Files, затем добавьте Claude Code Feature по документации.
Без ручного написания: попросите Claude Code (CLI установлен хотя бы раз локально): «Сгенерируй .devcontainer для этого Node 20 проекта с Feature Claude Code и pnpm.» — затем вручную проверьте объём mount и настройки файрвола.
Шаг 3: открыть проект в контейнере
Cursor / VS Code: палитра команд → Dev Containers: Reopen in Container. Первый раз сборка образа займёт несколько минут; дальше инкрементальный старт быстрее. Изменился prompt оболочки, which node указывает на путь внутри контейнера — вы «в коробке».
Только терминал? Концептуальный пример:
# В корне проекта, если есть docker-compose.yml
docker compose up -d
docker compose exec dev bash
claude
Имя сервиса — из вашего compose-файла; devcontainer стандартизирует этот процесс.
Шаг 4: проверить Claude Code внутри контейнера
В терминале контейнера запустите claude и сделайте что-то простое: «Перечисли scripts из package.json и объясни их». Проверьте:
- Появляются ли изменения файлов в git status на хосте? (bind mount в порядке)
- Показывает ли
cat /etc/os-releaseОС контейнера, а не хоста? - Отклоняется ли доступ к пути, который вы не монтировали?
Всё сходится — изоляция работает. Дальше в командной документации: «Reopen in Container, затем Claude Code» — отдельная установка Node для новичков не нужна.
Когда Docker на самом деле не нужен
Рекомендация ≠ требование. В этих случаях нативный запуск часто проще:
| Сценарий | Рекомендация | Причина |
|---|---|---|
| Пара файлов, вы подтверждаете каждый шаг | Claude Code на хосте | Нет риска без присмотра, нет ожидания сборки |
| Чистый iOS / Swift с тяжёлым Xcode | Xcode на хосте, бэкенд опционально в контейнере | Цепочка Apple не живёт в Linux-контейнере |
| Командный CI, ночные пакетные задачи | devcontainer + skip-permissions | Нужны файрвол и воспроизводимый образ |
| Вклад в open source, коду не доверяете | Обязательно контейнер или отдельная ВМ | Вредоносные скрипты не достанут SSH-ключей |
| Агент на удалённом Linux VPS | Docker Compose или systemd + контейнер | Та же логика, что у локального devcontainer |
Правило: «Готов ли я, чтобы ИИ выполнял команды, пока меня нет?» Да, и репозиторий доверенный → контейнер с жёсткими mount. Нет → интерактивно на хосте достаточно.
Для пользователей Mac: Docker и разработка под Apple
Многие совмещают Xcode и full-stack с ИИ. Распространённое разделение:
- Xcode, симулятор, подпись остаются на macOS;
- Node/Python-сервисы, длинные сессии Claude Code, экспериментальные скрипты — в devcontainer;
- Для единого бэкенда команды:
docker-compose.ymlв репозитории, API тестируют в контейнере.
На Apple Silicon избегайте x86-образов — предпочитайте arm64. Выделите Docker Desktop минимум 4–8 ГБ RAM, иначе dev server + Claude быстро уйдут в swap.
Быстрый разбор проблем
- После Rebuild снова логин: проверьте, что
~/.claudeсмонтирован как именованный том, а не только в writable-слое контейнера. - Нет доступа к npm / GitHub: белый список в
init-firewall.sh; корпоративный прокси →HTTP_PROXY. - Порт 3000 недоступен:
forwardPortsв devcontainer или проброс в compose. - Permission denied:
remoteUserдолжен иметь запись; на Linux часто нужно выровнять UID bind mount. - Docker Desktop не стартует: Windows → WSL2; Mac → виртуализация заблокирована антивирусом?
Частые вопросы (FAQ)
Нужен ли Docker и Claude Code, и агенту Cursor?
Нет. Агент Cursor по умолчанию работает в локальном workspace; Claude Code — отдельная CLI с полноценной поддержкой devcontainer. Редактирование в Cursor, claude в терминале контейнера — оба варианта сосуществуют.
Обязателен ли VS Code для devcontainer?
Нет. Спецификацию популяризировал VS Code, но Cursor, JetBrains и GitHub Codespaces её поддерживают. Чистый docker compose + shell тоже работает — без графического Reopen in Container.
Я уже деплою через docker compose — это дублирование?
Нет. Deploy-compose отвечает за «сервис в проде»; devcontainer — за «где Claude работает при разработке». Логика похожа, цели конфигурации разные. Опыт деплоя помогает с mount и сетью.
Как обновить Claude Code в контейнере?
Официальный Feature ставит последнюю CLI с автообновлением. Чтобы зафиксировать версию: в Dockerfile или DISABLE_AUTOUPDATER в containerEnv.
Компания запрещает Docker Desktop?
Спросите IT про удалённый devcontainer-хост, GitHub Codespaces или внутреннее K8s dev-пространство. Claude Code нужна «изолированная Linux-среда» — не обязательно Docker на ноутбуке.
Итог: Docker — не домашнее задание, а «ремень безопасности» Claude Code
Вернёмся к вопросу: почему Claude Code рекомендует Docker?
- Потому что ИИ-ассистенты по коду уже выполняют, а не только предлагают;
- Потому что команде нужно одно и то же воспроизводимое окружение, а не скриншоты установки Node;
- Потому что Anthropic хочет держать режим без присмотра за файрволом в контейнере — а не отпускать его в
~/.
Новичку сегодня достаточно одного шага: в небольшом проекте Reopen in Container, один раз ввести claude в терминале контейнера и увидеть, что команды выполняются внутри, а файлы меняются на хосте. Этого уже больше, чем у большинства читателей документации.
ECC, MCP или агент на VPS — Docker становится «универсальным установщиком» эры ИИ. Claude Code просто раньше и явнее записал это в руководство по безопасности.
На облачном Mac: Docker и Claude Code без лишней суеты
Локальный ноутбук с Docker Desktop и Xcode быстро упирается в RAM и вентилятор. Перенесите бэкенд-сервисы, длинные сессии Claude Code и экспериментальные агенты на облачный Mac mini M4 VPSSPark: нативный macOS, Docker Desktop / Colima, Homebrew и Unix-инструменты без возни с WSL.
Unified Memory M4 эффективно тянет контейнеры и Node-сервисы — ~4 Вт в простое, подходит для devcontainer 7×24 с ночными сборками или задачами без присмотра. Gatekeeper и SIP дают дополнительный системный слой по сравнению с голым Linux-десктопом.
Для схемы «легко локально, тяжёлое в облаке»: облачный Mac совмещает изоляцию Docker и экосистему Apple — смотреть тарифы и не давать RAM ноутбука тормозить ИИ-разработку.