Oxcart Скачать
Меню

Dev Containers и Testcontainers на Mac

Сохраняйте единое окружение проекта и быстрые интеграционные тесты. Oxcart запускает Dev Containers и Testcontainers на Mac с Apple silicon через знакомые инструменты Docker. Он показал 2.5 ms на создание через API и 77 ms на удаление 20 контейнеров — лучший результат из трёх протестированных сред, поэтому одноразовые тестовые окружения требуют меньше ожидания.

Обновлено

Почему движок важен для тестов

Набор тестов Testcontainers запускает настоящий Postgres, Kafka или Redis для класса тестов, а затем удаляет его. Dev Container пересобирает и перезапускает всю цепочку инструментов проекта. В обоих случаях время уходит на вызовы жизненного цикла: создание, запуск, остановку и удаление, снова и снова. В этих вызовах Oxcart самый быстрый.

Вызовы жизненного цикла контейнеров из тестов, измеренные в Oxcart
ОперацияOxcart 0.1.2По сравнению со следующим по скорости
Создание через API (без CLI)2.5 ms7×
Запуск через API18.5 ms2,1×
Остановка через API4.0 ms21×
Создание и запуск 20 контейнеров0.69 s2,5×
Остановить и удалить 20 контейнеров77 ms8,9×
docker run --rm … true42 ms3,4×

Oxcart 0.1.2 измерен 2026-10-10 с комплектным клиентом docker 29.9; остальные среды измерены ранее в тот же день на том же Mac и тем же набором тестов с docker 29.4. Apple M5 Max, по 8 CPU и 12 GiB каждой, среды запускались по одной, медианы пяти замеров. Полная таблица: сравнения.

Подключите Dev Containers и Testcontainers к Oxcart

  1. Установите и откройте Oxcart. Настройка создаёт контекст Docker с именем oxcart. Он становится текущим, только если ничто другое не используется; проверьте через docker context show.
  2. Направьте команду docker на Oxcart. Выполните docker context use oxcart или включите Use Oxcart for the docker command в Settings › Command line tools. Отключение возвращает прежний контекст.
  3. Передайте сокет тестовым фреймворкам. Для инструментов, читающих DOCKER_HOST вместо контекстов Docker, экспортируйте его из контекста: export DOCKER_HOST=$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}').
  4. Запустите тесты. Запустите набор тестов как обычно. Testcontainers создаёт, запускает и удаляет контейнеры через Docker Engine API.
  5. Откройте Dev Container. Откройте проект в его Dev Container или выполните devcontainer up --workspace-folder . через CLI Dev Containers.

Testcontainers

Библиотеки Testcontainers (Java, Go, Node, Python, .NET и другие) обращаются напрямую к Docker Engine API, а не через CLI docker. Oxcart согласовывает версию API 1.54 и принимает версии от 1.40 до 1.54, поэтому актуальные версии Testcontainers подключаются без особых настроек, как только находят сокет.

Как найти сокет

Testcontainers сначала проверяет DOCKER_HOST. Сокет Oxcart находится в частной папке состояния с режимом 0600, а путь хранится в контексте Docker oxcart. Экспортируйте его один раз для shell или задайте в настройках запуска тестов IDE:

export DOCKER_HOST=$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}')
./gradlew test        # or: mvn verify, go test ./..., pytest, npm test

Вспомогательные контейнеры и сокет внутри контейнеров

Testcontainers запускает небольшой вспомогательный контейнер для очистки после аварийных тестов; в некоторых конфигурациях сами тесты работают в контейнере. В обоих случаях подключается сокет Docker. В Oxcart -v /var/run/docker.sock:/var/run/docker.sock даёт контейнеру тот же API Docker со стороны Linux, поэтому вспомогательные контейнеры, docker-outside-of-docker, Portainer и Traefik работают ожидаемым образом. Если инструмент пытается подключить в контейнер путь DOCKER_HOST со стороны Mac, стандартная настройка Testcontainers TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE указывает вместо него /var/run/docker.sock.

Образы, собранные из Dockerfile

Testcontainers может собрать образ из Dockerfile в тесте (ImageFromDockerfile и аналоги). Для этого используется конечная точка сборки Engine API, которую Oxcart выполняет через BuildKit, с контекстами tar (обычными и gzip), аргументами сборки, метками и несколькими тегами.

Dev Containers

Dev Container описывает инструменты проекта в виде контейнера, а средства Dev Containers (расширение VS Code, CLI devcontainer и использующие его редакторы) собирают и запускают его через CLI docker. При текущем контексте oxcart это делает Oxcart.

Открывайте проект вместе с его инструментами и вспомогательными сервисами. CLI Dev Containers запускает рабочую область рядом с Postgres, Redis и другими сервисами; пользователь node без root может редактировать рабочую область, а скрипт после создания подготавливает зависимости проекта. Одна конфигурация даёт всей команде одинаковое окружение.

npm install -g @devcontainers/cli
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . bash

Советы по Dev Containers на Apple silicon

  • Архитектура: большинство базовых образов Dev Containers выпускаются для arm64. Образы только для amd64 Oxcart запускает через Rosetta; см. Docker Compose на Apple silicon.
  • Зависимости в томах: храните node_modules, кеши пакетов и данные баз в именованных томах, а исходный код — в рабочей области, подключённой через bind mount.
  • Наблюдение за файлами: изменения на Mac не создают события inotify внутри контейнеров, поэтому файловому наблюдателю в контейнере нужен опрос.
  • Агенты программирования: агент в Dev Container держит свой shell в контейнере проекта; агент на Mac может просматривать сервисы Dev Container через MCP-сервер Oxcart (Docker для ИИ-агентов программирования).

Контекст Docker без сюрпризов

Oxcart создаёт контекст oxcart при настройке и делает текущим, только если это ничему не мешает: текущий контекст — default и его сокет не отвечает. Иначе текущий контекст сохраняется. В Settings › Command line tools есть Use Oxcart for the docker command: он переключает на oxcart и запоминает прежний контекст; отключение возвращает его. Oxcart никогда не создаёт и не заменяет /var/run/docker.sock на Mac, а API никогда не работает по TCP.

Вопросы

Работает ли Testcontainers на Mac с Apple silicon и Oxcart?

Да. Testcontainers обращается к Docker Engine API, реализованному в Oxcart (версии от 1.40 до 1.54), включая конечную точку сборки образов из Dockerfile. Контейнеры также могут подключать сокет Docker по адресу /var/run/docker.sock, как ожидают вспомогательные контейнеры Testcontainers.

Как задать DOCKER_HOST для Testcontainers?

Прочитайте значение из контекста Docker oxcart: docker context inspect oxcart --format '{{.Endpoints.docker.Host}}' выводит путь unix://. Экспортируйте его как DOCKER_HOST в shell или настройках запуска тестов IDE.

Почему интеграционные тесты быстрее с Oxcart?

Тесты тратят значительную часть времени на создание, запуск, остановку и удаление контейнеров. На том же Mac Oxcart показал 2.5 ms на создание через API, 18.5 ms на запуск, 4.0 ms на остановку и 77 ms на остановку и удаление 20 контейнеров — лучший результат из трёх протестированных сред для каждой операции.

Работает ли VS Code Dev Containers с Oxcart?

CLI Dev Containers 0.89.0 собрал и запустил в Oxcart реальную конфигурацию из нескольких сервисов: Postgres и Redis прошли проверки состояния, а пользователь контейнера мог записывать в рабочую область. Средства Dev Containers управляют CLI docker, поэтому направьте его на Oxcart через контекст oxcart.

Работает ли docker-outside-of-docker в Dev Container?

Да. Подключите /var/run/docker.sock в контейнер, и CLI docker внутри будет обращаться к тому же движку. Частные конечные точки Oxcart через этот сокет недоступны, поэтому контейнер может управлять контейнерами, но не обращаться к внутренним функциям Oxcart.

Заменяет ли Oxcart /var/run/docker.sock на моём Mac?

Нет. Oxcart никогда не создаёт и не заменяет /var/run/docker.sock на Mac. Клиенты обращаются к нему через контекст Docker oxcart или указанный в нём путь сокета.

Источники и методика

  • Совместимость: проверенные интеграции Oxcart (сборка через Engine API для docker-py и Testcontainers, CLI Dev Containers 0.89.0, сокет Docker внутри контейнеров) и диапазон версий API.
  • Выбор контекста Docker и настройка командной строки: поставляемый Oxcart.
  • Показатели скорости: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPU и 12 GiB; остальные среды измерены ранее в тот же день на том же Mac и тем же набором тестов с клиентом docker 29.4.

Попробуйте Oxcart на своих проектах

Бесплатно на 60 дней. Затем $20 за пользователя и основную версию — без подписки.

Apple silicon · macOS 26 или новее

Читайте дальше

История версий

Oxcart 0.1.4

Последняя версия

Лицензирование и улучшения.

  • Активация лицензии по защищённой ссылке из электронного письма.
  • Управление лицензией и компьютерами Mac из Settings.
  • Проверка лицензии без интернета.
  • Повышение производительности, доработка интерфейса и исправление ошибок.

Требуется macOS 26.0 или новее

Oxcart 0.1.3

Освобождение памяти при простое.

  • Освобождает память ВМ, когда нет работающих контейнеров.
  • Сохраняет контейнеры, образы, тома и сети.

Требуется macOS 26.0 или новее

Oxcart 0.1.2

Интеграция инструментов командной строки.

  • Переключайтесь между инструментами Docker из комплекта Oxcart и уже установленными.
  • Доработка интерфейса.

Требуется macOS 26.0 или новее

Oxcart 0.1.1

Инструменты Docker в комплекте и управление агентами.

  • В комплект входят Docker CLI 29.9, Compose 5.6 и Buildx 0.38.
  • Интеграция с контекстами Docker и безопасное хранение учётных данных в Связке ключей.
  • Подключение агентов через MCP с отдельными разрешениями и блокировкой для каждого агента.

Требуется macOS 26.0 или новее

Oxcart 0.1.0

Docker-совместимые контейнеры для Apple silicon.

  • Совместимость с Docker CLI, Compose и Buildx.
  • Настройка без интернета: компоненты среды выполнения входят в комплект.
  • Порты упорядочены по проектам и веткам Git.
  • Интеграция с MCP с доступом только для чтения по умолчанию.
  • Автоматические обновления с проверкой подлинности.

Требуется macOS 26.0 или новее