NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

注目のタグ

    【2024年末版】コンテナツールのFinchで何ができるのか改めてまとめてみた

    本記事は  【Advent Calendar 2024】  10日目の記事です。
    🌟🎄  9日目  ▶▶ 本記事 ▶▶  11日目  🎅🎁

    ozawaです。
    先週末、息子に「今日ってなんがつ?」と聞かれたのでふとカレンダーを見ると12月になっていたので夫婦揃って「こっわ」と呟きました。
    歳をとるって怖いですね。

    年末になるとFinchのことが気になるので改めて今までの機能と最新アップデートも含めて、何ができるのかまとめてみました。

    Finchとは

    2022年にAmazonからリリースされたコンテナコマンドラインツールです。現在(2024/12/03時点)はv1.4.1まで開発が進んでいるようです。
    リリース当初はMacOS上のみで稼働するツールとなっており、実態としてはLima VM上でcontainerdが動いているという形でした。

    github.com

    まずは比較的最新のアップデートについて触れてみます。

    Windowsのサポート

    晴れてWindowsで利用可能になりました!
    Windows上ではWSL2が利用できることが前提となっており、msiファイルをインストールすることで利用できます。

    runfinch.com

    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

    runfinch.com

    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、キャッシュ最適化
      • 現在はサポートされていないようです。

    runfinch.com

    SOCI snapshotterが利用可能

    finch.yamlに下記設定を追記することでSOCI snapshotterを利用することができます。

    snapshotters:
        - soci
    

    SOCI は遅延読み込み(Lazy Loading)を実現する技術で、コンテナ起動を高速化することができます。
    これを実現するには、コンテナイメージに対してSOCI Indexを付与する必要があり、そのためのツールとしてSOCI snapshotterがインストールされた環境が必要になります。
    Finchでは上述の設定を有効化することでこの環境を実現できます。

    runfinch.com

    Credential Helperが利用可能

    Amazon ECRのようなイメージレジストリに対して認証する際、ローカルのコンテナランタイムに対して認証情報を設定しておく必要があります。
    Credential Helperを用いることで、ローカルホストにおける認証情報をFinchに受け渡すことができ、イメージレジストリに対してシームレスに認証が可能になります。

    runfinch.com

    finchコマンドオプションで気になったもの

    finchコマンドのオプションでもいくつかアップデートがあったようなので、気になったものをピックアップします。

    finch completion

    finchコマンドでもコマンドライン補完機能が使えるようになりました。公式ページを見る限りだと下記のシェルに対して利用可能なようです。

    • bash
    • fish
    • powershell
    • zsh

    runfinch.com

    finch support-bundle generate

    何かバグがあった際に、このコマンドオプションを実行することでGitHub issue に登録可能なフォーマットでデバッグ情報が出力されるようです。すごい。

    runfinch.com

    まとめ

    OSのサポートも追加されて、機能拡充も進んでいる印象です。
    個人的にはAmazonLinuxへのサポートが入ったことで、AWS上での利用シーンも増えそうな予感がしています。
    また来年の年末、、、とは言わずに何かアップデートがあれば引き続き追っていこうと思います。

    執筆者尾澤公亮

    しがないインフラエンジニアです
    AWSの入門書を執筆したりしてます
    2025 Japan AWS Top Engineer
    AWS Community Builder - Containers

    Twitter:@jstozw

    Amazon 著者ページ:尾澤 公亮:作品一覧、著者略歴 - Amazon.co.jp