> ## Documentation Index
> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Контейнеры разработки

> Запустите Claude Code внутри контейнера разработки для согласованных, изолированных сред во всей вашей команде.

[Контейнер разработки](https://containers.dev/), или dev container, позволяет вам определить идентичную, изолированную среду, которую каждый инженер в вашей команде может запустить. С установленным Claude Code в этом контейнере команды, которые запускает Claude, выполняются внутри него, а не на хост-машине, при этом редактирование файлов вашего проекта отображается в локальном репозитории по мере работы.

На этой странице рассматривается [установка Claude Code в контейнер разработки](#add-claude-code-to-your-dev-container), а затем набор самостоятельных тем конфигурации: сохранение аутентификации при перестроении, применение политики организации, ограничение исходящего сетевого трафика и запуск без запросов разрешений. Прочитайте те, которые соответствуют вашей конфигурации.

<Warning>
  Хотя контейнер разработки обеспечивает существенную защиту, ни одна система полностью не защищена от всех атак.
  При выполнении с `--dangerously-skip-permissions` контейнеры разработки не предотвращают утечку данных из вредоносного проекта, включая учетные данные Claude Code, хранящиеся в [`~/.claude`](/ru/claude-directory).
  Используйте контейнеры разработки только при разработке с доверенными репозиториями и отслеживайте деятельность Claude.
  Избегайте монтирования хост-секретов, таких как `~/.ssh` или файлы облачных учетных данных, в контейнер; предпочитайте токены с областью действия репозитория или краткосрочные токены.
</Warning>

<Accordion title="Как контейнеры разработки работают с вашим редактором">
  <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=9017b1d16a446c6cc37ba562f35b9aae" className="dark:hidden" alt="Диаграмма, показывающая редактор на хосте, подключающийся к Docker контейнеру разработки. Claude Code, терминал и инструменты сборки работают внутри контейнера. Репозиторий хоста привязан к контейнеру как рабочее пространство." width="640" height="300" data-path="images/devcontainer-architecture.svg" />

  <img src="https://mintcdn.com/claude-code/YvJyjZfd9yMihr0i/images/devcontainer-architecture-dark.svg?fit=max&auto=format&n=YvJyjZfd9yMihr0i&q=85&s=ef00c8e25b1ea7a3a152895f1488831b" className="hidden dark:block" alt="Диаграмма, показывающая редактор на хосте, подключающийся к Docker контейнеру разработки. Claude Code, терминал и инструменты сборки работают внутри контейнера. Репозиторий хоста привязан к контейнеру как рабочее пространство." width="640" height="300" data-path="images/devcontainer-architecture-dark.svg" />

  Контейнер разработки работает как Docker контейнер, либо на вашей машине, либо на облачном хосте, таком как GitHub Codespaces. Редактор, поддерживающий спецификацию Dev Containers, такой как VS Code, GitHub Codespaces, JetBrains IDE или Cursor, подключается к этому контейнеру: вы просматриваете и редактируете файлы в редакторе как обычно, но интегрированный терминал, языковые серверы и инструменты сборки все работают внутри контейнера, а не на вашем хосте. Редакторы без поддержки контейнеров разработки, такие как простой Vim, не являются частью этого рабочего процесса.

  Claude Code работает внутри контейнера, поэтому он видит те же файлы, зависимости и инструменты, что и остальная часть цепочки инструментов вашего проекта. В VS Code вы можете использовать либо [панель расширения Claude Code](/ru/vs-code), либо запустить `claude` в интегрированном терминале; оба работают внутри контейнера и используют одну и ту же конфигурацию `~/.claude`.
</Accordion>

<h2 id="add-claude-code-to-your-dev-container">
  Добавление Claude Code в контейнер разработки
</h2>

Claude Code устанавливается в любой контейнер разработки через [Claude Code Dev Container Feature](https://github.com/anthropics/devcontainer-features/tree/main/src/claude-code).

Параметры работают с любым инструментом, поддерживающим спецификацию Dev Containers, таким как VS Code, GitHub Codespaces или JetBrains IDEs. Шаги ниже используют VS Code в качестве примера.

Когда вы открываете контейнер в VS Code или Codespaces, функция также добавляет расширение Claude Code VS Code; другие редакторы игнорируют эту часть.

<Tip>
  Новичок в контейнерах разработки? [Учебное пособие VS Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/tutorial) проходит через установку Docker, расширения и открытие вашего первого контейнера. Для более полного усиленного примера с брандмауэром и постоянными томами см. [Попробуйте контейнер-образец](#try-the-reference-container).
</Tip>

<Steps>
  <Step title="Создание или обновление devcontainer.json">
    Сохраните следующее как `.devcontainer/devcontainer.json` в вашем репозитории или добавьте блок `features` в ваш существующий файл.

    Тег версии в конце, такой как `:1.0`, закрепляет скрипт установки функции, а не выпуск Claude Code. Функция устанавливает последнюю версию Claude Code, и Claude Code автоматически обновляется внутри контейнера по умолчанию.

    Чтобы закрепить версию CLI или отключить автоматическое обновление, см. [Применение политики организации](#enforce-organization-policy).

    ```json .devcontainer/devcontainer.json theme={null}
    {
      "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
      "features": {
        "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
      }
    }
    ```

    Замените строку `image` на базовый образ вашего проекта или удалите ее, если ваш существующий файл использует Dockerfile.
  </Step>

  <Step title="Перестроение контейнера">
    Откройте палитру команд VS Code с помощью `Cmd+Shift+P` на Mac или `Ctrl+Shift+P` на Windows и Linux и запустите **Dev Containers: Rebuild Container**.

    Для других инструментов следуйте действию перестроения этого инструмента: см. [перестроение в GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace), [Dev Containers CLI](https://github.com/devcontainers/cli) или документацию контейнеров разработки вашей IDE.
  </Step>

  <Step title="Вход в Claude Code">
    Откройте терминал в перестроенном контейнере и запустите `claude`, затем следуйте подсказке аутентификации.
  </Step>
</Steps>

То, что вы видите в подсказке аутентификации, зависит от вашего поставщика:

* **Anthropic**: вход через браузер с вашей учетной записью Claude или Anthropic Console
* **[Amazon Bedrock, Google Vertex AI или Microsoft Foundry](/ru/third-party-integrations)**: Claude Code использует учетные данные вашего облачного поставщика без подсказки браузера

Для облачных поставщиков передавайте учетные данные в контейнер как переменные окружения через `containerEnv`, секрет Codespaces или удостоверение рабочей нагрузки вашего облака, а не монтируйте файлы учетных данных с хоста. См. [Amazon Bedrock](/ru/amazon-bedrock), [Google Vertex AI](/ru/google-vertex-ai) или [Microsoft Foundry](/ru/microsoft-foundry) для цепочки учетных данных, которую читает Claude Code.

См. [Выбор поставщика API](/ru/admin-setup#choose-your-api-provider), чтобы решить, какой путь подходит вашей организации.

<Note>
  Если вход через браузер завершен, но обратный вызов никогда не достигает контейнер, скопируйте код, показанный в браузере, и вставьте его в подсказку `Paste code here if prompted` в терминале. Это может произойти, когда переадресация портов редактора не маршрутизирует обратный вызов localhost.
</Note>

<h2 id="persist-authentication-and-settings-across-rebuilds">
  Сохранение аутентификации и параметров при перестроении
</h2>

По умолчанию домашний каталог контейнера отбрасывается при перестроении, поэтому инженеры должны снова входить каждый раз. Claude Code хранит свой токен аутентификации, параметры пользователя и историю сеанса в [`~/.claude`](/ru/claude-directory). Смонтируйте именованный том в этом пути, чтобы сохранить это состояние при перестроении.

Следующий пример монтирует том в домашний каталог пользователя `node`:

```json devcontainer.json theme={null}
"mounts": [
  "source=claude-code-config,target=/home/node/.claude,type=volume"
]
```

Замените `/home/node` на домашний каталог `remoteUser` вашего контейнера. Если вы монтируете том в другое место, чем `~/.claude`, установите [`CLAUDE_CONFIG_DIR`](/ru/env-vars) на путь монтирования, чтобы Claude Code читал и писал там.

Чтобы изолировать состояние для каждого проекта, а не делиться одним томом во всех репозиториях, включите переменную `${devcontainerId}` в имя источника. [Справочная конфигурация](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) использует `source=claude-code-config-${devcontainerId}` для этой цели.

В GitHub Codespaces `~/.claude` сохраняется при остановке и запуске codespace, но все еще очищается при перестроении контейнера, поэтому монтирование тома выше применяется и там. Чтобы перенести аутентификацию между codespaces, сохраните `ANTHROPIC_API_KEY` или `CLAUDE_CODE_OAUTH_TOKEN` из [`claude setup-token`](/ru/authentication#generate-a-long-lived-token) как [секрет Codespaces](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces); Codespaces автоматически делает секреты доступными как переменные окружения внутри контейнера.

<h2 id="enforce-organization-policy">
  Применение политики организации
</h2>

Контейнер разработки — это удобное место для применения политики организации, потому что один и тот же образ и конфигурация работают на машине каждого инженера.

Claude Code читает `/etc/claude-code/managed-settings.json` на Linux и применяет его с наивысшим приоритетом в [иерархии параметров](/ru/settings#how-scopes-interact), поэтому значения там переопределяют все, что инженер устанавливает в `~/.claude` или в каталоге `.claude/` проекта. Скопируйте файл на место из вашего Dockerfile:

```dockerfile Dockerfile theme={null}
RUN mkdir -p /etc/claude-code
COPY managed-settings.json /etc/claude-code/managed-settings.json
```

Поскольку Dockerfile находится в репозитории, любой, у кого есть доступ на запись, может изменить или удалить этот шаг. Для политики, которую инженеры не могут обойти, редактируя файлы репозитория, доставляйте управляемые параметры через [параметры, управляемые сервером](/ru/server-managed-settings) или ваш MDM вместо этого. См. [файлы управляемых параметров](/ru/settings#settings-files) для доступных ключей и других путей доставки.

Чтобы установить [переменные окружения](/ru/env-vars), которые применяются к каждому сеансу Claude Code в контейнере, добавьте их в `containerEnv` в вашем `devcontainer.json`. Следующий пример отказывается от телеметрии и отчетов об ошибках и предотвращает автоматическое обновление Claude Code после установки:

```json devcontainer.json theme={null}
"containerEnv": {
  "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
  "DISABLE_AUTOUPDATER": "1"
}
```

Функция Dev Container Feature всегда устанавливает последний выпуск Claude Code. Чтобы закрепить определенную версию Claude Code для воспроизводимых сборок, установите ее из вашего Dockerfile с помощью `npm install -g @anthropic-ai/claude-code@X.Y.Z` вместо использования функции и установите `DISABLE_AUTOUPDATER`, как показано выше.

Для полного списка элементов управления политикой, включая правила разрешений, ограничения инструментов и списки разрешений серверов MCP, см. [Настройка Claude Code для вашей организации](/ru/admin-setup).

Чтобы сделать [серверы MCP](/ru/mcp) доступными внутри контейнера, определите их в [области проекта](/ru/mcp#mcp-installation-scopes) в файле `.mcp.json` в корне репозитория, чтобы они были зарегистрированы вместе с конфигурацией контейнера разработки. Установите любые двоичные файлы, от которых зависят локальные серверы stdio, в вашем Dockerfile и добавьте домены удаленных серверов в ваш список разрешений сети.

<h2 id="restrict-network-egress">
  Ограничение исходящего сетевого трафика
</h2>

Вы можете ограничить исходящий трафик контейнера только доменами, которые нужны Claude Code. См. [Требования к сетевому доступу](/ru/network-config#network-access-requirements) для доменов вывода и аутентификации и [Услуги телеметрии](/ru/data-usage#telemetry-services) для дополнительных соединений телеметрии и отчетов об ошибках и способов их отключения.

Контейнер-образец включает скрипт [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh), который блокирует весь исходящий трафик, кроме доменов, которые нужны Claude Code и вашим инструментам разработки. Запуск брандмауэра внутри контейнера требует дополнительных разрешений, поэтому образец добавляет возможности `NET_ADMIN` и `NET_RAW` через `runArgs`. Скрипт брандмауэра и эти возможности не требуются для самого Claude Code: вы можете оставить их и вместо этого полагаться на ваши собственные элементы управления сетью.

<h2 id="run-without-permission-prompts">
  Запуск без запросов разрешений
</h2>

Поскольку контейнер запускает Claude Code как непривилегированный пользователь и ограничивает выполнение команд контейнером, вы можете передать `--dangerously-skip-permissions` для автоматического выполнения. CLI отклоняет этот флаг при запуске от root, поэтому подтвердите, что `remoteUser` установлен на непривилегированную учетную запись.

Пропуск запросов разрешений удаляет вашу возможность просмотреть вызовы инструментов перед их запуском. Claude все еще может изменять любой файл в привязанном рабочем пространстве, который отображается непосредственно на вашем хосте, и достичь всего, что позволяет политика сети контейнера. Объедините этот флаг с [ограничениями исходящего сетевого трафика](#restrict-network-egress) выше, чтобы ограничить то, что может достичь обойденный сеанс.

Если вы хотите меньше подсказок без отключения проверок безопасности, рассмотрите вместо этого [автоматический режим](/ru/permission-modes#eliminate-prompts-with-auto-mode), который имеет классификатор для проверки действий перед их запуском. Чтобы предотвратить использование инженерами `--dangerously-skip-permissions` вообще, установите `permissions.disableBypassPermissionsMode` на `"disable"` в [управляемых параметрах](/ru/settings#permission-settings).

<h2 id="try-the-reference-container">
  Попробуйте контейнер-образец
</h2>

Репозиторий [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/.devcontainer) включает пример контейнера разработки, который объединяет CLI, брандмауэр исходящего трафика, постоянные тома и оболочку на основе Zsh. Он предоставляется как рабочий пример, а не как поддерживаемый базовый образ; используйте его, чтобы увидеть, как части подходят друг к другу, прежде чем применять их к вашей собственной конфигурации.

<Steps>
  <Step title="Установка предварительных условий">
    Установите VS Code и [расширение Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).
  </Step>

  <Step title="Клонирование образца">
    Клонируйте [репозиторий Claude Code](https://github.com/anthropics/claude-code) и откройте его в VS Code.
  </Step>

  <Step title="Повторное открытие в контейнере">
    Когда будет предложено, нажмите **Reopen in Container**, или запустите **Dev Containers: Reopen in Container** из палитры команд.
  </Step>

  <Step title="Запуск Claude Code">
    После завершения сборки контейнера откройте терминал с помощью `` Ctrl+` `` и запустите `claude` для входа и запуска вашего первого сеанса.
  </Step>
</Steps>

Чтобы использовать эту конфигурацию с вашим собственным проектом, скопируйте каталог `.devcontainer/` в ваш репозиторий и отрегулируйте Dockerfile для вашей цепочки инструментов, или вернитесь к [Добавление Claude Code в контейнер разработки](#add-claude-code-to-your-dev-container), чтобы добавить только функцию в уже имеющуюся установку.

Справочная конфигурация состоит из трех файлов. Ни один из них не требуется при добавлении Claude Code в ваш собственный контейнер разработки через функцию, но они показывают один способ объединения частей.

| Файл                                                                                                       | Назначение                                                                     |
| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| [`devcontainer.json`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/devcontainer.json) | Монтирование томов, возможности `runArgs`, расширения VS Code и `containerEnv` |
| [`Dockerfile`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile)               | Базовый образ, инструменты разработки и установка Claude Code                  |
| [`init-firewall.sh`](https://github.com/anthropics/claude-code/blob/main/.devcontainer/init-firewall.sh)   | Блокирует весь исходящий сетевой трафик, кроме разрешенных доменов             |

<h2 id="next-steps">
  Следующие шаги
</h2>

После того как Claude Code работает в вашем контейнере разработки, страницы ниже охватывают остальную часть развертывания организации: выбор пути аутентификации, доставка управляемой политики вне репозитория, мониторинг использования и понимание того, что Claude Code хранит и отправляет.

* [Настройка Claude Code для вашей организации](/ru/admin-setup): выбор поставщика аутентификации, решение о том, как политика достигает устройств, и планирование развертывания
* [Параметры, управляемые сервером](/ru/server-managed-settings): доставка управляемой политики из консоли администратора Claude.ai, чтобы инженеры не могли обойти ее, редактируя файлы репозитория
* [Мониторинг использования и аудит деятельности](/ru/monitoring-usage): экспорт метрик OpenTelemetry и просмотр того, что запускает ваша команда
* [Требования к сетевому доступу](/ru/network-config#network-access-requirements): полный список доменов для прокси и брандмауэров
* [Услуги телеметрии и отказ](/ru/data-usage#telemetry-services): что Claude Code отправляет по умолчанию и переменные окружения, которые это отключают
* [Изучение каталога `.claude`](/ru/claude-directory): что содержит монтирование тома, включая учетные данные, параметры и историю сеанса
* [Среды Bash sandbox](/ru/sandbox-environments): сравнение контейнеров разработки со встроенной Bash sandbox, пользовательскими контейнерами и виртуальными машинами
* [Модель безопасности](/ru/security): как система разрешений Claude Code, sandboxing и защита от внедрения подсказок работают вместе
* [Режимы разрешений](/ru/permission-modes): полный диапазон от Plan Mode к автоматическому режиму к обходу и когда использовать каждый
