AWS(Amazon Web Services)から公開されたFinchを使ってみました。
雑記ブログを開設してそちらでも書いています。
今後はSwift系以外は分けて書く予定ですが、
開設したばかりでSEOが弱いので今回は一旦こちらにも同じものを書きました。
次回以降は雑記ブログ側で書くと思うのでそちらもよろしくお願いします。
Finchについて
AWS(Amazon Web Services)からコンテナ環境を構築するFinchが公開されました。
類似のものだと有名なのはDockerですね。
GitHubにてオープンソースで公開されています。
Windows向けはまだ無く、Mac向けから公開されたので試してみる事にしました。
Finchを導入する
Finchをダウンロードする
以下のURLからダウンロードできます。
今回、私は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でアクセスして下さい。
「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を書きました。
コメント