Finch は、コンテナ開発用のオープンソース クライアントです。そのシンプルなインストーラーは、他のオープン ソース コンポーネントの独自のディストリビューションとともに、最小限のネイティブ クライアントを提供します。 Finch は、推論して選択するオプションをさらに多く作成するのではなく、それらを簡単にインストールして使用できるようにすると同時に、すべてを結び付けるシンプルなネイティブ クライアントを提供することで、他のプロジェクトの推進を支援することを目指しています。
Finch は、nerdctl と統合されたシンプルなクライアントを提供します。コアの build/run/push/pull コマンドの場合、Finch は面倒な作業を nerdctl に依存します。これはコンテナ管理のためにcontainerdと連携し、Open Container Initiative (OCI)イメージビルドを処理するためにBuildKitと連携します。これらのコンポーネントはすべてまとめられ、Lima によって管理される仮想マシン内で実行されます。
Finch を使用すると、詳細をすべて追求することなく、これらの既存のプロジェクトを活用できます。インストールしてコンテナーの実行と構築を開始するだけです。
近い将来、プロジェクトにはさらに完全なドキュメントとチュートリアルのセットが追加される予定です。とりあえずここから始めましょう。上で述べたように、 finch
nerdctl
と統合されています。 Finch はアップストリーム コマンドを 100% 実装しているわけではありませんが、最も一般的なコマンドは適切に配置されており、機能しています。 nerdctl コマンド リファレンスは、ドキュメントの出発点として信頼できます。
macOS で Finch を使い始めるには、前提条件は次のとおりです。
プロジェクトの GitHub リリース ページからアーキテクチャのリリース パッケージをダウンロードし、ダウンロードしたらダブルクリックして指示に従います。
brew install --cask finch
Windows で Finch を使い始めるには、前提条件は次のとおりです。
wsl --install
)プロジェクトの GitHub リリース ページから MSI インストーラーをダウンロードし、ダウンロードしたらダブルクリックして指示に従います。
インストールが完了したら、基礎となるシステムをセットアップするためにfinch vm init
1 回必要になります。通常、この初期設定には約 1 分かかります。
finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully
Linux で Finch を使い始めるには、前提条件は次のとおりです。
現在、Finch インストーラーは Amazon Linux 上にパッケージ化され、配布されています。 Amazon Linux を使用していない場合は、GitHub リリース ページからバイナリをダウンロードし、finch.spec ファイルの規則に従って依存関係をインストール/構成できます。詳細な手順については、runfinch.com をご覧ください。
これでテストコンテナを実行できるようになりました。コンテナー開発に慣れている場合は、予想どおりrun
コマンドを使用できます。
finch run --rm public.ecr.aws/finch/hello-finch
コンテナーを初めて使用する場合は、とてもエキサイティングです。 Finch をインストールして初期化した後、上記のコマンドを試してください。 run
コマンドは、イメージがまだ存在しない場合はローカルにイメージを取得し、コンテナーを作成して実行します。便利な--rm
オプションは、実行が完了するとコンテナ インスタンスを削除することに注意してください。
イメージを構築するには、finch クライアント リポジトリの簡単な例を試してください。
git clone https://github.com/runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch
..
繰り返しになりますが、コンテナーを初めて使用する場合は、コンテナー イメージを構築しただけです。ニース!
build
コマンドはビルド システム (Finch の場合は Moby Project の BuildKit) と連携して、Dockerfile から OCI イメージを作成します。これは、イメージを作成するための特殊なレシピです。このイメージを使用してコンテナを作成できます。 finch images
コマンドを使用すると、ローカルにプルおよびビルドされたイメージを確認できます。
Finch を使用すると、 --platform
オプションを使用して、アーキテクチャ間でコンテナーを簡単に構築して実行できます。 run
コマンドと一緒に使用すると、指定されたアーキテクチャを使用してコンテナーが作成されます。たとえば、Apple Silicon M1 システムでは、 --platform=amd64
コンテナを作成し、x86-64 アーキテクチャを使用してコンテナ内でプロセスを実行します。
uname -ms
Darwin arm64
finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
Linux x86_64
ビルドで--platform
オプションを使用することもできるため、マルチプラットフォーム イメージを簡単に作成できます。
ここでは、コンテナーを初めて使用するユーザー向けのドキュメントとチュートリアル、およびより上級ユーザー向けのヒントやテクニックをさらに作成する予定です。今のところ、タイヤを蹴る準備ができている場合は、実行してください。他のツールで使い慣れたほとんどのコマンドとオプションが表示され、期待どおり (または、上流の nerdctl で文書化されているとおり) 表示されます。ボリュームやネットワークの管理、Compose のサポートなど、私たちが日常的に使用するコマンドのほとんどがカバーされています。 Finch が希望どおりの動作をしない場合は、Issue または Pull Request を開くことを検討してください。
インストーラーは Finch とその依存関係をシステムの独自の領域にインストールし、他のコンテナー開発ツールと問題なく共存できます。 Finch は新しいプロジェクトであり、他のツールを直接置き換えるものではありません。したがって、他のコマンド名をfinch
にエイリアスしたりリンクしたりすることはお勧めしません。
Finch はシンプルで拡張可能な構成を備えています。
${HOME}/.finch/finch.yaml
に構成ファイルが初回実行時に生成されます。現在、この構成ファイルには、基盤となる仮想マシンのシステム リソース制限のオプションがあります。これらのデフォルト制限は、ホスト システムで利用可能なリソースに基づいて動的に生成されますが、構成ファイルを手動で編集することで変更できます。
構成オプションの完全なリストについては、macOS の finch 構造体を確認してください。
finch.yaml
例は次のようになります。
# cpus: the amount of vCPU to dedicate to the virtual machine. (required)
cpus : 4
# memory: the amount of memory to dedicate to the virtual machine. (required)
memory : 4GiB
# snapshotters: the snapshotters a user wants to use (the first snapshotter will be set as the default snapshotter)
# Supported Snapshotters List:
# - soci https://github.com/awslabs/soci-snapshotter/tree/main
# Once the option has been set the snapshotters will be installed on either finch vm init or finch vm start.
# The snapshotters binary will be downloaded on the virtual machine and will be configured and ready for use.
# To change your default snpahotter back to overlayfs, simply remove the snapshotters value from finch.yaml or set snapshotters to `overlayfs`
# To completely remove the snapshotters' binaries, shell into your VM and remove /usr/local/bin/{snapshotter binary}
# and remove the snapshotter configuration in the containerd config file found at /etc/containerd/config.toml
snapshotters :
- soci
# creds_helpers: a list of credential helpers that will be installed and configured automatically.
# Supported Credential Helpers List:
# - ecr-login https://github.com/awslabs/amazon-ecr-credential-helper
# Once the option has been set the credential helper will be installed on either finch vm init or finch vm start.
# The binary will be downloaded on the host machine and a config.json will be created and populated inside the ~/.finch/ folder
# if it doesn't already exist. If it already exists, the value of credsStore will be overwritten.
# To opt out of using the credential helper, remove the value from the credsStore parameter of config.json
# and remove the creds_helper value from finch.yaml.
# To completely remove the credential helper, either remove the binary from ~/.finch/creds-helpers or remove the creds-helpers
# folder entirely. (optional)
creds_helpers :
- ecr-login
# additional_directories: the work directories that are not supported by default. In macOS, only home directory is supported by default.
# For example, if you want to mount a directory into a container, and that directory is not under your home directory,
# then you'll need to specify this field to add that directory or any ascendant of it as a work directory. (optional)
additional_directories :
# the path of each additional directory.
- path : /Volumes
# vmType: sets which Hypervisor to use to launch the VM. (optional)
# Only takes effect when a new VM is launched (only on vm init).
# One of: "qemu", "vz".
# - "qemu": Uses QEMU as the Hypervisor.
# - "vz" (default): Uses Virtualization.framework as the Hypervisor.
#
# NOTE: prior to version 1.2.0, "qemu" was the default, and it will still be the default for
# macOS versions that do not support Virtualization.framework (pre-13.0.0).
vmType : " vz "
# rosetta: sets whether to enable Rosetta as the binfmt_misc handler for x86_64
# binaries inside the VM, as an alternative to qemu user mode emulation. (optional)
# Only takes effect when a new VM is launched (only on vm init).
# Only available when using vmType "vz" on Apple Silicon running macOS 13+.
# If true, also sets vmType to "vz".
#
# NOTE: while Rosetta is generally faster than qemu user mode emulation, it causes
# some performance regressions, as noted in this issue:
# https://github.com/lima-vm/lima/issues/1269
rosetta : false
# dockercompat: a configuration parameter to activate finch functionality to accept Docker-like commands and arguments.
# For running DevContainers on Finch, this functionality will convert Docker-like arguments into compatible nerdctl commands and arguments.
dockercompat : true
$env:LOCALAPPDATA.finchfinch.yaml
に構成ファイルが最初の実行時に生成されます。現在、この構成ファイルには、WSL の制限のため、システム リソース制限のオプションがありません。
構成オプションの完全なリストについては、Windows の finch 構造体を確認してください。
finch.yaml
例は次のようになります。
# snapshotters: the snapshotters a user wants to use (the first snapshotter will be set as the default snapshotter)
# Supported Snapshotters List:
# - soci https://github.com/awslabs/soci-snapshotter/tree/main
# Once the option has been set the snapshotters will be installed on either finch vm init or finch vm start.
# The snapshotters binary will be downloaded on the virtual machine and will be configured and ready for use.
# To change your default snpahotter back to overlayfs, simply remove the snapshotters value from finch.yaml or set snapshotters to `overlayfs`
# To completely remove the snapshotters' binaries, shell into your VM and remove /usr/local/bin/{snapshotter binary}
# and remove the snapshotter configuration in the containerd config file found at /etc/containerd/config.toml
snapshotters :
- soci
# creds_helpers: a list of credential helpers that will be installed and configured automatically.
# Supported Credential Helpers List:
# - ecr-login https://github.com/awslabs/amazon-ecr-credential-helper
# Once the option has been set the credential helper will be installed on either finch vm init or finch vm start.
# The binary will be downloaded on the host machine and a config.json will be created and populated inside the ~/.finch/ folder
# if it doesn't already exist. If it already exists, the value of credsStore will be overwritten.
# To opt out of using the credential helper, remove the value from the credsStore parameter of config.json
# and remove the creds_helper value from finch.yaml.
# To completely remove the credential helper, either remove the binary from $env:LOCALAPPDATA.finchcreds-helpers or remove the creds-helpers
# folder entirely. (optional)
creds_helpers :
- ecr-login
# sets wsl2 Hypervisor to use to launch the VM. (optional)
vmType : " wsl2 "
# dockercompat: a configuration parameter to activate finch functionality to accept Docker-like commands and arguments.
# For running DevContainers on Finch, this functionality will convert Docker-like arguments into compatible nerdctl commands and arguments.
dockercompat : true
このセクションには、Finch の使用に関してよくある質問が含まれています。
LIMA_HOME=/Applications/Finch/lima/data /Applications/Finch/lima/bin/limactl shell finch
wsl -d lima-finch
私たちはこのプロジェクトをオープンに開始できることに興奮しており、皆様からのご意見をお待ちしております。アイデアがある場合、またはバグを見つけた場合は、問題を開いてください。提案したいことやブレインストーミングしたいことがありましたら、お気軽にディスカッションを開始してください。プルリクエストも大歓迎です!貢献の詳細と、興味のある方向けのレビュー担当者とメンテナの役割へのパスについては、「貢献」ドキュメントを参照してください。
プロジェクトが少し勢いを増すと、メンテナーはマイルストーンの作成を開始し、定期的なリリースのリズムを確立しようとします。やがて、コミュニティから寄せられるアイデアや問題に基づいて公開ロードマップの作成も開始する予定です。すでに次のようなアイデアがいくつかあります。
私たちとチャットしたい場合は、CNCF スラックの#finch
チャンネルで私たちを見つけてください。