AWS Finchでコンテナを立ち上げてみた

AWS Finchでコンテナを立ち上げてみた

Clock Icon2025.03.09

こんにちは!製造ビジネステクノロジー部の小林です。

これまでコンテナ環境を構築する際はDocker Desktopを利用していましたが、
新しいPCを導入するタイミングで、AWS Finchというコンテナエンジンを試してみることにしました。
FinchはGUIがないため、どんな使い心地なのか楽しみです!

ハンズオンでは以下記事とリポジトリを参考にしています。
https://aws.amazon.com/jp/blogs/opensource/introducing-finch-an-open-source-client-for-container-development/
https://github.com/runfinch/finch

AWS Finchとは?

AWS FinchはAmazonが開発したオープンソースのコンテナランタイムで、軽量なコンテナ環境を提供します。
Docker Desktopの代替として利用でき、nerdctlベースのCLIを提供しているのが特徴です。

AWS Finchの仕組み

Finchはコンテナの実行環境としてLimaでLinux VMを起動します。
このVMの中ではcontainerdが動いていて、それを操作するためにnerdctlを使用します。
コンテナの操作にはnerdctlを使用するため、Docker CLIに近い使い勝手です。

Limaとは?

Lima (Linux virtual machines) は、macOS上でLinux仮想マシン(VM)を簡単に実行できるツールです。

nerdctlとは?

nerdctlは、containerdのためのDocker互換CLIツールです。
通常、Docker CLI(docker コマンド)はdockerd(Docker Daemon)を使用しますが、nerdctlはcontainerdを直接操作するため、Dockerデーモンを必要としません。

AWS Finch と Docker / Docker Desktop の違い

項目 AWS Finch Docker CLI Docker Desktop
開発元 AWS (Amazon) Docker Inc. Docker Inc.
対応OS Linux, macOS, Windows Linux (主) macOS, Windows
エンジン containerd + nerdctl dockerd dockerd
GUI (管理ツール) なし (CLI のみ) なし (CLI のみ) あり (GUI ダッシュボード)
ライセンス Apache 2.0 (OSS) Apache 2.0 (OSS) 商用ライセンス (一部有料)
仮想化技術 Apple Hypervisor Linuxネイティブ Apple Hypervisor / WSL2
Kubernetes サポート なし (手動設定が必要) なし あり (組み込み)

AWS Finchをインストールしてみる

環境

  • macOS Sonoma 14.7.4
  • CPU: Apple M3
  • Homebrew がインストール済み

対応OS別の前提条件

macOS

  • macOS Catalina (10.15) 以降
  • Intel または Apple Silicon M1/M2/M3
  • 推奨スペック: CPU 2コア以上、メモリ4GB以上

Windows

  • Windows 10 version 2004以降 (Build 19041以降)
  • AMD64ベースのWindowsシステム
  • WSL 2がインストール済み

Linux

  • containerd 1.7.x が動作可能なLinuxシステム (一般的にLinuxカーネル4.x以降)

HomebrewでFinchをインストール

brew install --cask finch

Finchの仮想環境を初期化

インストール後、Finch の仮想環境を初期化して起動する必要があります。
VM を起動するには、次のコマンドを実行。

finch vm init

インストールの確認

次のコマンドで Finch が正しくインストールされたか確認します。
バージョン情報が表示されれば インストール成功 です。

finch version

コンテナの実行とイメージの構築

無事Finchがインストールできたら、publicのECRにhello-finchというコンテナイメージが公開されているので、これを実行してみます。

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:ec080f7c92e9eb0227d60951f7c779648989116d97a5926f3e8684d4e46df196:    done           |++++++++++++++++++++++++++++++++++++++|
layer-sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1:    done           |++++++++++++++++++++++++++++++++++++++|
elapsed: 4.7 s                                                                    total:  2.5 Ki (545.0 B/s)

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

Hello from Finch!

Visit us @ github.com/runfinch

なんか出てきました🐔(笑)
このアスキーアートはFinch(フィンチ,カワラヒワの一種) を表しているそうです。
軽量&高速なFinchの特徴を象徴していて、遊び心があっていいですね🦆

Dockerfileからイメージをビルド

次に、Finch のリポジトリ内にあるDockerfileをビルドしてみます。

Finchリポジトリをクローン

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

Docker イメージをビルド

finch build . -t hello-finch

ビルド結果を確認

finch images

出力例

REPOSITORY                          TAG       IMAGE ID        CREATED           PLATFORM       SIZE       BLOB SIZE
hello-finch                         latest    7db5312b35fd    3 minutes ago     linux/arm64    1.839MB    1.035MB
public.ecr.aws/finch/hello-finch    latest    a71e474da9ff    16 minutes ago    linux/arm64    1.835MB    1.031MB

hello-finch:latest(ローカルでビルドしたイメージ)
public.ecr.aws/finch/hello-finch:latest (AWSのPublicECRから取得した公式イメージ)
無事Dockerイメージのビルドに成功していますね。

Nginx コンテナを動かしてみる

せっかくなので、NginxコンテナもFinchで動かしてみます。
Nginxの公式コンテナイメージを取得しバックグラウンドで起動します。

finch run -d -p 8080:80 nginx

コンテナ一覧の確認

finch ps

出力例

CONTAINER ID    IMAGE                             COMMAND                   CREATED           STATUS    PORTS                   NAMES
d24fa1a20bb5    docker.io/library/nginx:latest    "/docker-entrypoint.…"    23 seconds ago    Up        0.0.0.0:8080->80/tcp    nginx-d24fa

ブラウザでアクセス

http://localhost:8080 にアクセスし、Nginxのデフォルトページが表示されれば成功です。
スクリーンショット 2025-03-09 21.51.28

AWS Finchを使ってみた感想

今回はAWS Finchをインストールし、コンテナの起動・管理を試してみました。
最初は「新しいコマンドを覚える必要があるのかな?」 と思いましたが、
実際に使ってみるとDocker CLIとほぼ同じ感覚で操作できることが分かりました。

ざっくりDocker CLI と Finch のコマンド比較

機能 Docker CLI Finch
イメージの取得 docker pull nginx finch pull nginx
コンテナの起動 docker run -d -p 8080:80 nginx finch run -d -p 8080:80 nginx
実行中のコンテナ一覧 docker ps finch ps
コンテナの停止 docker stop <CONTAINER_ID> finch stop <CONTAINER_ID>

こんな人にAWS Finchはおすすめ

  • Docker Desktopの代替を探している(ライセンス費用を回避したい)
  • AWS環境(ECS/ECR) を活用する
  • 軽量&シンプルなコンテナ環境を求めている
  • CLIベースの操作に慣れている

Docker Desktopの代替を考えているなら、Finch は試してみる価値アリ!
ぜひ一度AWS Finchを触ってみてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.