AWSが公開した「Finch」を触ってみた

AWSが2022年11月にコンテナ開発のオープンソースクライアント「Finch」を公開しました。
https://aws.amazon.com/jp/blogs/news/introducing-finch-an-open-source-client-for-container-development/

一部条件で有料になったDocker Desktopの代替の選択肢になっており、注目しています。
今回は、勉強も兼ねてどんな感じなのかを導入から実行まで試してみようと思います。

## Finchとは
FinchはAWSからコンテナ開発のオープンソースソフトウェアとして、公開されています。

Containerd（コンテナランタイム）、Buildkit（ビルドツール）、nerdctl（Dockerコマンドのようにコンテナを操作できる）を組み合わせて、コンテナ環境を構築するようです。

これによって、Dockerと同じように、コンテナ作成、実行ができます。

2022/12/10時点で、対応しているOSはMacのみです。

## インストール
さっそくインストールしてみる。

1. 最新の0.1.1（2022/12/10時点）をダウンロード
インストールパッケージはこちらからダウンロードできる。
https://github.com/runfinch/finch/releases
使っているMacのCPUアーキテクチャはIntelなので、「x86_64」の方をダウンロード。
（Apple Silicon M1の場合はaarch64をダウンロードする）

1. インストール
ダウンロードしたpkgをダブルクリックして画面に従ってインストールを進めます
![スクリーンショット 2022-12-10 13.47.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/707fbc2d-e831-3399-46d9-7d2ec29c0f49.png)

   無事にインストール完了
  ![スクリーンショット 2022-12-10 13.49.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/88bdc839-3660-77eb-d9ae-41a3d488e570.png)

   バージョン確認もOK
  ![スクリーンショット 2022-12-10 14.30.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/56910441-52c2-00c8-76da-f4d093c31aed.png)

1. finchの初期化、仮想マシンの起動コマンドを実行
![スクリーンショット 2022-12-10 13.54.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/b938ed4b-9323-9bbf-9638-cae24b4e49fe.png)
   数分かかりましたが、成功しました。
ちなみに、v0.1.0ではここでエラーがでることがあるみたいです。v0.1.1では解消しているみたいですね。
ちなみに2回目以降は、`finch vm start`で実行できます。

これで構築は完了です。とても簡単でした。

## 起動確認してみる
起動するかどうか確かめてみます。
テスト用コンテナが用意されているので、そちらを以下のコマンドで実行します。dockerと同じくrunコマンドが使えます。（他のコマンドもdockerのときにつかっていたコマンドとほぼ同じ）

```
finch run --rm public.ecr.aws/finch/hello-finch
```

無事に起動しました。

![スクリーンショット 2022-12-10 14.00.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/536813e4-9fd8-5c82-2ffb-1c0dffcecbcb.png)

## Dockerfileでコンテナを構築して実行してみる
Dockerfileを作成して実行も試してみます。


1. 今回は以下のような単純なDockerfileを用意。
    ```
    # イメージの基礎となるイメージ
    FROM ubuntu:22.04
    
    # ビルド中に実行されるコマンド（試しにcurlもインストールしてみます）
    RUN apt-get update && apt-get install -y curl 
    
    # イメージ内で実行されるコマンド
    CMD ["echo", "Hello!"]
    ```

1. Dockerfileのあるディレクトリでbuildしてみます。（イメージの名前はexample)
    ```
    finch build ./ -t example
    ```
   無事にexampleイメージが作られました。（もう一つは、先に実行したテストコンテナです）
     ![スクリーンショット 2022-12-10 14.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/5674ff93-fa0b-272a-3ad9-8501a4919659.png)

1. イメージをコンテナとして実行
    ```
    finch run example
    ```
  ![スクリーンショット 2022-12-10 14.43.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/94e1f8d4-52f1-b0e7-e8d4-1ef608fff5b0.png)

Dockerfileを使って無事にコンテナ作成、実行もできました。

## 実行できるコマンド
実行できるコマンドはこちら
![スクリーンショット 2022-12-12 18.17.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986092/c4487a8e-7b27-7490-2f6d-e93047754cd0.png)


## 試してみた感想
とても簡単にコンテナ環境の構築が完了し、コマンドも「docker」部分が「finch」になっただけで同じように使えます。
今回は、単純なコンテナしか作成して試してみませんでしたが、またいろいろと試してみようと思います。
また、今はMacだけしか対応していないようですが、将来的にWindowsやLinuxも対応予定のようなので、大いに期待です。

## 参考情報
* https://aws.amazon.com/jp/blogs/news/introducing-finch-an-open-source-client-for-container-development/
* [FinchのREADME](https://github.com/runfinch/finch)
* https://www.itmedia.co.jp/news/articles/2211/24/news107.html