Oxcart ダウンロード
メニュー

MacでDev ContainersとTestcontainersを使う

プロジェクト環境を揃え、統合テストを素早く。Oxcartは、使い慣れたDockerツールを通じてAppleシリコンMac上でDev ContainersとTestcontainersを実行します。API経由の作成は1回2.5 ms、20コンテナの破棄は77 msで、テストした3つのランタイムの中で最速でした。使い捨てのテスト環境でも待ち時間を抑えられます。

更新日

テストでエンジンが重要な理由

Testcontainersのテストスイートは、テストクラス用に実際のPostgres、Kafka、Redisを起動し、終わると破棄します。Dev Containerはプロジェクトのツールチェーン全体を再ビルド・再起動します。どちらも、作成、起動、停止、削除というコンテナのライフサイクル呼び出しを何度も繰り返すために時間を使います。これらはOxcartが最速の処理です。

テストスイートのコンテナライフサイクル呼び出しをOxcartで測定
操作Oxcart 0.1.2次点との比較
API による作成(CLI なし)2.5 ms7×
API による起動18.5 ms2.1×
API による停止4.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、ランタイムを1つずつ実行、5回測定の中央値です。全データは比較ページをご覧ください。

Dev ContainersとTestcontainersをOxcartに接続する

  1. Oxcartをインストールして開きます。 セットアップはoxcartというDockerコンテキストを作ります。ほかのものが使われていない場合にだけ現在のコンテキストにするので、docker context showで確認してください。
  2. dockerコマンドの接続先をOxcartにします。 docker context use oxcartを実行するか、Settings › Command line toolsのUse Oxcart for the docker commandをオンにします。オフにすると以前のコンテキストに戻ります。
  3. テストフレームワークにソケットを渡します。 DockerコンテキストではなくDOCKER_HOSTを読むツールには、コンテキストから値をエクスポートします:export DOCKER_HOST=$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}')。
  4. テストを実行します。 いつもどおりテストスイートを実行します。TestcontainersはDocker Engine APIを使ってコンテナを作成、起動、削除します。
  5. Dev Containerを開きます。 プロジェクトをそのDev Containerで開くか、Dev Containers CLIでdevcontainer up --workspace-folder .を実行します。

Testcontainers

Testcontainersライブラリ(Java、Go、Node、Python、.NETなど)は、docker CLIではなくDocker Engine APIと直接通信します。OxcartはAPIバージョン1.54をネゴシエートし、1.40〜1.54を受け付けるため、現在のTestcontainersリリースはソケットを見つけられれば特別な設定なしで接続できます。

ソケットを見つける

Testcontainersは最初にDOCKER_HOSTを確認します。Oxcartのソケットはプライベートな状態フォルダー内にあり、モードは0600、パスはoxcart Dockerコンテキストに保存されています。シェルごとに1回エクスポートするか、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により、コンテナがLinux側の内部から同じDocker APIを使えるので、ヘルパーコンテナ、docker-outside-of-docker、Portainer、Traefikが期待どおりに動きます。ツールがMac側のDOCKER_HOSTパスをコンテナにマウントしようとする場合は、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拡張機能、devcontainer CLI、それを使うエディタ)はdocker CLIでビルド・実行します。現在のコンテキストがoxcartなら、接続先はOxcartです。

ツールチェーンと関連サービスを揃えてプロジェクトを開きます。Dev Containers CLIは、PostgresやRedisなどのサービスとともにワークスペースを起動します。rootではないnodeユーザーでワークスペースを編集でき、プロジェクトの作成後スクリプトが依存関係を準備します。チームメンバーも同じ設定から同じ環境を得られます。

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

AppleシリコンでDev Containersを使うヒント

  • アーキテクチャ:多くのDev Containerベースイメージにarm64版があります。amd64専用イメージはOxcartがRosettaで実行します。AppleシリコンでDocker Composeを使うをご覧ください。
  • 依存関係はボリュームへ:node_modules、パッケージキャッシュ、データベースのデータは名前付きボリュームに置き、ソースはバインドマウントされたワークスペースに残します。
  • ファイル監視:Macでの編集はコンテナ内でinotifyイベントを発生させないため、コンテナ内の監視ツールではポーリングを使います。
  • コーディングエージェント:Dev Container内で動くエージェントのシェルはプロジェクトのコンテナ内に留まります。Mac上のエージェントは、OxcartのMCPサーバーからDev Containerのサービスを確認できます(AIコーディングエージェント向けDocker)。

意図せず切り替わらないDockerコンテキスト

Oxcartはセットアップ時にoxcartコンテキストを作成し、既存の利用に影響しない場合にだけ切り替えます。具体的には、現在のコンテキストがdefaultで、そのソケットが応答しない場合です。それ以外は現在のコンテキストを維持します。Settings › Command line toolsのUse Oxcart for the docker commandを使うとoxcartに切り替え、以前のコンテキストを記憶します。オフにすると元に戻ります。OxcartはMac上の/var/run/docker.sockを作成・置換せず、APIをTCPで公開することもありません。

よくある質問

AppleシリコンMacのOxcartでTestcontainersは使えますか?

はい。Testcontainersは、Oxcartが実装するDocker Engine API(バージョン1.40〜1.54)と通信します。Dockerfileからのイメージ作成に使うビルドエンドポイントも含まれます。また、Testcontainersのヘルパーコンテナが想定する/var/run/docker.sockにDockerソケットをマウントできます。

Testcontainers用のDOCKER_HOSTを設定するには?

oxcart Dockerコンテキストから取得します。docker context inspect oxcart --format '{{.Endpoints.docker.Host}}'がunix://パスを出力するので、シェルやIDEのテスト実行設定でDOCKER_HOSTとしてエクスポートしてください。

Oxcartで統合テストが速くなるのはなぜですか?

テストスイートは、コンテナの作成、起動、停止、削除に多くの時間を使います。同じMacでOxcartは、API経由の作成が1回2.5 ms、起動が18.5 ms、停止が4.0 ms、20コンテナの停止・削除が77 msでした。すべての項目で、テストした3つのランタイムの中で最速でした。

VS Code Dev ContainersはOxcartで使えますか?

Dev Containers CLI 0.89.0は、Oxcart上で実際の複数サービス構成をビルド・起動し、PostgresとRedisは正常、ワークスペースはコンテナユーザーが書き込み可能でした。Dev Containersのツールはdocker CLIを操作するので、oxcartコンテキストでCLIの接続先をOxcartにしてください。

Dev Containerでdocker-outside-of-dockerは使えますか?

はい。/var/run/docker.sockをコンテナにマウントすると、その中のdocker CLIが同じエンジンと通信します。このソケットからOxcartのプライベートエンドポイントへのアクセスは拒否されるため、コンテナはほかのコンテナを管理できますが、Oxcart自体の内部にはアクセスできません。

OxcartはMacの/var/run/docker.sockを置き換えますか?

いいえ。OxcartはMac上の/var/run/docker.sockを作成・置換しません。クライアントはoxcart Dockerコンテキスト、またはそのコンテキストが示すソケットパスを使って接続します。

出典と測定方法

  • 互換性:Oxcartで検証済みの連携(docker-pyとTestcontainersが使うEngine APIビルド、Dev Containers CLI 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日間無料。その後は1ユーザー・1メジャーバージョンあたり $20。サブスクリプションではありません。

Apple silicon · macOS 26 以降

次に読む

リリースノート

Oxcart 0.1.4

最新リリース

ライセンス機能と各種改善。

  • メールの安全なリンクによるライセンスの有効化。
  • SettingsからライセンスとMacを管理。
  • ライセンスのオフライン検証。
  • パフォーマンス改善、UIの調整、不具合修正。

macOS 26.0以降が必要です

Oxcart 0.1.3

アイドル時のメモリ回収。

  • コンテナが実行されていないときに、VMのメモリを回収。
  • コンテナ、イメージ、ボリューム、ネットワークを保持。

macOS 26.0以降が必要です

Oxcart 0.1.2

コマンドラインツールの統合。

  • Oxcart付属のDockerツールと、すでにインストールされているDockerツールを切り替え。
  • UIの調整。

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

Appleシリコン向けのDocker互換コンテナ。

  • Docker CLI、Compose、Buildxとの互換性。
  • 実行環境のコンポーネントを同梱し、オフラインでセットアップ可能。
  • プロジェクトとGitブランチごとにポートを整理。
  • デフォルトで読み取り専用のMCP連携。
  • 検証済みの自動アップデート。

macOS 26.0以降が必要です