🚀

Docker Desktop の代わりになるかも。AWS が OSS として公開した「Finch」を使ってみた。

2022/11/25に公開

概要

  • 2022/11/23 に唐突に公開された Finch なるOSSがAWSより公開されました。
  • どうやら、Docker Desktopの代わりとなりそうな、ローカルマシン上に仮想環境とコンテナランタイム、ビルドツールなどを一式を楽〜に導入できるツールっぽいので試してみたという内容です。

https://twitter.com/AWSOpen/status/1595129507257585664?s=20&t=ze6gGyUyZ0-3IVAJM2LzBA

Finchとは

  • つい先日(2022/10/27)に、Docker社が、Docker の Team プラン、Business プランを値上げするニュースが発表された。期限も短く、急いで対応に追われた企業も多いのではないでしょうか・・・

https://www.itmedia.co.jp/news/articles/2210/18/news133.html

  • まさかこのタイミングでという感じですが、AWS よりローカルマシン上に仮想環境とコンテナランタイム、ビルドツールなどを一式を楽〜に導入できるツールが OSS として公開されました。
  • ちなみに、ローカルマシン上でコンテナの開発環境を整えるには、仮想マシン上にLinuxを用意し、その上でコンテナランタイム、ビルドツール、コマンドライン等を準備する必要があります。
  • それを意識せず楽〜に用意してくれるのが、みなさんご存知の Docker Desktop でした。

じゃあ、Finchは??

  • Finch は、仮想マシン上をMAC上に構築するLima、コンテナランタイムのcontainerd、ビルドツールのBuildKit、containerd経由でコンテナを操作できるコマンドラインのnerdctlなどを一式用意し、簡単にコンテナの開発環境を整えてくれます。

  • 現時点では M1 Apple Silicon の Mac/ Intel ベースの Mac のアーキテクチャのイメージをビルドできます。

  • ただ、今後 Windows や Linux にも対応したいと考えているようです。

Finch でできること

  • Finch は nerdctl(コマンドラインツール) と直接統合されているため、Dockerで使っていたコマンドとオプションはすべて、いい感じに実行できているように動作します。
  • なので、レジストリからイメージをプルして、コンテナをローカルマシンで実行し、既存の Dockerfile を使用してイメージをビルドすることができます。
  • 最初の起動では、ボリュームとネットワークのサポートが用意されています。
  • また、compose も複数のコンテナアプリケーションを実行およびテストするためにサポートされています。
  • 注意点: Finch には現時点で GUI がなく、クラスター管理やその他のコンテナオーケストレーションツールを追加で統合はしていない。単純なコマンドラインクライアントを提供しています。

やってみた

環境

  • Apple M1 Pro
  • RAM 16 GB

導入

  • まずは、Finch を macOS にインストールします。
  • 最新のリリースパッケージをダウンロードします。

https://github.com/runfinch/finch/releases

  • 今回は、M1 Mac を使用しているので、「Finch-v0.1.0-aarch64.pkg」をダウンロードします。

  • インストール後、Finch の仮想環境を初期化して開始する必要があるので、下記のコマンドを実行して VM を起動します。

  • 初期設定には約 1 分くらいかかります。「Finch virtual machine started successfully」が表示されたら完了。

$ finch vm init
INFO[0000] Initializing and starting Finch virtual machine...
..
INFO[0067] Finch virtual machine started successfully

再起動時

  • Finch の仮想環境を開始するためには、以下のコマンドを実行します。
$ finch vm start

停止時

  • Finch の仮想環境を終了するためには、以下のコマンドを実行します。
$ finch vm stop

コンテナを動かしてみた

  • 仮想環境が準備できたので、コンテナを実行してみましょう。
  • ecrにある 事前に用意されているイメージを起動してみましょう。
$ finch run --rm public.ecr.aws/finch/hello-finch

                            @@@@@@@@@@@@@@@@@@@
                        @@@@@@@@@@@@    @@@@@@@@@@@
                      @@@@@@@                  @@@@@@@
                    @@@@@@                        @@@@@@
                  @@@@@@                            @@@@@
                 @@@@@                      @@@#     @@@@@@@@@
                @@@@@                     @@   @@@       @@@@@@@@@@
                @@@@%                     @     @@            @@@@@@@@@@@
                @@@@                                               @@@@@@@@
                @@@@                                         @@@@@@@@@@@&
                @@@@@                                  &@@@@@@@@@@@
                 @@@@@                               @@@@@@@@
                  @@@@@                            @@@@@(
                   @@@@@@                        @@@@@@
                     @@@@@@@                  @@@@@@@
                        @@@@@@@@@@@@@@@@@@@@@@@@@@
                            @@@@@@@@@@@@@@@@@@


Hello from Finch!

Visit us @ github.com/runfinch

composeを試してみよう

  • 次は、compose を試してみます。
  • 使用するサンプルソースは、yelbを使います。
$ tree .
.
├── README.md
├── docker-compose.yaml
└── stack-deploy.yaml

0 directories, 3 files


$ finch compose up -d
INFO[0000] Creating network docker_yelb-network
INFO[0000] Creating network docker_default
INFO[0000] Ensuring image redis:4.0.2
INFO[0000] Ensuring image mreferre/yelb-db:0.6
INFO[0000] Ensuring image mreferre/yelb-appserver:0.6
INFO[0000] Ensuring image mreferre/yelb-ui:0.10
INFO[0000] Creating container docker_yelb-ui_1
INFO[0000] Creating container docker_yelb-appserver_1
INFO[0000] Creating container docker_redis-server_1
INFO[0000] Creating container docker_yelb-db_1

まとめ

  • GUI とかないけど、全然快適に使えましたね。!
  • これ、AWSのサービスとかと統合されたら、マジやばいんじゃ・・・・
  • 今年の re:Inventに期待!

参考文献

https://github.com/runfinch/finch

https://aws.amazon.com/jp/blogs/opensource/introducing-finch-an-open-source-client-for-container-development/

Discussion