Чтобы запустить 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
Что делает каждая часть:
--rmудаляет контейнер, когда Claude Code завершается.--userзапускает от вашего user id, чтобы новые файлы в проекте не принадлежали root.-v "$PWD":/workмонтирует проект и больше ничего с вашего диска.- Одноразовый
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-ключи на этом компьютере для него закрыты.
Шаги
- Запустите Docker Desktop, Colima или OrbStack.
- Откройте проект в AgentVera и добавьте агента Claude Code или Codex.
- Поставьте галочку Run in a Docker container. При желании задайте Image, CPU и Memory (GB); оставьте память пустой, если лимит не нужен.
- Запустите агента.
При первом использовании 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 или контейнере.
Практичная схема для долгой задачи:
- Создайте агента в собственном git worktree, чтобы его изменения оставались в отдельной ветке.
- Поставьте галочку Run in a Docker container.
- Выберите Auto или Full access в зависимости от того, насколько вы доверяете задаче.
- Когда он закончит, просмотрите дифф перед слиянием.
Если вы взвешиваете --dangerously-skip-permissions, компромиссы разобраны в статье пропуск разрешений в Claude Code, а запуск Claude Code на ночь показывает, как контейнер вписывается в запуск, за которым никто не следит.
Короткий чек-лист
- Контейнер монтирует только проект, а не вашу домашнюю папку.
- Новые файлы в проекте принадлежат вам, а не root.
- Секреты передаются по имени, а не зашиты в образ.
- Работа закоммичена, или агент находится в ветке worktree.
- Вы знаете, что сеть всё ещё открыта, и добавили правила, если это важно.
Скачайте AgentVera, чтобы запускать Claude Code и Codex в контейнерах рядом с остальными агентами, или читайте подробнее на странице агентов в Docker.