Вступление
Claude Code в Docker — один из самых удобных способов получить изолированное и предсказуемое окружение для AI-assisted разработки. Такой подход особенно полезен, если вы работаете с несколькими проектами, хотите запускать AI coding tools безопасно или планируете использовать Claude Code на VPS и удалённом Linux-сервере.
В этом материале разберём, как установить Claude Code в Docker, как настроить контейнер, подключить проект, сохранить конфиги, безопасно работать с Git и SSH, а также как использовать всё это в удобном серверном workflow.
Зачем запускать Claude Code в Docker
Если вы используете AI-ассистента не «поиграться», а для реальной разработки, рано или поздно встаёт вопрос: где его запускать безопасно и удобно.
Локальная установка — это быстро. Но как только вы начинаете давать инструменту доступ к коду, shell-командам, Git и зависимостям проекта, становится понятно: контролируемое окружение важнее удобства одной команды.
Docker помогает получить именно такое окружение.
Что даёт Docker для AI coding tools
Контейнерный запуск полезен сразу по нескольким причинам:
- изоляция рабочего окружения;
- воспроизводимость зависимостей;
- удобство при работе с несколькими проектами;
- возможность запуска на VPS или удалённом Linux-сервере;
- более предсказуемый workflow при работе с Git и shell-командами.
Если вы даёте AI coding tool доступ к проекту и терминалу, контейнер — это уже не «опция на будущее», а нормальная инженерная практика.
Когда контейнер полезнее локальной установки
Docker особенно полезен, если вы:
- хотите запускать Claude Code изолированно;
- тестируете сторонние репозитории;
- не хотите засорять локальную систему пакетами и конфигами;
- работаете с несколькими dev-окружениями;
- хотите использовать AI coding tools на VPS.
Для локальной разработки
Контейнер удобен, если вы хотите:
- отделить проект от основной системы;
- быстро поднимать однотипное окружение;
- не ставить CLI и зависимости глобально;
- держать AI-инструменты отдельно от остального рабочего окружения.
Для VPS и удалённого сервера
Это один из самых логичных сценариев.
Если у вас есть VPS, вы можете использовать его как постоянное AI dev-окружение:
- подключаться по SSH;
- работать через tmux;
- запускать Claude Code внутри Docker-контейнера;
- хранить проект и окружение на сервере.
Для изолированного dev-окружения
Если вы работаете с кодом, которому не доверяете на 100%, контейнеризация даёт базовый уровень изоляции и контроля.
Что понадобится для установки Claude Code в Docker
Перед началом подготовим минимальный набор.
Docker и Docker Compose
Проверьте, что Docker установлен:
docker --version
docker compose version
Если команды работают — можно продолжать.
Полезно: если Docker у вас ещё не установлен, здесь логично поставить внутреннюю ссылку на статью
«Как установить Docker на VPS»
Папка проекта
Создадим отдельную директорию:
mkdir claude-code-docker
cd claude-code-docker
mkdir project
API key и переменные окружения
Для безопасного хранения секретов используем .env, а не Dockerfile и не жёстко прописанные переменные в образе.
Как установить Claude Code в Docker
Теперь создадим базовое окружение.
Создание Dockerfile
Создайте файл Dockerfile:
FROM node:20-bookworm-slimRUN apt-get update && apt-get install -y \
git \
curl \
bash \
ripgrep \
less \
ca-certificates \
procps \
nano \
&& rm -rf /var/lib/apt/lists/*WORKDIR /workspace# Установите Claude Code CLI по актуальной официальной инструкции
# Пример:
# RUN npm install -g @anthropic-ai/claude-codeCMD ["bash"]
Этот образ даёт минимальный, но практичный набор для работы с кодом и терминалом.
Настройка docker-compose.yml
Создайте файл docker-compose.yml:
services:
claude:
build: .
container_name: claude-code
working_dir: /workspace
volumes:
- ./project:/workspace
env_file:
- .env
stdin_open: true
tty: true
Подключение .env
Создайте .env:
ANTHROPIC_API_KEY=your_api_key_here
И сразу добавьте его в .gitignore:
echo ".env" >> .gitignore
Сборка и запуск контейнера
Запустите:
docker compose up -d --build
Потом зайдите внутрь контейнера:
docker exec -it claude-code bash
После этого можно запускать Claude Code внутри /workspace:
claude
В зависимости от актуальной версии инструмента команда запуска может отличаться, поэтому перед использованием лучше свериться с официальной документацией.
Как безопасно запускать Claude Code в контейнере
Если AI coding tool получает доступ к проекту и shell-командам, вопрос безопасности становится важнее, чем кажется на старте.
Почему не стоит монтировать весь home-каталог
Самая частая ошибка — дать контейнеру доступ ко всей домашней директории.
Плохой вариант:
volumes:
- ~/:/workspace
Гораздо лучше:
volumes:
- ./project:/workspace
Так Claude Code видит только проект, а не все ваши ключи, документы и локальные конфиги.
Как хранить API-ключи
Лучше использовать:
.env- Docker secrets
- runtime environment variables
И не стоит:
- хранить токены в Dockerfile;
- коммитить
.envв Git; - прокидывать лишние секреты «на всякий случай».
Почему лучше запускать контейнер не под root
Работа от обычного пользователя уменьшает риск неприятных побочных эффектов.
Ниже — более практичная конфигурация.
Улучшённый Dockerfile
FROM node:20-bookworm-slimRUN apt-get update && apt-get install -y \
git \
curl \
bash \
ripgrep \
less \
ca-certificates \
procps \
nano \
sudo \
&& rm -rf /var/lib/apt/lists/*RUN useradd -ms /bin/bash appWORKDIR /workspace# Установите Claude Code CLI по актуальной официальной инструкции
# RUN npm install -g @anthropic-ai/claude-codeUSER appCMD ["bash"]
Улучшённый docker-compose.yml
services:
claude:
build: .
container_name: claude-code
working_dir: /workspace
volumes:
- ./project:/workspace
- claude-config:/home/app/.config
- claude-cache:/home/app/.cache
env_file:
- .env
stdin_open: true
tty: true
restart: unless-stoppedvolumes:
claude-config:
claude-cache:
Такой setup уже лучше подходит для реального ежедневного использования.
Claude Code в Docker на VPS: удобный workflow для сервера
Если вы работаете с удалённой инфраструктурой, этот сценарий особенно хорош.
Запуск через SSH
Подключитесь к серверу:
ssh user@your-server-ip
Создайте рабочую папку:
mkdir -p ~/claude-code-docker
cd ~/claude-code-docker
После этого перенесите туда:
Dockerfiledocker-compose.yml.env- папку проекта
И запустите контейнер:
docker compose up -d --build
Работа через tmux
Если вы работаете по SSH, очень желательно использовать tmux.
Создайте сессию:
tmux new -s claude
Потом зайдите в контейнер:
docker exec -it claude-code bash
И запустите Claude Code:
claude
Если SSH-сессия оборвётся, можно вернуться:
tmux attach -t claude
Git и удалённая разработка
Такой workflow особенно удобен, если вы:
- работаете с backend-репозиториями;
- часто используете SSH;
- не хотите грузить локальную машину;
- хотите держать AI dev-окружение постоянно доступным на сервере.
Здесь очень уместна внутренняя ссылка на статью
«Как настроить tmux на Linux-сервере»
Типичные ошибки при запуске Claude Code в Docker
Ниже — самые частые проблемы.
Claude Code не видит файлы
Проверьте, что volume смонтирован правильно:
docker exec -it claude-code bash
ls -la /workspace
Если директория пустая — скорее всего, путь в docker-compose.yml указан неверно.
- от какого пользователя запускается контейнер;
- кому принадлежат файлы на хосте;
- совпадают ли права доступа.
Permission denied в контейнере
Это обычно связано с UID/GID или правами на файлы.
Если проблема появляется, проверьте:
- от какого пользователя запускается контейнер;
- кому принадлежат файлы на хосте;
- совпадают ли права доступа.
Не сохраняется конфиг
Если после перезапуска контейнера приходится логиниться заново, скорее всего, не подключён volume под конфиги:
volumes:
- claude-config:/home/app/.config
Не работает Git push/pull
Обычно проблема в:
- SSH-ключах;
- токене;
- отсутствии доступа к приватному репозиторию.
Если вам важна изоляция, лучше использовать:
- отдельный deploy key;
- отдельный токен;
- либо делать Git-операции на хосте, а не внутри контейнера.
Claude Code в Docker или локально: что выбрать
Оба подхода имеют смысл — зависит от вашего workflow.
| Вариант | Плюсы | Минусы |
|---|---|---|
| Локально | Быстрый старт, минимум настройки | Меньше изоляции, больше мусора в системе |
| Docker | Чистое окружение, контроль доступа, reproducible setup | Чуть сложнее первый запуск |
| VPS + Docker | Удалённая работа, постоянное dev-окружение, удобно для больших проектов | Нужен сервер и SSH workflow |
Если вы используете AI coding tools регулярно, Docker обычно оказывается более удобным и предсказуемым решением.
FAQ
Можно ли запускать Claude Code в Docker?
Да, Claude Code можно запускать внутри Docker-контейнера. Это удобно для изоляции окружения, безопасной работы с проектами, а также для запуска на VPS или удалённом Linux-сервере.
Зачем запускать Claude Code в контейнере?
Контейнер позволяет ограничить доступ к файловой системе, не засорять локальную машину зависимостями и получить воспроизводимое dev-окружение для AI-assisted разработки.
Подходит ли Docker для Claude Code на VPS?
Да, Docker — один из самых удобных способов запускать Claude Code на VPS. Вы можете подключаться по SSH, работать через tmux и использовать сервер как постоянное AI dev-окружение.
Можно ли использовать Claude Code с Docker Compose?
Да, Docker Compose подходит для запуска Claude Code, особенно если нужно подключать volumes, переменные окружения, кэш, конфиги и отдельные директории проекта.
Безопасно ли запускать Claude Code в Docker?
Это безопаснее, чем запуск напрямую на хост-системе, если вы не монтируете лишние директории, не храните токены внутри образа и не даёте контейнеру доступ ко всей системе.
Что лучше: локальная установка Claude Code или Docker?
Локальная установка проще для быстрого старта, но Docker даёт более чистое, контролируемое и удобное окружение — особенно для серверной и контейнерной разработки.
Вывод
Если вы хотите использовать AI coding tools не хаотично, а как часть нормального инженерного workflow, контейнеризация — один из самых разумных шагов.
Claude Code в Docker даёт:
- более чистое окружение;
- лучший контроль доступа;
- удобный workflow для разработки;
- возможность комфортно работать на VPS через SSH и tmux.
Для локальной работы это тоже полезно, но особенно хорошо такой setup раскрывается именно на удалённом Linux-сервере.