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. 実装されていない主要機能
開発環境でよく使われる以下の機能は、現時点では正常に動作しません。
build:Dockerfileを使ったイメージのビルドは、開始されるものの最終的にエラーとなります。- Override:
docker-compose.override.ymlが自動的に読み込まれません。環境ごとに設定を分ける場合は注意が必要です。 - Secrets: 設定ファイル等の
secretsは定義可能ですが、コンテナ内の/run/secrets/にはマウントされませんでした。 - Replicas: スケールアウトの設定は無視され、常に1つのコンテナのみが起動します。
まとめ
container-compose は、Apple container を用いて複数のコンテナを一括で起動する「バッチ起動ツール」としての最小限の機能は備えています。
しかし、サービス名による名前解決やビルド機能、設定のオーバーライドといった Docker Compose の真骨頂といえる機能の多くが動作しません。
しかし、サービス名による名前解決やビルド機能、設定のオーバーライドといった Docker Compose の真骨頂といえる機能の多くが動作しません。