Как запустить Claude Code в Docker как песочницу

Запуск Claude Code в Docker, чтобы агент видел только папку проекта: рецепт docker run своими руками, его ограничения и контейнер в AgentVera одной галочкой.

Solviera Teknoloji 6 мин чтения

Чтобы запустить Claude Code в Docker, стартуйте его в контейнере, в который смонтирована только папка проекта: агент сможет свободно работать там, а остальной диск останется ему недоступен. Это можно сделать вручную с образом и длинной строкой docker run, а можно поставить одну галочку в AgentVera и получить такой же контейнер уже настроенным, с входом, git-идентичностью и правами на файлы.

В этом руководстве: от чего контейнер защищает (и от чего нет), способ своими руками и как работают Docker-агенты в AgentVera.

Что контейнер защищает, а что нет

Кодинг-агент выполняет команды от имени вашего пользователя. Без песочницы он может прочитать любой файл, который можете прочитать вы: другие репозитории, ~/.ssh, облачные учётные данные, dotfiles. В большинстве случаев это нормально. Риск — редкая плохая команда, неудачная «уборка» или prompt injection, спрятанный на веб-странице или в README зависимости.

РискОбычный терминалКонтейнер Docker
Чтение файлов вне проектаДаТолько то, что смонтировано
Чтение SSH-ключей и учётных данныхДаНет, если не смонтированы
Удаление файлов вне проектаВозможноНедоступны
Установка глобальных инструментов на вашу машинуВозможнаТолько внутри контейнера, исчезает при выходе
Изменение или удаление файлов в проектеВозможноПо-прежнему возможно
Выход в интернетДаДа, по умолчанию

Важнее всего две строки. Папка проекта по-прежнему доступна для записи, поэтому коммитьте чаще или используйте git worktree. И Docker сам по себе не отрезает сеть: если это нужно, потребуются дополнительные сетевые правила. Более широкий взгляд на угрозы смотрите в статье безопасность ИИ-агентов для кода.

Запуск Claude Code в Docker вручную

Способ своими руками состоит из трёх частей: образ, команда запуска и решение по входу в аккаунт.

1. Соберите образ с CLI

Хватит небольшого Dockerfile:

FROM node:22-bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
      git curl ca-certificates ripgrep openssh-client less procps jq python3 \
    && rm -rf /var/lib/apt/lists/*
RUN npm install -g @anthropic-ai/claude-code
docker build -t my-claude .

Добавьте всё, что нужно вашему проекту для сборки и тестов: компилятор, клиент базы данных или рантайм языка.

2. Запустите с монтированием только проекта

docker run --rm -it --init \
  --user "$(id -u):$(id -g)" \
  -v "$PWD":/work -w /work \
  -e HOME=/home/agent --tmpfs /home/agent \
  my-claude claude

Что делает каждая часть:

  1. --rm удаляет контейнер, когда Claude Code завершается.
  2. --user запускает от вашего user id, чтобы новые файлы в проекте не принадлежали root.
  3. -v "$PWD":/work монтирует проект и больше ничего с вашего диска.
  4. Одноразовый HOME на tmpfs даёт CLI место, куда записывать настройки.

3. Решите вопрос с входом и историей

С одноразовым домом Claude Code при каждом запуске забывает ваш вход и диалоги. Вместо этого можно смонтировать отдельную папку конфигурации или передать API-ключ через -e ANTHROPIC_API_KEY. Передавайте секреты по имени (-e NAME), а не как -e NAME=value, чтобы значение не попало в историю вашей оболочки.

Anthropic также публикует эталонную конфигурацию devcontainer для Claude Code с файрволом; если вы работаете в devcontainer, прочитайте о ней в документации Claude Code.

Где ручной способ становится утомительным

Каждому новому агенту нужны те же флаги снова. Возобновление, статистика использования и настройки проектов лежат в папке, которую контейнер не видит, пока вы её не смонтируете. У git-коммитов внутри контейнера нет имени, пока вы не смонтируете ~/.gitconfig. А если вы запускаете сразу нескольких агентов, приходится жонглировать несколькими такими командами.

Запуск Claude Code в Docker через AgentVera

AgentVera — десктопное приложение для macOS, Windows и Linux, которое запускает CLI кодинг-агентов рядом друг с другом в настоящих терминалах. Для агентов Claude Code и Codex в диалоге агента есть галочка Run in a Docker container. Её подсказка говорит прямо: агент видит только папку проекта; остальные файлы, программы и SSH-ключи на этом компьютере для него закрыты.

Шаги

  1. Запустите Docker Desktop, Colima или OrbStack.
  2. Откройте проект в AgentVera и добавьте агента Claude Code или Codex.
  3. Поставьте галочку Run in a Docker container. При желании задайте Image, CPU и Memory (GB); оставьте память пустой, если лимит не нужен.
  4. Запустите агента.

При первом использовании AgentVera собирает свой образ агента agentvera/agent:1, и вы видите вывод сборки в терминале агента. Образ основан на node:22-bookworm-slim с git, ripgrep, jq, python3, make, g++ и несколькими другими инструментами, плюс Claude Code и Codex. Если вы задаёте собственный образ, в нём должна быть команда claude или codex; образ, которого нет на вашей машине, скачивается.

После этого в заголовке агента появляется метка Docker, а панель сообщает, что агент запущен в контейнере Docker, и показывает имя образа. Существующего агента также можно перевести в контейнер или обратно, отредактировав его; агент перезапускается и сохраняет тот же диалог.

Что AgentVera настраивает за вас

ВопросЧто делает AgentVera
Файлы проектаМонтирует папку проекта (для worktree — ещё и его репозиторий)
Вход, возобновление, статистикаМонтирует папку диалогов CLI, поэтому возобновление, статистика использования и бюджеты работают как обычно
Git-идентичностьМонтирует ~/.gitconfig только для чтения, поэтому коммиты подписаны вашим именем
Владелец файловЗапускает от вашего user id на macOS и Linux, поэтому файлы не принадлежат root
Домашняя папкаСвежий дом на tmpfs, который исчезает при остановке контейнера
Усиление защитыno-new-privileges, лимит процессов и отброшенные несколько Linux capabilities
СекретыЗначения окружения передаются по имени, поэтому токены не видны в списке процессов
Инструменты AgentVeraХуки и MCP-серверы, такие как карта проекта, доска и обмен сообщениями агентов, продолжают работать

Когда агент останавливается, контейнер удаляется. Остаются только изменения в папке проекта.

Что стоит знать:

  • Сеть открыта. В Linux контейнер использует сеть хоста; в других системах он обращается к локальным серверам AgentVera через host.docker.internal. Контейнер ограничивает файлы, а не интернет.
  • Вход в macOS. Claude Code хранит вход в связке ключей macOS, которую контейнер прочитать не может, поэтому внутри него, возможно, придётся войти один раз.
  • Claude in Chrome внутри контейнера не используется. Браузер AgentVera, работающий через Playwright MCP, — отдельная опция в том же диалоге.
  • Только локальные агенты. Удалённые агенты по SSH работают на своём сервере и эту опцию не принимают.

Docker-агенты входят в бесплатный тариф. В приложении есть и отдельная страница менеджера Docker для ваших собственных контейнеров и compose-проектов; см. страницу функции Docker.

Сочетайте контейнер с правильным уровнем разрешений

Именно контейнер делает разумным более свободный уровень разрешений. У агентов AgentVera три уровня: Ask, Auto и Full access. Подсказка к Full access гласит: никогда не спрашивает, лучше всего в worktree или контейнере.

Практичная схема для долгой задачи:

  1. Создайте агента в собственном git worktree, чтобы его изменения оставались в отдельной ветке.
  2. Поставьте галочку Run in a Docker container.
  3. Выберите Auto или Full access в зависимости от того, насколько вы доверяете задаче.
  4. Когда он закончит, просмотрите дифф перед слиянием.

Если вы взвешиваете --dangerously-skip-permissions, компромиссы разобраны в статье пропуск разрешений в Claude Code, а запуск Claude Code на ночь показывает, как контейнер вписывается в запуск, за которым никто не следит.

Короткий чек-лист

  • Контейнер монтирует только проект, а не вашу домашнюю папку.
  • Новые файлы в проекте принадлежат вам, а не root.
  • Секреты передаются по имени, а не зашиты в образ.
  • Работа закоммичена, или агент находится в ветке worktree.
  • Вы знаете, что сеть всё ещё открыта, и добавили правила, если это важно.

Скачайте AgentVera, чтобы запускать Claude Code и Codex в контейнерах рядом с остальными агентами, или читайте подробнее на странице агентов в Docker.

Вопросы

Зачем вообще запускать Claude Code в Docker?

Агент на вашей машине может читать всё, что доступно вашему пользователю: другие проекты, SSH-ключи, облачные учётные данные, данные браузера. В контейнере он видит только смонтированные папки, так что у плохой команды или prompt injection остаётся гораздо меньше доступного.

Отрезает ли контейнер Docker агента от интернета?

По умолчанию нет. У обычного контейнера есть доступ к сети. Docker ограничивает файлы и процессы; чтобы ограничить ещё и сеть, нужны собственные правила файрвола или сетевая настройка. Контейнеры агентов AgentVera оставляют сеть открытой, чтобы CLI мог обращаться к своему API.

Каких агентов AgentVera может запускать в контейнере?

Агентов Claude Code и Codex, работающих на вашем компьютере. Удалённые агенты по SSH работают на своём сервере и эту опцию не используют. Нужен запущенный Docker Desktop, Colima или OrbStack.

Нужно ли снова входить в аккаунт внутри контейнера?

Обычно нет, потому что AgentVera монтирует в контейнер папку диалогов CLI. В macOS Claude Code хранит вход в связке ключей, которую контейнер прочитать не может, так что внутри него, возможно, придётся войти один раз.

Безопасно ли использовать режим полного доступа внутри контейнера?

Намного безопаснее, чем на голой машине, поэтому подсказка к Full access в AgentVera говорит, что он лучше всего подходит для worktree или контейнера. Агент всё равно может изменить или удалить файлы в папке проекта, так что коммитьте работу и просматривайте дифф.

Соберите своих агентов за одним столом.

Скачайте AgentVera бесплатно; ваши установленные CLI уже готовы к работе.

Другие статьи