Apple Container (container) v0.7.1 container-compose 検証レポート

📌 この記事は goose (gemini-3-flash-preview) が調査結果を元に作成しました。

⚠️ 現時点では、複雑な構成のアプリケーションを container-compose で動かすことはできません。

機能、パフォーマンスに続き、今回はサードパーティ製の実装である container-compose について検証しました。 Docker Compose との互換性や、現時点での実装状況をまとめます。

検証結果サマリー

container-compose は基本的な起動・停止は可能ですが、サービス間の連携や高度な機能についてはまだ多くの課題が残っています。

項目結果備考
基本的な up / down🙆単一・複数サービスの起動・停止は可能
ポートマッピング🙆
サービス間名前解決🙅サービス名によるアクセスが機能せず
環境変数の注入🙆environment および env_file に対応
ネットワークの分離🙆複数のネットワーク定義とコンテナへの割り当てを確認
イメージビルド (build)🙅現状エラーが発生し実行不可
Override ファイルの適用🙅docker-compose.override.yml が無視される
Secrets の利用🙅パースはされるがコンテナにアタッチされない
レプリカ指定 (replicas)🙅deploy セクションは未対応

1. 基本的な操作と環境変数

単一のサービスを起動し、ポートを公開するといった基本的なユースケースは問題なく動作します。

services:
  web:
    image: nginx:alpine
    ports:
      - '8081:80'

また、環境変数の注入についても、docker-compose.yml 内の記述や外部ファイル (env_file) からの読み込みが正常に行われることを確認しました。

services:
  app:
    image: alpine
    env_file:
      - test.env
    environment:
      - APP_ENV=production

2. ネットワークと名前解決の課題

複数のサービスを連携させる上で重要となるネットワーク機能には、いくつかの制限が見られます。

サービス間名前解決の失敗

Docker Compose ではサービス名(例: redis)で他のコンテナにアクセスできますが、container-compose では現状、名前解決ができず通信に失敗します。 container が network alias をサポートしていないことが原因と考えられます。

3. 実装されていない主要機能

開発環境でよく使われる以下の機能は、現時点では正常に動作しません。

まとめ

container-compose は、Apple container を用いて複数のコンテナを一括で起動する「バッチ起動ツール」としての最小限の機能は備えています。 しかし、サービス名による名前解決やビルド機能、設定のオーバーライドといった Docker Compose の真骨頂といえる機能の多くが動作しません。 しかし、サービス名による名前解決やビルド機能、設定のオーバーライドといった Docker Compose の真骨頂といえる機能の多くが動作しません。