Finch、Linux コンテナーを作成、実行、公開するためのコマンドライン開発ツール
数日前、Amazonはブログ記事を通じて、 OCI(Open Container Initiative)形式でLinuxコンテナを構築、公開、実行するためのツールセットを開発するオープンソースプロジェクト「Finch」の開始を発表しました。
「Finch」プロジェクトの主な目的は、 Linuxベースではないホストシステム上でLinuxコンテナを扱う作業を簡素化することであると述べられています。
Finch は、コンテナ開発用のオープンソース クライアントです。 そのシンプルなインストーラーは、他のオープン ソース コンポーネントの客観的な配布とともに、最小限のネイティブ クライアントを提供します。 Finch は、推論して選択するオプションをさらに多く作成するのではなく、インストールと使用を容易にし、すべてを結び付けるシンプルなネイティブ クライアントを提供することで、他のプロジェクトの推進を支援することを目指しています。
フィンチについて
Finchプロジェクトは、nerdctl、containerd、BuildKit、Limaなど、複数のオープンソースプロジェクトに依存しています。そのため、これらのコンポーネントを個別に理解して設定する必要なく、すぐに使い始めることができます(Linuxシステム上でコンテナを実行するのは簡単な作業ではありませんが、WindowsやmacOS上でLinuxコンテナを実行する環境を構築するのも容易ではありません)。
仕事のために、私たちは独自の Finch ユーティリティを提供しています。これは、統一されたインターフェイスの背後に各コンポーネントの操作の詳細を隠します。 開始するには、必要なものがすべて含まれている提供されたパッケージをインストールするだけで、すぐにコンテナーを作成して実行できます。
Finch でコマンド ライン インターフェイスを構築するには、nerdctl プロジェクトの開発が使用されます。これは、コンテナーの構築、実行、公開、読み込み (ビルド、実行、プッシュ、プルなど) を行う一連の Docker 互換コマンドを提供します。ルートレス操作、イメージ暗号化、IPFS を使用した P2P イメージ配布、デジタル署名されたイメージ認証などの追加のオプション機能も含まれます。
さらに、containerd はコンテナ管理のランタイムとして使用され、BuildKit ツールキットは OCI 形式のイメージの作成に使用され、Lima は Linux 仮想マシンの起動、ファイル共有とネットワーク ポート転送の構成に使用されることが述べられています。
Finchの機能としては、永続ディスクのサポート、VMの初期化時間の改善、開発者向けの起動時間の半減、Appleの仮想化フレームワークの実験的なサポート、Finch VMにおけるさらなるパフォーマンス高速化、そして既存のパフォーマンス指標を検証するためにコミットごとに実行されるベンチマークツールなどが挙げられます。
現在、Finch はバージョン 1.0 であり、最初の安定バージョンとしてマークされており、実稼働環境での展開や macOS プラットフォームでの日常使用に適しています。 Linux および Windows のクライアント サポートは、将来のリリースで追加される予定です。
私たちは、Finch を、ユーザーがローカルでコンテナーを作成して実行し、コンテナー レジストリと対話することで開発タスクを簡単に達成できる、安定した効率的なランタイム開発ツールにしたいと考えています。 このバージョン 1.0 は、Finch が macOS 上でコンテナ開発者の日常的なツールとして運用環境で使用する準備ができているという私たちの信念を表しています。
プロジェクトの一環として、Amazon は nerdctl プロジェクトの本体に移植されたいくつかの拡張機能も用意しました。 特に、イメージのデジタル署名用のコンポーネントが用意されているほか、SOCI (Seekable OCI) テクノロジーを使用したイメージの作成と起動のサポートも行われています。SOCI (Seekable OCI) テクノロジーは、もともと AWS 用に作成され、コンテナ イメージの読み込みを大幅に高速化します (SOCI を使用すると、SOCI を使用せずに起動を開始できます)。イメージが完全にロードされるのを待ち、ジョブに必要な部分を必要に応じてロードします)。
このプロジェクトに興味のある方は、 FinchのコードはGo言語で記述されており、GitHub上でApache 2.0ライセンスの下で配布されています。リリースの詳細については、AWSブログの公式発表をご覧ください。