Перейти к основному содержанию

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.

Контейнер разработки, или dev container, позволяет вам определить идентичную, изолированную среду, которую каждый инженер в вашей команде может запустить. С установленным Claude Code в этом контейнере команды, которые запускает Claude, выполняются внутри него, а не на хост-машине, при этом редактирование файлов вашего проекта отображается в локальном репозитории по мере работы. На этой странице рассматривается установка Claude Code в контейнер разработки и следующие темы конфигурации. Каждая тема является самостоятельной, поэтому переходите к тем, которые соответствуют тому, что вам нужно настроить:
Хотя контейнер разработки обеспечивает существенную защиту, ни одна система полностью не защищена от всех атак. При выполнении с --dangerously-skip-permissions контейнеры разработки не предотвращают утечку данных из вредоносного проекта, включая учетные данные Claude Code, хранящиеся в ~/.claude. Используйте контейнеры разработки только при разработке с доверенными репозиториями и отслеживайте деятельность Claude. Избегайте монтирования хост-секретов, таких как ~/.ssh или файлы облачных учетных данных, в контейнер; предпочитайте токены с областью действия репозитория или краткосрочные токены.
Диаграмма, показывающая редактор на хосте, подключающийся к Docker контейнеру разработки. Claude Code, терминал и инструменты сборки работают внутри контейнера. Репозиторий хоста привязан к контейнеру как рабочее пространство.Контейнер разработки работает как Docker контейнер, либо на вашей машине, либо на облачном хосте, таком как GitHub Codespaces. Редактор, поддерживающий спецификацию Dev Containers, такой как VS Code, GitHub Codespaces, JetBrains IDE или Cursor, подключается к этому контейнеру: вы просматриваете и редактируете файлы в редакторе как обычно, но интегрированный терминал, языковые серверы и инструменты сборки все работают внутри контейнера, а не на вашем хосте. Редакторы без поддержки контейнеров разработки, такие как простой Vim, не являются частью этого рабочего процесса.Claude Code работает внутри контейнера, поэтому он видит те же файлы, зависимости и инструменты, что и остальная часть цепочки инструментов вашего проекта. В VS Code вы можете использовать либо панель расширения Claude Code, либо запустить claude в интегрированном терминале; оба работают внутри контейнера и используют одну и ту же конфигурацию ~/.claude.

Добавление Claude Code в контейнер разработки

Claude Code устанавливается в любой контейнер разработки через Claude Code Dev Container Feature. Параметры работают с любым инструментом, поддерживающим спецификацию Dev Containers, таким как VS Code, GitHub Codespaces или JetBrains IDEs. Шаги ниже используют VS Code в качестве примера. Когда вы открываете контейнер в VS Code или Codespaces, функция также добавляет расширение Claude Code VS Code; другие редакторы игнорируют эту часть.
Новичок в контейнерах разработки? Учебное пособие VS Code Dev Containers проходит через установку Docker, расширения и открытие вашего первого контейнера. Для более полного усиленного примера с брандмауэром и постоянными томами см. Попробуйте контейнер-образец.
1

Создание или обновление devcontainer.json

Сохраните следующее как .devcontainer/devcontainer.json в вашем репозитории или добавьте блок features в ваш существующий файл.Тег версии в конце, такой как :1.0, закрепляет скрипт установки функции, а не выпуск Claude Code. Функция устанавливает последнюю версию Claude Code, и Claude Code автоматически обновляется внутри контейнера по умолчанию.Чтобы закрепить версию CLI или отключить автоматическое обновление, см. Применение политики организации.
.devcontainer/devcontainer.json
{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
  }
}
Замените строку image на базовый образ вашего проекта или удалите ее, если ваш существующий файл использует Dockerfile.
2

Перестроение контейнера

Откройте палитру команд VS Code с помощью Cmd+Shift+P на Mac или Ctrl+Shift+P на Windows и Linux и запустите Dev Containers: Rebuild Container.Для других инструментов следуйте действию перестроения этого инструмента: см. перестроение в GitHub Codespaces, Dev Containers CLI или документацию контейнеров разработки вашей IDE.
3

Вход в Claude Code

Откройте терминал в перестроенном контейнере и запустите claude, затем следуйте подсказке аутентификации.
То, что вы видите в подсказке аутентификации, зависит от вашего поставщика:
  • Anthropic: вход через браузер с вашей учетной записью Claude или Anthropic Console
  • Amazon Bedrock, Google Vertex AI или Microsoft Foundry: Claude Code использует учетные данные вашего облачного поставщика без подсказки браузера
Для облачных поставщиков передавайте учетные данные в контейнер как переменные окружения через containerEnv, секрет Codespaces или удостоверение рабочей нагрузки вашего облака, а не монтируйте файлы учетных данных с хоста. См. Amazon Bedrock, Google Vertex AI или Microsoft Foundry для цепочки учетных данных, которую читает Claude Code. См. Выбор поставщика API, чтобы решить, какой путь подходит вашей организации.
Если вход через браузер завершен, но обратный вызов никогда не достигает контейнер, скопируйте код, показанный в браузере, и вставьте его в подсказку Paste code here if prompted в терминале. Это может произойти, когда переадресация портов редактора не маршрутизирует обратный вызов localhost.

Сохранение аутентификации и параметров при перестроении

По умолчанию домашний каталог контейнера отбрасывается при перестроении, поэтому инженеры должны снова входить каждый раз. Claude Code хранит свой токен аутентификации, параметры пользователя и историю сеанса в ~/.claude. Смонтируйте именованный том в этом пути, чтобы сохранить это состояние при перестроении. Следующий пример монтирует том в домашний каталог пользователя node:
devcontainer.json
"mounts": [
  "source=claude-code-config,target=/home/node/.claude,type=volume"
]
Замените /home/node на домашний каталог remoteUser вашего контейнера. Если вы монтируете том в другое место, чем ~/.claude, установите CLAUDE_CONFIG_DIR на путь монтирования, чтобы Claude Code читал и писал там. Чтобы изолировать состояние для каждого проекта, а не делиться одним томом во всех репозиториях, включите переменную ${devcontainerId} в имя источника. Справочная конфигурация использует source=claude-code-config-${devcontainerId} для этой цели. В GitHub Codespaces ~/.claude сохраняется при остановке и запуске codespace, но все еще очищается при перестроении контейнера, поэтому монтирование тома выше применяется и там. Чтобы перенести аутентификацию между codespaces, сохраните ANTHROPIC_API_KEY или CLAUDE_CODE_OAUTH_TOKEN из claude setup-token как секрет Codespaces; Codespaces автоматически делает секреты доступными как переменные окружения внутри контейнера.

Применение политики организации

Контейнер разработки — это удобное место для применения политики организации, потому что один и тот же образ и конфигурация работают на машине каждого инженера. Claude Code читает /etc/claude-code/managed-settings.json на Linux и применяет его с наивысшим приоритетом в иерархии параметров, поэтому значения там переопределяют все, что инженер устанавливает в ~/.claude или в каталоге .claude/ проекта. Скопируйте файл на место из вашего Dockerfile:
Dockerfile
RUN mkdir -p /etc/claude-code
COPY managed-settings.json /etc/claude-code/managed-settings.json
Поскольку Dockerfile находится в репозитории, любой, у кого есть доступ на запись, может изменить или удалить этот шаг. Для политики, которую инженеры не могут обойти, редактируя файлы репозитория, доставляйте управляемые параметры через параметры, управляемые сервером или ваш MDM вместо этого. См. файлы управляемых параметров для доступных ключей и других путей доставки. Чтобы установить переменные окружения, которые применяются к каждому сеансу Claude Code в контейнере, добавьте их в containerEnv в вашем devcontainer.json. Следующий пример отказывается от телеметрии и отчетов об ошибках и предотвращает автоматическое обновление Claude Code после установки:
devcontainer.json
"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 для вашей организации. Чтобы сделать серверы MCP доступными внутри контейнера, определите их в области проекта в файле .mcp.json в корне репозитория, чтобы они были зарегистрированы вместе с конфигурацией контейнера разработки. Установите любые двоичные файлы, от которых зависят локальные серверы stdio, в вашем Dockerfile и добавьте домены удаленных серверов в ваш список разрешений сети.

Ограничение исходящего сетевого трафика

Вы можете ограничить исходящий трафик контейнера только доменами, которые нужны Claude Code. См. Требования к сетевому доступу для доменов вывода и аутентификации и Услуги телеметрии для дополнительных соединений телеметрии и отчетов об ошибках и способов их отключения. Контейнер-образец включает скрипт init-firewall.sh, который блокирует весь исходящий трафик, кроме доменов, которые нужны Claude Code и вашим инструментам разработки. Запуск брандмауэра внутри контейнера требует дополнительных разрешений, поэтому образец добавляет возможности NET_ADMIN и NET_RAW через runArgs. Скрипт брандмауэра и эти возможности не требуются для самого Claude Code: вы можете оставить их и вместо этого полагаться на ваши собственные элементы управления сетью.

Запуск без запросов разрешений

Поскольку контейнер запускает Claude Code как непривилегированный пользователь и ограничивает выполнение команд контейнером, вы можете передать --dangerously-skip-permissions для автоматического выполнения. CLI отклоняет этот флаг при запуске от root, поэтому подтвердите, что remoteUser установлен на непривилегированную учетную запись. Пропуск запросов разрешений удаляет вашу возможность просмотреть вызовы инструментов перед их запуском. Claude все еще может изменять любой файл в привязанном рабочем пространстве, который отображается непосредственно на вашем хосте, и достичь всего, что позволяет политика сети контейнера. Объедините этот флаг с ограничениями исходящего сетевого трафика выше, чтобы ограничить то, что может достичь обойденный сеанс. Если вы хотите меньше подсказок без отключения проверок безопасности, рассмотрите вместо этого автоматический режим, который имеет классификатор для проверки действий перед их запуском. Чтобы предотвратить использование инженерами --dangerously-skip-permissions вообще, установите permissions.disableBypassPermissionsMode на "disable" в управляемых параметрах.

Попробуйте контейнер-образец

Репозиторий anthropics/claude-code включает пример контейнера разработки, который объединяет CLI, брандмауэр исходящего трафика, постоянные тома и оболочку на основе Zsh. Он предоставляется как рабочий пример, а не как поддерживаемый базовый образ; используйте его, чтобы увидеть, как части подходят друг к другу, прежде чем применять их к вашей собственной конфигурации.
1

Установка предварительных условий

Установите VS Code и расширение Dev Containers.
2

Клонирование образца

Клонируйте репозиторий Claude Code и откройте его в VS Code.
3

Повторное открытие в контейнере

Когда будет предложено, нажмите Reopen in Container, или запустите Dev Containers: Reopen in Container из палитры команд.
4

Запуск Claude Code

После завершения сборки контейнера откройте терминал с помощью Ctrl+` и запустите claude для входа и запуска вашего первого сеанса.
Чтобы использовать эту конфигурацию с вашим собственным проектом, скопируйте каталог .devcontainer/ в ваш репозиторий и отрегулируйте Dockerfile для вашей цепочки инструментов, или вернитесь к Добавление Claude Code в контейнер разработки, чтобы добавить только функцию в уже имеющуюся установку. Справочная конфигурация состоит из трех файлов. Ни один из них не требуется при добавлении Claude Code в ваш собственный контейнер разработки через функцию, но они показывают один способ объединения частей.
ФайлНазначение
devcontainer.jsonМонтирование томов, возможности runArgs, расширения VS Code и containerEnv
DockerfileБазовый образ, инструменты разработки и установка Claude Code
init-firewall.shБлокирует весь исходящий сетевой трафик, кроме разрешенных доменов

Следующие шаги

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