見出し画像

Docker Desktop の代替となるか? AWS からリリースされた Finch を試してみた

はじめに

こんにちは!DAAE 部の白木です。
AWS からリリースされたコンテナ環境構築・管理ツールの Finch を試してみました。

この記事では Finch を使って以下の内容を紹介します。

  • インストール

  • Hello world (finch run)

  • 複数コンテナの起動とコンテナ間通信の確認 (finch compose)

  • 設定確認と変更 (finch info)

  • アンインストール

Finch とは?

ローカルマシン上でかんたんにコンテナ環境を構築でき、開発に利用できるツールです。

OSS のツール(Lima, nerdctl, containerd, BuildKit)を使い Docker Desktop(と Docker コマンド)と同様にコンテナを使った開発環境の構築・管理ができます。

ちょうど 2022 年 10 月にDocker Desktop の Team プラン値上げ発表があり、上記ツールを組み合わせてコンテナ環境を作ろうとしていた開発者にはベストなタイミングでの発表となりました。

※執筆時点(2022/11/30)では macOS 版のみ提供

Finch リリースの記事: Introducing Finch: An Open Source Client for Container Development

環境

この記事では以下の環境で動作を確認しています。

$ uname -ms
Darwin arm64

$ sw_vers
ProductName: macOS
ProductVersion: 12.6.1
BuildVersion: 21G217

インストール

GitHub の Release から pkg をダウンロードしてインストールします。
M1 Mac での検証のためFinch-v0.1.0-aarch64.pkgを選択しました。

$ finch --version
finch version v0.1.0

セットアップ

$ finch vm init

~~ 省略 ~~

INFO[0005] Initializing and starting Finch virtual machine...
INFO[0104] Finch virtual machine started successfully
FATA[0104] failed to setup ssh client: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

最後 ssh client エラーが出ていますが VM の起動自体は成功しています。(Issue が上がっています)

動作確認(hello-finch)

finch run で hello-finch を実行してみます。

$ finch run --rm public.ecr.aws/finch/hello-finch
public.ecr.aws/finch/hello-finch:latest:                                          resolved       |++++++++++++++++++++++++++++++++++++++|
~~ 省略 ~~
elapsed: 4.9 s                                                                    total:  1007.7 (205.7 KiB/s)

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


Hello from Finch!

Visit us @ github.com/runfinch

動きました!

動作確認(hello-world)

次に hello-world を実行してみます。

$ finch run --rm hello-world
docker.io/library/hello-world:latest:                                             resolved       |
~~ 省略 ~~
Hello from Docker!
This message shows that your installation appears to be working correctly.

動きました!

ホストを指定しない場合は Docker Hub (docker.io) からイメージを取得しています。

動作確認(k6)

次に finch compose を使って、複数コンテナの起動を試してみます。

サンプルには負荷テストツールの k6 を使います。

$ git clone https://github.com/grafana/k6.git
$ cd k6/

# 起動
$ finch compose up -d

# 起動確認
$ finch compose ps
NAME             COMMAND                   SERVICE     STATUS      PORTS
k6_influxdb_1    "/entrypoint.sh infl…"    influxdb    running     0.0.0.0:8086->8086/tcp
k6_grafana_1     "/run.sh"                 grafana     running     0.0.0.0:3000->3000/tcp

# k6 のテストスクリプトを実行
$ finch compose run -v \
    $PWD/samples:/scripts \
    k6 run /scripts/es6sample.js

# 終了
$ finch compose down

# 終了確認
$ finch compose ps
NAME    COMMAND    SERVICE    STATUS    PORTS

k6 の docker-compose.yml に記載された複数コンテナの起動とコンテナ間の通信が確認できました!

設定の確認と変更

finch info で設定の確認ができます。

$ finch info
~~ 省略 ~~
Server:
 Architecture: aarch64
 CPUs: 2
 Total Memory: 7.728GiB

デフォルトでは ~/.finch/finch.yml に設定ファイルがつくられ、現時点では cpus と memory の設定が可能です。

以下の内容に設定を書き換えます。

# ~/.finch/finch.yml

cpus: 4
memory: 16GiB

設定ファイルの変更後は再起動して設定を反映します。

$ finch vm stop && finch vm start
$ finch info
~~ 省略 ~~
Server:
 Architecture: aarch64
 CPUs: 4
 Total Memory: 15.58GiB

アンインストール

$ sudo bash /Applications/Finch/uninstall.sh
Welcome to Application Uninstaller
The following packages will be REMOVED:
  Finch-v0.1.0
Do you wish to continue [Y/n]?Y
Application uninstalling process started
[1/3] [DONE] Successfully deleted shortcut links
[2/3] [DONE] Successfully deleted application informations
[3/3] [DONE] Successfully deleted application
Application uninstall process finished

まとめ

パフォーマンスなど要検証な部分はありますが、Docker Desktop の代わりに使えそうだと感じました。
まだ v0.1.0 で Windows 対応などこれからですが、開発環境への導入を検討してみてはいかがでしょうか?
Finch と AWS のサービスとの連携が進んでくると、より便利な開発ツールになる未来が見えます。

\もっと身近にもっとリアルに!DAAE公式Twitter/


執筆者プロフィール: Shoya Shiraki
ソフトウェアエンジニアとしてソーシャルゲーム開発、スタートアップでの CTO 経験を経て SHIFT に入社。
テクノロジーを人に最適化するをモットーに、日々楽しんで開発しています。

\クリスマスまで毎日更新/

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/