AWSが開発したコンテナ用コマンドラインクライアントツールのFinchを調べて触ってみた
この投稿は コネヒトアドベントカレンダー の24日目の投稿です。
本日はクリスマスイブですね、みなさんいかがお過ごしでしょうか🎄
さて本日の記事では、AWSが開発したFinchというツールについて取り上げようと思います。
Finchとは
Finch はAWSが開発したLinuxコンテナをビルド・実行・公開するための新しいコマンドラインクライアントです。コンテナ開発用のオープンソースクライアント「Finch」のご紹介 で発表されており、現在利用可能な状況です。
ざっと要点などをまとめると次のような感じです。
- Limanerdctl、containerd、BuildKit などのオープンソースコンポーネントから構成
- 現在GUIの提供はなし
- 現在はmacOS向けのみ提供(ゆくゆくはWindows、Linuxへも対応していく方針)
- AWSサービスとの統合を容易にするための拡張機能も追加されていく方針
使い方
インストールからコンテナ操作まで使い方をみていきましょう。
インストール&セットアップ
brewでインストールできます。
% brew install --cask finch
基盤システムセットアップのために次のコマンドを実行します。仮想環境を初期化し、VMが起動されます。
% finch vm init
コンテナ操作
ECRのパブリックイメージを使い、runコマンドを実行してみます。イメージがない場合はイメージのpullからコンテナ起動までを行なってくれます。
% finch run --rm public.ecr.aws/finch/hello-finch
public.ecr.aws/finch/hello-finch:latest: resolved |++++++++++++++++++++++++++++++++++++++|
index-sha256:a71e474da9ffd6ec3f8236dbf4ef807dd54531d6f05047edaeefa758f1b1bb7e: done |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:705cac764e12bd6c5b0c35ee1c9208c6c5998b442587964b1e71c6f5ed3bbe46: done |++++++++++++++++++++++++++++++++++++++|
config-sha256:6cc2bf972f32c6d16519d8916a3dbb3cdb6da97cc1b49565bbeeae9e2591cc60: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1: done |++++++++++++++++++++++++++++++++++++++|
layer-sha256:ec080f7c92e9eb0227d60951f7c779648989116d97a5926f3e8684d4e46df196: done |++++++++++++++++++++++++++++++++++++++|
elapsed: 4.1 s total: 2.5 Ki (624.0 B/s)
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@ @@@@@@@@@@@
@@@@@@@ @@@@@@@
@@@@@@ @@@@@@
@@@@@@ @@@@@
@@@@@ @@@# @@@@@@@@@
@@@@@ @@ @@@ @@@@@@@@@@
@@@@% @ @@ @@@@@@@@@@@
@@@@ @@@@@@@@
@@@@ @@@@@@@@@@@&
@@@@@ &@@@@@@@@@@@
@@@@@ @@@@@@@@
@@@@@ @@@@@(
@@@@@@ @@@@@@
@@@@@@@ @@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@
Hello from Finch!
Visit us @ github.com/runfinch
イメージのビルドはbuildコマンドで行います。試しにfinchリポジトリで公開されているDockerfileを用いてビルドしてみます。
% git clone git@github.com:runfinch/finch.git
% cd finch/contrib/hello-finch
% finch build . -t hello-finch
...
buildコマンド実行後にはイメージが作成されていました。これはimagesコマンドで確認できます。
% finch images
REPOSITORY TAG IMAGE ID CREATED PLATFORM SIZE BLOB SIZE
hello-finch latest 7c316c1777bf 2 minutes ago linux/arm64 1.7 MiB 1008.3 KiB
public.ecr.aws/finch/hello-finch latest a71e474da9ff 29 minutes ago linux/arm64 1.7 MiB 1007.7 KiB
--platform
オプションを使用し、アーキテクチャを指定することも可能です。
例えば、現在使用しているマシンがM1 Macだとします。
% uname -ms
Darwin arm64
次のようにコマンドを実行すれば linux/amd64 向けにビルドされたコンテナを使用できます。
% finch run --rm --platform=amd64 public.ecr.aws/amazonlinux/amazonlinux uname -ms
...
Linux x86_64
補足
Finchはコマンドをnerdctlクライアントへ渡しており、nerdctl Command Reference を参照してほしいとREADMEなどで誘導していることから、現時点でもnerdctlとの互換性はかなり高そうです。ただ、ただまだ完全にnerdctlのコマンドを網羅しているわけではないとのことで、これから充実していきそうです。不完全な部分などは、AWSのコンテナツール、Finchを動かしてみる の記事が参考になりました。また、普段Dockerを使用しているという方は Dockerからcontainerdへの移行 の記事なども参考になりそうです。
おわりに
Docker for Desktopが有償化されたことによる代替先や、KubernetesでのDockershimを廃止およびcontainerdのnerdctlでの直接操作への移行などから、コンテナツールの1つとしてキャッチアップしておいても良いのではないかと思います。またAWSが開発していることなどから自社のサービスとの統合を図れる拡張機能などがリリースされていく方針にも期待が膨らみます。
Discussion