Claude Info
DevOps

Code Container

kevinMEH/code-container

Запускайте Claude Code, OpenCode, Codex с полными правами в безопасной Docker-среде. Защищает хост-систему от деструктивных операций, сохраняет состояние контейнера между сессиями, поддерживает кастомные инструменты и точки монтирования.

Установка

terminal
bash
npm install -g code-container

README

Code Container: Изолированная Docker-среда для вашего автономного AI-агента.

Просто. Легковесно. Безопасно.

Быстрый старт

Требования

  • DockerDocker Desktop или Docker Engine
  • POSIX-совместимая система — Linux, macOS, WSL

Установка

  1. container доступен как npm-пакет. Для установки выполните:

    npm install -g code-container
  2. Затем выполните следующую команду, чтобы скопировать конфиги AI-агентов из ~/ в ~/.code-container/configs для монтирования в контейнер:

    container init

    Либо скопируйте конфиги вручную:

    • ~/.config/opencode~/.code-container/configs/.opencode
    • ~/.codex~/.code-container/configs/.codex
    • ~/.copilot~/.code-container/configs/.copilot
    • ~/.claude~/.code-container/configs/.claude
    • ~/.claude.json~/.code-container/configs/.claude.json
    • ~/.gemini~/.code-container/configs/.gemini
  3. Наконец, соберите Docker-образ. Это может занять до 5 минут:

    container build

Готово 🎉 — container готов к использованию.

Миграция с container.sh

[!Note] Вы всё ещё используете shell-скрипт версию container? Перейдите на npm-пакет, выполнив следующее:

bash
# Выйдите из всех контейнеров и сохраните важные данные...
npm install -g code-container
bash scripts/migrate.sh     # Перенос конфигов в ~/.code-container/configs
bash scripts/cleanup.sh     # Опционально: очистка файлов конфигурации
container build

Примечание: убедитесь, что все данные сохранены и контейнер готов к удалению. Контейнеры предыдущей версии несовместимы с контейнерами текущей версии.

Попробуйте Nitro

Псст: попробуйте мой новый проект: Nitro — простой и эффективный Bash-агент. В 11 раз дешевле и в 75 раз эффективнее Claude Code для Bash-задач.

npm install -g @aerovato/nitro

Использование

Перейдите в любой проект и запустите container, чтобы смонтировать проект и войти в контейнер:

bash
cd /path/to/your/project
container                    # Войти в контейнер

Внутри контейнера: запустите агента и работайте как обычно:

bash
opencode                     # Запустить OpenCode
npm install <package>        # Сохраняется в рамках контейнера
# ...

Состояние контейнера сохраняется. При следующем запуске работа продолжается с того же места. Диалоги с AI и настройки сохраняются для всех проектов.

Основные команды

bash
container                  # Войти в контейнер
container run /path/to     # Войти в контейнер для конкретного проекта
container list             # Список всех контейнеров
container stop             # Остановить контейнер текущего проекта
container remove           # Удалить контейнер текущего проекта
container build            # Собрать Docker-образ
container clean            # Удалить все остановленные контейнеры
container init             # Скопировать/перекопировать файлы конфигурации

Возможности

Агенты без ограничений

Не хотите настраивать вручную? Клонируйте этот репозиторий и попросите агента настроить всё за вас:

Please configure all my container harnesses to run without permissions.

Деструктивные действия локализованы внутри контейнеров.

  • Вы можете запускать агента с полными правами.
  • Чтобы настроить агента на работу без разрешений, см. Permissions.md.

Кастомизация

Не хотите настраивать вручную? Клонируйте этот репозиторий и попросите агента настроить всё за вас:

Add the following packages to the container environment: ... Add the following Docker flags to the container environment: ... Add a custom mount point to the container environment: ...

Легко добавляйте собственные инструменты и точки монтирования.

Добавление инструментов/пакетов: отредактируйте ~/.code-container/Dockerfile.User и пересоберите образ:

dockerfile
FROM code-container-base:latest

RUN apt-get update && apt-get install -y postgresql-client redis-tools

Уведомление об устаревании: ~/.code-container/Dockerfile устарел и больше не используется. Если вы ранее вносили изменения в этот файл, перенесите свои RUN-команды в ~/.code-container/Dockerfile.User.

Добавление точек монтирования: отредактируйте ~/.code-container/MOUNTS.txt и переинициализируйте контейнеры:

/absolute/path/on/host:/path/in/container /absolute/path/on/host:/path/in/container:ro

Добавление Docker-флагов:

Отредактируйте ~/.code-container/DOCKER_FLAGS.txt, чтобы передавать дополнительные флаги в docker run и docker exec:

# Переменные окружения -e MY_VAR=value

Для флагов, применимых только к docker run (например, проброс портов, сеть, GPU), используйте ~/.code-container/DOCKER_RUN_FLAGS.txt:

# Проброс портов -p 4040:4040 -p 3000:3000 # Поддержка GPU --gpus all

Каждая строка разбирается как shell-команда. Пустые строки и строки, начинающиеся с #, игнорируются.

Безопасность

  • Хост-файловая система защищена: деструктивные операции затрагивают только контейнер.
  • Изоляция проектов предотвращает взаимное влияние контейнеров друг на друга.
  • Примечание: Git-конфиг и SSH-ключи монтируются с хоста в режиме только для чтения для поддержки Git-операций.
  • Внимание: Файлы проекта всё равно могут быть удалены агентом — всегда используйте систему контроля версий.
  • Внимание: Сетевой доступ по-прежнему доступен; данные могут быть переданы по сети.

⚠️ Предупреждение безопасности:

  • Основная цель container — защитить систему от непреднамеренного выполнения команд вроде rm или apt.
    • container предполагает, что агент действует добросовестно.
  • container не защищает от prompt-инъекций или сетевой утечки данных в случае, если агент действует злонамеренно.
    • Не рекомендуется загружать или работать с непроверенным программным обеспечением даже внутри контейнера.
    • Чувствительные данные внутри контейнера всё равно могут быть похищены злоумышленником.

Похожие скиллы