Moby:コンテナー基盤を組み立てるための構成要素群
Moby プロジェクト - コンテナ ベースのシステムを組み立てるためのコンテナ エコシステムの共同プロジェクト。
ひと目でわかる
- これは何?
- moby/moby のコンテナーエコシステム、イメージ、ランタイム、ビルドと開発者向け入口を README の範囲で確認します。
- 誰に向いている?
- コンテナーのビルドや実行を支える基盤の構成を理解し、Moby のコードや関連コンポーネントを調べたい開発者と基盤担当者に向きます。完成済みの運用製品、クラウドの管理画面、特定環境の SLA を README だけで期待する人には向きません。
- 商用利用できる?
- できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。直近 1 日以内に新しいコミットがあります。
- 何の言語で書かれている?
- 主に Go です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
Moby が示すコンテナー基盤の範囲
Moby は、ソフトウェアのコンテナ化を可能にし加速するために Docker が作成したオープンソースプロジェクトです。これは「レゴセット」のようなツールキットコンポーネントと表現され、コンテナビルドツール、コンテナレジストリ、オーケストレーションツール、ランタイムなどの構成要素を提供し、それらをカスタムコンテナベースシステムに組み立てるためのフレームワークも提供します。README は、Moby が商用サポートを求める人向けではないことを明確に述べており、コンテナ技術を修正、ハック、実験したいエンジニア、インテグレーター、愛好家向けです。このプロジェクトはエンドユーザーを対象としておらず、ドキュメントと API は、コンテナを直接消費するのではなくツールを構築する開発者を対象としています。
イメージとコンテナーの関係
README には、Moby の開発を導く 4 つの原則がリストされています。モジュール性とは、プロジェクトが明確に定義された機能と API を持つ多くのコンポーネントを含み、それらが連携することを意味します。「バッテリー同梱だが交換可能」とは、Moby が完全な機能を備えたコンテナシステムを構築するのに十分なコンポーネントを提供しますが、そのモジュールアーキテクチャにより、ほとんどのコンポーネントを代替実装に置き換えることができることを意味します。使用可能なセキュリティとは、プロジェクトが使いやすさを損なうことなく安全なデフォルトを提供することを目指していることを意味します。開発者重視とは、API が強力なツールを構築するために機能的で有用であることを意図しており、ドキュメントと UX はエンドユーザーではなく開発者を対象としています。これらの原則は、プロジェクトの設計決定とコミュニティの方向性への開放性を形成します。
ビルドと実行の開発入口
Moby は、コンテナベースのシステムを構築したいエンジニア、インテグレーター、愛好家を対象としています。これは Docker 製品の上流であり、Docker が Docker Engine およびその他の製品コンポーネントの基盤として Moby を使用することを約束していることを意味します。他のプロジェクトも Moby を上流として使用し、そのコンポーネントを多様な方法で再利用することが推奨されています。このプロジェクトは Docker 製品のサポートや機能リクエストの場所ではなく、貢献者がオープンソースコードに取り組むための場所です。リリースは、メンテナー、コミュニティ、ユーザーによるベストエフォートでのみサポートされます。商用サポートについては、README は Docker Desktop と Mirantis Container Runtime を適切な製品として指しています。
デーモン、CLI、ランタイム
2025 年 11 月にリリースされた Docker v29 以降、Go モジュール github.com/docker/docker は非推奨となり、更新されません。サポートされている公開 Go モジュールは、Docker Engine API 用の Go クライアントである github.com/moby/moby/client と、クライアントとサーバーで共有される API タイプを含む github.com/moby/moby/api です。ルートモジュール github.com/moby/moby/v2 は、Docker Engine などのコンテナエンジンを構築するためのコードベースです。バイナリのみを生成し、Go ライブラリとしてインポートすることを意図しておらず、API の安定性保証もありません。Docker Engine のリリースには docker- プレフィックスが付けられ、例えば docker-v29.0.0 のようになります。client と api モジュールには、client/v1.x.x や api/v1.x.x などの独自のバージョンタグがあります。これらの docker- タグは go get で使用してはなりません。
ネットワークとストレージの確認
README は、非推奨の github.com/docker/docker インポートパスから移行する手順を提供しています。github.com/docker/docker/client のインポートを github.com/moby/moby/client に置き換え、github.com/docker/docker/api/types を github.com/moby/moby/api/types に置き換えます。v29 には、オプション構造体、名前変更されたメソッド、移動されたタイプなど、多くの破壊的 API 変更が含まれていると警告しています。Go SDK の変更の完全なリストは、v29.0.0 リリースノートにあります。変更はインポートパスだけに限定されないため、開発者はアップグレード前にこれらのノートを確認する必要があります。
変更をテスト環境へ閉じ込める
Moby は、README に記載され、ライセンステキストによって確認されている Apache License 2.0 の下でライセンスされています。このライセンスは、作品を複製、派生作品を作成、公開表示および実行、サブライセンス、配布するための永続的、世界的、非独占的、無料、ロイヤリティフリーの著作権ライセンスを付与します。また、特定の条件下で特許ライセンスも付与し、特許訴訟が提起された場合には終了します。README には法的注意事項が追加されています。Moby の使用と譲渡は米国および他の政府による制限の対象となる可能性があり、コンプライアンスを確保するのはユーザーの責任です。ライセンスの抜粋には保証やサポート条件は含まれておらず、完全なライセンステキストはリポジトリで入手できます。
Moby は README の開発者向け手順を対象 OS と固定した作業環境で試します。最小の Dockerfile からイメージを作り、コンテナーの起動、標準出力、停止、再起動後の状態を記録します。デーモンへ接続するソケットと実行ユーザー、ネットワーク、ボリュームの保存先を確認し、Moby のソースで得た結果と手元の Docker 製品の既定動作を同一視しません。
Moby はソース、CLI、デーモン、ランタイムの境界を先に記録します。小さな Dockerfile をビルドし、ベースイメージ、コンテキスト、image ID、レイヤーを保存します。foreground と background の起動、標準出力、終了コード、停止後の状態を比較します。Unix socket のパス、接続利用者、ソケット権限、コンテナー内外のユーザー、bind mount と named volume の所有者を確認します。ネットワークの名前解決、公開ポート、localhost からの到達性、削除後の状態も試します。変更したコードは同じ commit でビルドとテストを行い、ソース、ホスト、イメージ取得の失敗を分類します。Moby の基盤説明から監視、脆弱性対応 SLA、クラウド管理機能を推測しません。
編集部の結論
コンテナーのビルドや実行を支える基盤の構成を理解し、Moby のコードや関連コンポーネントを調べたい開発者と基盤担当者に向きます。完成済みの運用製品、クラウドの管理画面、特定環境の SLA を README だけで期待する人には向きません。先に開発用の隔離環境でビルド、イメージ作成、コンテナー起動、ログ取得を行い、使ったランタイム、ソケット、権限、生成物を個別に確認してください。
コミュニティノート