
AWS Finchでコンテナを立ち上げてみた
こんにちは!製造ビジネステクノロジー部の小林です。
これまでコンテナ環境を構築する際はDocker Desktopを利用していましたが、
新しいPCを導入するタイミングで、AWS Finchというコンテナエンジンを試してみることにしました。
FinchはGUIがないため、どんな使い心地なのか楽しみです!
ハンズオンでは以下記事とリポジトリを参考にしています。
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のデフォルトページが表示されれば成功です。
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を触ってみてください。