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

URL: https://agentvera.dev/ru/blog/run-claude-code-in-docker/ · Опубликовано: 2026-10-24

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

**Коротко:**

- Контейнер ограничивает то, что агент может читать и менять на диске, папками, которые вы смонтировали; сеть он не отключает, пока вы не настроите это сами.
- Вручную нужны образ с CLI, смонтированный проект, ваш user id и место для входа в аккаунт; AgentVera делает всё это одной галочкой.
- В AgentVera агенты Claude Code и Codex могут работать в контейнере, который удаляется при остановке агента; остаются только изменения в папке проекта.

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

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

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

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

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

Важнее всего две строки. Папка проекта по-прежнему доступна для записи, поэтому коммитьте чаще или используйте [git worktree](/ru/blog/git-worktree-parallel-agents/). И Docker сам по себе не отрезает сеть: если это нужно, потребуются дополнительные сетевые правила. Более широкий взгляд на угрозы смотрите в статье [безопасность ИИ-агентов для кода](/ru/blog/ai-coding-agent-security/).

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

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

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

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

```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
```

```bash
docker build -t my-claude .
```

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

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

```bash
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](/ru/) — десктопное приложение для 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](/ru/features/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](/ru/blog/claude-code-skip-permissions/), а [запуск Claude Code на ночь](/ru/blog/run-claude-code-overnight/) показывает, как контейнер вписывается в запуск, за которым никто не следит.

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

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

[Скачайте AgentVera](/ru/download/), чтобы запускать Claude Code и Codex в контейнерах рядом с остальными агентами, или читайте подробнее на странице [агентов в Docker](/ru/features/agents-in-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.** AgentVera — настольное приложение для macOS, Windows и Linux от Solviera Teknoloji. Оно запускает 18 ИИ-агентов для программирования (Claude Code, Codex, Gemini CLI, Copilot, Cursor, Antigravity, opencode, Hermes, Qwen Code, Kimi Code, Kiro, Amp, Droid, Goose, Vibe, Crush, Aider, Cline) рядом, по проектам, в настоящих терминалах с собственными установками CLI и входами пользователя. В бесплатном тарифе количество агентов не ограничено. Скачать: https://agentvera.dev/ru/download/ · Цены: https://agentvera.dev/ru/pricing/
