とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

Docker Desktopの代わりに「Finch」を使ってみる

以前、「Docker Desktopと代替ソフトウェア大集合」という記事が弊社ブログにアップされました。

devops-blog.virtualtech.jp

そこで紹介されていた「Finch」というツール、去年の11月末ごろにAWSが公開したのは知っていたんですが、なかなか試せていませんでした。

ということで遅ればせながら私の方でも試してみます。

Finch ???

AWSがOSSで公開したLinuxコンテナをビルド、実行、公開するためのコマンドラインクライアントです。

aws.amazon.com

github.com

新しいプロジェクトである Finch は、ローンチ時点では基本的な機能のみを備えています。現時点 (記事公開日: 2022 年 11 月 22 日時点) では macOS のみのサポートであり

今のところmacOSのみサポートみたいですね。

AWS ではコンテナツールに利用できるオープンソースコンポーネントを検討し始め、すぐに Lima の進歩に感銘を受けました。
...
Lima の目標は、containerd と nerdctl を Mac ユーザーに広めることです。
...
AWS のコントリビューターと協力して、Finch と一緒に Lima と nerdctl を改善できることを楽しみにしています

とのことで、Limanerdctlをよしなに使えるツールのようです。LimaはWindows subsystem for Linux(WSL)のmacOS版のようなツール、nerdctlはcontainerdをコンテナランタイムにしたDocker互換のCLIツールです。つまり、Docker DesktopをLimaとnerdctlで置き換えよう、しかも簡単にっといったツールでしょうか。LimaだからmacOSのみサポートか、なるほど。

インストール

GitHubリポジトリの方にインストール方法が書いてありました。

brew install --cask finch

お試し

Docker Desktop同様、containerdもLinux VMの中で動いてるので、初回はVMの初期化が必要みたいです。

finch vm init

エラーなく完了したらコンテナの立ち上げをしてみましょう。publicなECRにhello-finchというコンテナイメージが公開されているようなので、これを使用します。

finch run --rm public.ecr.aws/finch/hello-finch

こんな感じで鳥さん?が表示されたら成功です。

ビルドも試してみます。Finchのリポジトリにはサンプルも入っているようなので、これを使用します。

git clone https://github.com/runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch

finch imagesをすると、今ビルドしたコンテナイメージが確認できます。

hello-finchが今ビルドしたコンテナです。大丈夫そうですね。

--platformオプションで、実行するプラットフォームを指定できるようです。私の環境はIntel Macなのでarm64のコンテナをビルドしてみたいと思います。

finch build . -t hello-finch:arm64 --platform=arm64

arm64のコンテナイメージができました。

Finchの設定は~/.finch/finc.yamlです。デフォルトだとcpusmemoryだけでしょうか。コア数とメモリ容量ですね。ここをみるとadditional_directoriesというのも設定できるようです。

# AdditionalDirectories: 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)

作業用ディレクトリを設定するオプションで、デフォルトだとホームディレクトリのみがサポートされています。ホームディレクトリ以外にあるディレクトリをマウントしたい場合、このオプションにディレクトリを追加することで、その追加されたディレクトリ以下でもマウントすることができるっといった内容でしょうか。README.mdには/Volumesが追加されています。とくに増やす必要がなければデフォルトのままで十分そうです。

まとめ

今回はFinchのリポジトリにあるREADME.mdを上からなぞる形で実行してみました。Docker DesktopのようにわざわざGUIアプリを起動しなくていいのはいいですね。Most of the commands we use every day are covered, including volume and network management as well as Compose support.ということで、Docker DesktopからFinchに乗り換えても困らないかもしれません。ただ、乗り換えなくても困らないという人が大半な気がするので、どういう人が対象でしょうか?KubernetesがDockerランタイム非推奨になったのでコンテナランタイムでcontainerdを使っておきたい方とか、Limaいいよね、Limaな方とか、Lima+nerdctlのセットアップが面倒な方にはいいかもしれません。私は………

乗り換えてみます!