本記事は
【Advent Calendar 2024】
10日目の記事です。
🌟🎄
9日目
▶▶ 本記事 ▶▶
11日目
🎅🎁
ozawaです。
先週末、息子に「今日ってなんがつ?」と聞かれたのでふとカレンダーを見ると12月になっていたので夫婦揃って「こっわ」と呟きました。
歳をとるって怖いですね。
年末になるとFinchのことが気になるので改めて今までの機能と最新アップデートも含めて、何ができるのかまとめてみました。
- Finchとは
- Windowsのサポート
- Linuxのサポート
- DevcontainersへのFinch統合
- SOCI snapshotterが利用可能
- Credential Helperが利用可能
- finchコマンドオプションで気になったもの
- まとめ
Finchとは
2022年にAmazonからリリースされたコンテナコマンドラインツールです。現在(2024/12/03時点)はv1.4.1まで開発が進んでいるようです。
リリース当初はMacOS上のみで稼働するツールとなっており、実態としてはLima VM上でcontainerdが動いているという形でした。
まずは比較的最新のアップデートについて触れてみます。
Windowsのサポート
晴れてWindowsで利用可能になりました!
Windows上ではWSL2が利用できることが前提となっており、msiファイルをインストールすることで利用できます。
VMにログインしたい場合は下記のコマンドでログイン可能です。
wsl -d lima-finch
Linuxのサポート
こちらもサポートしました!AmazonLinux2 or AmazonLinux2023を利用する場合はパッケージマネージャ経由でインストール可能です。
- AmazonLinux2023
$ sudo dnf install runfinch-finch
- AmazonLinux2
$ sudo amazon-linux-extras enable docker $ sudo yum install runfinch-finch
AmazonLinuxの場合は利用ハードルが低そうなので、AWS上での使い道が増えそうかなと思いました。
DevcontainersへのFinch統合
VSCodeでアプリケーションの動作確認用に利用できるDevcontainersですが、こちらのコンテナランタイムにFinchを指定できるようになりました。
finch.yamlにおいて dockercompat
属性が追加されており、下記の設定を追加することで利用可能になるようです。
dockercompat: true
現状はいくつかのバグや制限があることが公式ページに記載されています。
- コンテナ識別子の文字数制限
- 2.0.0 以前のバージョンの nerdctl を使用する finch の場合、デフォルトのコンテナ名が長すぎることによって検証に失敗するため、以下の公式ページにある例のように、76 文字未満のコンテナ名を宣言するための構成オプションを含める必要があります。
## example using the directory as container name "runArgs": ["--name", "${localWorkspaceFolderBasename}"],
- docker composeの利用制限
docker compose
を使用する場合は、DOCKER_COMPOSE_VERSION
の値を> 2.9.0
に設定する必要があります。
- Docker in Docker、キャッシュ最適化
- 現在はサポートされていないようです。
SOCI snapshotterが利用可能
finch.yamlに下記設定を追記することでSOCI snapshotterを利用することができます。
snapshotters: - soci
SOCI は遅延読み込み(Lazy Loading)を実現する技術で、コンテナ起動を高速化することができます。
これを実現するには、コンテナイメージに対してSOCI Indexを付与する必要があり、そのためのツールとしてSOCI snapshotterがインストールされた環境が必要になります。
Finchでは上述の設定を有効化することでこの環境を実現できます。
Credential Helperが利用可能
Amazon ECRのようなイメージレジストリに対して認証する際、ローカルのコンテナランタイムに対して認証情報を設定しておく必要があります。
Credential Helperを用いることで、ローカルホストにおける認証情報をFinchに受け渡すことができ、イメージレジストリに対してシームレスに認証が可能になります。
finchコマンドオプションで気になったもの
finchコマンドのオプションでもいくつかアップデートがあったようなので、気になったものをピックアップします。
finch completion
finchコマンドでもコマンドライン補完機能が使えるようになりました。公式ページを見る限りだと下記のシェルに対して利用可能なようです。
- bash
- fish
- powershell
- zsh
finch support-bundle generate
何かバグがあった際に、このコマンドオプションを実行することでGitHub issue に登録可能なフォーマットでデバッグ情報が出力されるようです。すごい。
まとめ
OSのサポートも追加されて、機能拡充も進んでいる印象です。
個人的にはAmazonLinuxへのサポートが入ったことで、AWS上での利用シーンも増えそうな予感がしています。
また来年の年末、、、とは言わずに何かアップデートがあれば引き続き追っていこうと思います。