Безопасный запуск Claude Code в Docker

Безопасный запуск Claude Code в Docker

@ai_longreads

Docker позволяет запускать Claude Code в изолированном окружении — контейнер видит только указанную папку, а остальная система для него недоступна. Это решает проблему безопасности без компромиссов в функциональности.

Это AI-перевод статьи, сделанный каналом Про AI: Лучшие Статьи и Исследования.


Безопасный запуск Claude Code в Docker

Safely run Claude Code using Docker Автор: flavio Оригинальный текст:

Когда вы запускаете Claude Code на своём компьютере, вы фактически предоставляете ему доступ ко всей файловой системе.

Обычно это не проблема, потому что разработчики Claude Code тщательно продумали безопасность — есть правила, которые не дают ему делать что-то плохое в вашей системе.

Но я понимаю, что поводы для беспокойства есть, потому что ИИ — это ИИ, и он может сойти с пути. Особенно если вы даёте ИИ много свободы, это может быть проблематично, если он начнёт делать то, что не должен.

В Claude Code одно из решений — команда /sandbox, которая позволяет изолировать работу без множества разрешений и избежать небезопасного флага --dangerously-skip-permissions, который слишком опасен, если Claude Code имеет доступ ко всей системе!

Но есть способы инкапсулировать Claude в одну папку и не дать ему трогать другие части системы, сделав систему для него невидимой.

Простейший ответ на эту проблему — Docker.

Что такое Docker

Docker — это платформа, которая позволяет запускать приложения в изолированных окружениях, называемых «контейнерами». Представьте контейнер как лёгкую, самодостаточную коробку, которая включает всё необходимое для работы приложения (код, библиотеки и системные инструменты), но держит его отдельно от остального компьютера.

Ключевые преимущества Docker:

  • Изоляция: Приложения запускаются в своём контейнере и не могут получить доступ к другим частям системы или повлиять на них
  • Согласованность: Контейнер работает одинаково на любом компьютере, устраняя проблемы «у меня работает»
  • Безопасность: Ограничивая то, что контейнер может видеть и делать, вы защищаете основную систему от потенциальных проблем

В контексте Claude Code запуск в Docker означает, что Claude будет иметь доступ только к файлам и папкам, которые вы явно разрешите внутри контейнера, а не ко всему компьютеру. Это обеспечивает дополнительный уровень безопасности и контроля.

Установка Docker

ПРИМЕЧАНИЕ: Мы будем использовать функцию Docker Desktop, которая отличается от Docker. Для корпоративных машин нужна лицензия, но как частное лицо вы можете использовать его без проблем.

Если у вас ещё не установлен Docker, вы можете установить его с официального сайта docker.com.

Домашняя страница Docker немного сложна для навигации из-за обилия информации. Просто найдите кнопку «Download Docker Desktop».

Нажав на кнопку, вы увидите разные платформы. Нажмите на свою для загрузки пакета.

Я использую Mac, и самый простой способ установки (и удаления / обновления) — через Homebrew:

brew install --cask docker

Теперь бинарник docker доступен в командной строке.

Запуск Claude Code в песочнице

Попробуйте выполнить команду:

docker sandbox run claude

Это использует Docker Sandboxes — специальную ИИ-функцию Docker, специально разработанную для работы с Claude Code и другими CLI-агентами.

Она отличается от песочницы внутри Claude Code, которую можно настроить командой /sandbox.

Если у вас ошибка «sandbox is not a command» или что-то подобное, нужно установить новейшую версию Docker Desktop, потому что это новая функция. Откройте приложение Docker Desktop, перейдите в настройки и в разделе «Software updates» убедитесь, что у вас версия 4.5 или выше.

После этого команда должна работать. Вам нужно пройти те же шаги, что и при первой установке Claude — авторизоваться, и вы готовы к работе.

Режим обхода разрешений

Обратите внимание: Claude запускается с флагом --dangerously-skip-permissions по умолчанию — именно поэтому вы видите новый режим, которого обычно нет при запуске Claude на вашей системе. Теперь у нас включён обход разрешений.

Это режим, в котором Claude Code не будет спрашивать вашего одобрения перед выполнением потенциально опасных команд.

Как сказано в предупреждении ⚠️, этот режим не следует использовать в контейнерах, имеющих ограниченный доступ к интернету и файловой системе.

Этот режим я бы запускал только в изолированном окружении — именно в этом конкретном случае.

Итак, теперь можно использовать Claude Code, и это изолированное окружение — у него есть доступ только к текущей папке и подпапкам, и ничего больше в системе. Систему он вообще не видит.

Технические детали

Docker запускает Claude внутри образа docker/sandbox-templates:claude-code.

Он включает Claude Code с автоматическим управлением учётными данными, плюс инструменты разработки (Docker CLI, GitHub CLI, Node.js, Go, Python 3, Git, ripgrep, jq).

Он запускается от имени пользователя agent без root-прав, но с доступом к sudo, и, как я уже сказал, запускает Claude с --dangerously-skip-permissions по умолчанию.

Сохранение состояния

Обратите внимание, что песочница Docker сохраняет API-ключ — это очень удобно, так что не нужно повторять операцию инициализации Claude Code каждый раз при запуске новой песочницы в той же папке. Если вы смените папку, то придётся проходить тот же процесс.

Это сохраняется в специальном томе Docker, управляемом окружением Docker Sandbox.

Когда вы запускаете docker sandbox run claude, Docker автоматически создаёт (или переиспользует) постоянный том с именем docker-claude-sandbox-data. Его можно увидеть, выполнив docker volume ls и docker volume inspect docker-claude-sandbox-data.

Этот том существует отдельно от жизненного цикла контейнера.

Даже если вы удалите контейнер песочницы (docker sandbox rm), том сохранится, сохраняя состояние авторизации для следующего запуска.

Заключение

На официальном сайте Docker можно найти руководство по использованию Claude Code для более продвинутых случаев: https://docs.docker.com/ai/sandboxes/claude-code/

На момент написания функция работает только с Claude и Gemini.


Подпишитесь на канал и каждый день читайте лучшие материалы про AI переведенные на русский!

Нашли интересную статью для перевода? Пришлите нашему боту: @ailongreadsbot

Report Page