TL;DR
- AWSがOSSとして公開したコンテナクライアントFinchでdocker-composeを立ち上げ
- Docker for Macの代替として、dockerのsocketを扱う以外のユースケースでは十分利用可能
Versions
- finch
- v0.6.2
概要
Finchとは2022年にAWSが公開したコンテナクライアントです。
コンテナ開発用のオープンソースクライアント「Finch」のご紹介 | Amazon Web Services ブログ
簡単に言えばDocker for Desktopの代替となるようなOSSになります。
Finchの裏側ではLima(vm)が動いています。今回はcontainerのオーケストレーションとして使用しますが、Lima(containerd, nerdctl, BuildKit)を透過的に扱えるためcontainerのbuildやpushも行えます。
流れ
Finchのインストールと動作確認
brewでインストールが可能なため、brewでインストールを行います。
$ brew install finch
FinchのVMを立ち上げます
$ finch vm init
立ち上げたFinchの動作確認を行います。
AWS製のOSSということもあり、READMEではECR上のFinchイメージを使用しているため、それに習いFinchのサンプルイメージを使用します。
$ finch run --rm public.ecr.aws/finch/hello-finch INFO[0000] Using default values due to missing config file at "/Users/ookiyuusuke/.finch/finch.yaml" INFO[0000] "/Users/ookiyuusuke/.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[0003] sudoers file not found: open /etc/sudoers.d/finch-lima: no such file or directory INFO[0007] Initializing and starting Finch virtual machine... INFO[0097] Finch virtual machine started successfully ~/ghq/github.com/y-ohgi/learn-gcp/cloudrun-with-lima gcp: learn-387812 main :y-ohgi $ finch run --rm public.ecr.aws/finch/hello-finch public.ecr.aws/finch/hello-finch:latest: resolved |++++++++++++++++++++++++++++++++++++++| index-sha256:a71e474da9ffd6ec3f8236dbf4ef807dd54531d6f05047edaeefa758f1b1bb7e: done |++++++++++++++++++++++++++++++++++++++| manifest-sha256:2f848edb93f7d0cfa20d7dc7add84586fe06d258d6dd54422d8015c584ff3b9e: done |++++++++++++++++++++++++++++++++++++++| config-sha256:50c36f221209ea6829db90eff11db167d8cc22abf7c2c0f1e7f4a0c701c0592f: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:cb7e3bc996dd3208c5b4560d5f6571486e2fe90b5a1cc384e2d6af0dc07de02a: done |++++++++++++++++++++++++++++++++++++++| elapsed: 4.9 s total: 1.0 Mi (209.4 KiB/s) @@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@@@ @@@@@@@ @@@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@ @@@@@ @@@# @@@@@@@@@ @@@@@ @@ @@@ @@@@@@@@@@ @@@@% @ @@ @@@@@@@@@@@ @@@@ @@@@@@@@ @@@@ @@@@@@@@@@@& @@@@@ &@@@@@@@@@@@ @@@@@ @@@@@@@@ @@@@@ @@@@@ @@@@@@ @@@@@@ @@@@@@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@ Hello from Finch! Visit us @ github.com/runfinch
立ち上げるとFinchのロゴである鳥のAAが表示されました。かわいい
docker-composeを起動する
nginxを起動するだけの単純なdocker-composeを記述します。
docker-composeとの違いとして、 image
にはURIをフルパスで記載する必要があります。例えば image: nginx
のような指定だとpullが行えないため、 image: docker.io/nginx
のように記載します。
今回はAWSが公開したOSSということで、ECRのnginxのイメージを指定します
version: "3.9" services: nginx: # image: docker.io/nginx image: public.ecr.aws/nginx/nginx:stable ports: - 8080:80
composeをバックグラウンドで起動します。
$ finch compose up -d
nginxが起動しているかをcurlで確認します
$ curl -I localhost:8080 HTTP/1.1 200 OK Server: nginx/1.25.1 Date: Sun, 16 Jul 2023 11:22:20 GMT Content-Type: text/html Content-Length: 615 Last-Modified: Tue, 13 Jun 2023 15:08:10 GMT Connection: keep-alive ETag: "6488865a-267" Accept-Ranges: bytes
停止
起動したcomposeを停止させます
$ finch compose stop
起動したfinchのvmを停止させます
$ finch vm stop
おまけ
ARMイメージの実行
試しにARMイメージをIntel Mac上で動かしてみます。
使用しているPCのCPUをまずは確認します。
$ uname -m x86_64
platformとしてarm64を指定します
$ finch run --platform arm64 -p 8888:80 docker.io/nginx
ARMで動いていることが確認できました。
$ finch exec 36c2f131e49a uname -m aarch64
ポートを叩くと動いていることが確認できます
$ curl -I localhost:8888 HTTP/1.1 200 OK Server: nginx/1.25.1 Date: Sun, 16 Jul 2023 12:49:46 GMT Content-Type: text/html Content-Length: 615 Last-Modified: Tue, 13 Jun 2023 15:08:10 GMT Connection: keep-alive ETag: "6488865a-267" Accept-Ranges: bytes
所感
想像以上に簡単に簡単に扱える点に感動しました。
まだ触っただけの状態ではありますが、普段遣いであればDocker for Macの代替として十分使用可能な肌感を持ちました。