AWSが公開したFinchを使ってみた

未分類

AWS(Amazon Web Services)からコンテナ環境を構築するFinchが公開されました。
類似のものだと有名なのはDockerですね。

GitHubにてオープンソースで公開されています。

GitHub - runfinch/finch: The Finch CLI an open source client for container development
The Finch CLI an open source client for container development - GitHub - runfinch/finch: The Finch CLI an open source client for container development

Windows向けはまだ無く、Mac向けから公開されたので試してみる事にしました。

Finchを導入する

Finchをダウンロードする

以下のURLからダウンロードできます。

Releases · runfinch/finch
The Finch CLI an open source client for container development - runfinch/finch

今回、私はM1 Macで使用するので「Finch-v0.1.0-aarch64.pkg」をダウンロードしました。
Intel Macの場合はx86_64を選択して下さい。

Finchをインストールする

ダウンロードしたpkgをダブルクリックして下さい。
そのままインストーラに従って進めるだけで終わります。

Finchのセットアップを行う

インストールが終わったらセットアップを行います。

ターミナルで以下のコマンドを実行して下さい。

finch vm init

実行した後は以下の様に表示されます。※ユーザ名とマシン名は適当に置き換えています。

username@machinename % finch vm init
INFO[0000] Using default values due to missing config file at "/Users/username/.finch/finch.yaml" 
INFO[0000] "/Users/username/.finch" directory doesn't exist, attempting to create it 
INFO[0000] binaries directory doesn't exist             
INFO[0000] Requesting root access to finish network dependency configuration 
Password:
INFO[0015] sudoers file not found: %!w(*fs.PathError=&{open /etc/sudoers.d/finch-lima 2}) 
INFO[0015] Initializing and starting Finch virtual machine... 
INFO[0124] Finch virtual machine started successfully

missingやdoesn’t existと出ていますが、
初回なのでファイルやディレクトリが無いことを確認しているだけなので心配不要です。

パスワードの入力が求められ、入力したらセットアップが始まります。
ドキュメントに1分程度と書いてある通り、若干待つとセットアップが終わります。

2回目以降の起動について

初回はinitで起動が行われますが、一度終了した後は起動コマンドが必要です。
以下のコマンドで起動して下さい。

finch vm start

テストコンテナを実行する

次はテストコンテナを実行して見ましょう。

ターミナルで以下のコマンドを実行します。

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

実行すると以下の様な出力があります。

username@machinename ~ % 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:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1:    done           |++++++++++++++++++++++++++++++++++++++| 
layer-sha256:ec080f7c92e9eb0227d60951f7c779648989116d97a5926f3e8684d4e46df196:    done           |++++++++++++++++++++++++++++++++++++++| 
elapsed: 3.4 s                                                                    total:  2.5 Ki (753.0 B/s)                                       

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


Hello from Finch!

Visit us @ github.com/runfinch

Finchのマークが出力されましたね。

テスト実行コマンドについて

この「run」コマンドですが、ローカルにコンテナイメージがあれば実行し、
なかった場合はリポジトリからpullして実行するようになっているそうです。
今回はローカルに何もない状態からなのでプルして実行されました。

また「–rm」オプションは実行後にインスタンスが削除されるそうです。

以下のコマンドで確認してみましょう。

finch ps -a  

これで現在のすべてのコンテナが一覧で表示されますが、
以下のように1つも表示されません。

username@machinename ~ % finch ps   
CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

–rmを省いて実行すると以下の様になります。

username@machinename ~ % finch ps -a                                
CONTAINER ID    IMAGE                                      COMMAND            CREATED           STATUS                       PORTS    NAMES
4cdc5febf4af    public.ecr.aws/finch/hello-finch:latest    "./hello-finch"    10 seconds ago    Exited (0) 10 seconds ago             hello-finch-4cdc5

今回の場合はpsコマンドを実行する際にaを省くと表示されないので注意して下さい。

–rmを省いて実行した場合は以下で削除できます。

finch rm [CONTAINER ID]

[CONTAINER ID]はpsコマンドで確認したものを使用して下さい。

コンテナイメージについて

テストコンテナを再度実行すると分かりますが、
2度目からはローカルにあるのでpullが行われなくなります。

username@machinename ~ % finch run --rm public.ecr.aws/finch/hello-finch

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


Hello from Finch!

Visit us @ github.com/runfinch

ローカルにあるイメージの確認は以下のコマンドで行うことができます。

finch images
username@machinename ~ % finch images
REPOSITORY                          TAG       IMAGE ID        CREATED           PLATFORM       SIZE       BLOB SIZE
public.ecr.aws/finch/hello-finch    latest    a71e474da9ff    18 minutes ago    linux/arm64    1.7 MiB    1007.7 KiB

イメージの削除は以下のコマンドです。

finch rmi public.ecr.aws/finch/hello-finch 

イメージを削除できない場合はコンテナが残っています。
先程の–rm無しのrunを試してたりすると残っているかもしれません。

psでIDを確認してrmでコンテナを削除してから再度実行して下さい。

コンテナイメージをビルドする

ドキュメントにある以下のコマンドを実行してコンテナイメージをビルドしてみましょう。

git clone git@github.com:runfinch/finch.git
cd finch/contrib/hello-finch
finch build . -t hello-finch

githubからサンプルコードを取得し、目的のディレクトリに移動、
そこでビルドコマンドを実行しています。

gitを使っていない方はZipでダウンロードしたものを使っても構いません。
外部ストレージに配置するとそのままのコマンドでは動作させる事ができないので注意してください。

ビルドコマンドについては以下のような形です。

finch build [path] -t [Name]

今回は目的のディレクトリまで移動しているのでpathは「.」です。
Nameは先程のイメージの「public.ecr.aws/finch/hello-finch」に当たる部分です。

確認してみましょう。

uername@machinename hello-finch % finch images       
REPOSITORY                          TAG       IMAGE ID        CREATED              PLATFORM       SIZE       BLOB SIZE
hello-finch                         latest    85b85bf5fed7    29 minutes ago       linux/arm64    1.7 MiB    1007.1 KiB
public.ecr.aws/finch/hello-finch    latest    a71e474da9ff    About an hour ago    linux/arm64    1.7 MiB    1007.7 KiB

今ビルドしたhello-finchが追加されています。
中身はpublic.ecr.aws/finch/hello-finchと同じなので実行すると同じようにロゴが表示されます。

既存のコンテナイメージを使用してみる

既存のコンテナイメージを実行してみましょう。

定番のDockerイメージであるApache httpdのイメージを使ってみましょう。

finch run -d -p 8080:80 httpd

80ポートが8080ポートで使えるようにを設定しました。
以下のURLでアクセスして下さい。

http://localhost:8080/

「It works!」が表示されれば稼働しています。

先程とは異なり稼働状態が維持されています。

uername@machinename ~ % finch ps                     
CONTAINER ID    IMAGE                             COMMAND               CREATED          STATUS    PORTS                   NAMES
d406b637e9a2    docker.io/library/httpd:latest    "httpd-foreground"    4 minutes ago    Up        0.0.0.0:8080->80/tcp    httpd-d406b

停止させる時は以下のコマンドを使用して下さい。

finch stop [CONTAINER ID]

最後に

今回はここまでとなります。

Dockerfileを使っていたり、既存のDockerイメージを使用している事から分かるように、
おおよそDocker CLIのようなイメージです。
※nerdctlが使われているようなので当然ではあるのですが・・・

現状は互換品といった印象を受けますが、
ドキュメントやチュートリアルもまだ公開予定の段階なので、
情報が増えたらまた取り上げようと思います。

Dockerが有料化された事でここの代替を狙っているのかと思うので、
GUIや便利な機能がどんどん増えるかもしれないので、
今後に期待して行きたいところです。

Finchの更新はまだですがpart2を書きました。

コメント

  1. […] Finchを使ってみたAWSからコンテナ環境を構築するFinchが公開されました。類… […]

タイトルとURLをコピーしました