久しぶりにFinch VMを起動したらfailed to start

2024/06/10に公開

はじめに

最近Docker周りを弄ることが多く、相変わらずDocker For Macだと
遅い気がするのでFinchとの比較でどんなものかと開始しようとしたら
以下エラーに遭遇

  • エラーメッセージ
finch vm start
INFO[0000] Starting existing Finch virtual machine...
ERRO[0003] Finch virtual machine failed to start, debug logs:
time="2024-05-30T16:17:26+09:00" level=info msg="Using the existing instance \"finch\""
time="2024-05-30T16:17:26+09:00" level=info msg="Starting socket_vmnet daemon for \"finch-shared\" network"
time="2024-05-30T16:17:26+09:00" level=info msg="Attempting to download the nerdctl archive" arch=aarch64 digest="sha256:589dabd962d936b29fd377dcddbb49c07d1c4c27dd4b402bc4b6b20287fe9c37" location="https://github.com/containerd/nerdctl/releases/download/v1.4.0/nerdctl-full-1.4.0-linux-arm64.tar.gz"
time="2024-05-30T16:17:26+09:00" level=info msg="Using cache \"/Users/goalsymabashi/Library/Caches/lima/download/by-url-sha256/8704652b907393aea54c8d98b48efa0fe9bef4d120fbbf8799bb5264631da634/data\""
time="2024-05-30T16:17:28+09:00" level=warning msg="[hostagent] failed to run [/Applications/Finch/lima/bin/qemu-system-aarch64 -M none -netdev help]: stdout=\"Accelerators supported in QEMU binary:\\nhvf\\ntcg\\n\", stderr=\"qemu-system-aarch64: allocate 1073741824 bytes for jit buffer: Invalid argument\\n\""
time="2024-05-30T16:17:28+09:00" level=info msg="[hostagent] Mounting disk \"finch\" on \"/mnt/lima-finch\""
time="2024-05-30T16:17:28+09:00" level=fatal msg="exiting, status={Running:false Degraded:false Exiting:true Errors:[] SSHLocalPort:0} (hint: see \"/Applications/Finch/lima/data/finch/ha.stderr.log\")"
FATA[0003] exit status 1

Finchとは

2022年11月、Amazon Web Services(AWS)は新しいオープンソースのコンテナランタイム「Finch」を発表しました。
Finchはコンテナのデプロイや管理をシンプルかつ効率的に行うためのツールです。その主な特徴は以下の通りです

  • 軽量で高速:リソースを最小限に抑えつつ、迅速な動作を実現。
  • オープンソース:コミュニティベースでの開発と改善が可能。
  • AWSとの統合:AWSサービスとのシームレスな連携を提供。

Docker for Desktopの有料化に対する懸念

2021年にDocker社はDocker for Desktopのライセンスモデルを変更し、商用利用に対して有料化することを発表しました。
この変更により、Docker for Desktopを利用する企業は年間サブスクリプションを支払う必要が生じました。
現状弊社は対象外ではありますが、今後選択肢はあるにこしたことがないため、Finchを試してみることにしました。

対処メモ

  • Finchのアップデート
brew install finch
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Auto-updated Homebrew!
Updated 1 tap (hashicorp/tap).

You have 28 outdated formulae and 3 outdated casks installed.

==> Upgrading 1 outdated package:
finch 0.6.2 -> 1.1.3
==> Upgrading finch
==> Downloading https://github.com/runfinch/finch/releases/download/v1.1.3/Finch-v1.1.3-aarch64.pkg
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/562778457/04c827e9-e785-4a59-9f68-0fdaa714edfe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240530%2Fus-
################################################################################################################################################################################################################################### 100.0%
==> Running uninstall script /Applications/Finch/uninstall.sh
Password:
Finch-v0.6.2 will be REMOVED.
Application uninstalling process started
[1/3] [DONE] Successfully deleted shortcut links
[2/3] [DONE] Successfully deleted application informations
[3/3] [DONE] Successfully deleted application
Application uninstall process finished
==> Running installer for finch with sudo; the password may be necessary.
installer: Package name is Finch
installer: Installing at base path /
installer: The install was successful.
==> Purging files for version 0.6.2 of Cask finch
🍺  finch was successfully upgraded!

だいぶバージョン開きがありましたね。。

再度 finch vm init を実行

time="2024-05-30T18:00:05+09:00" level=info msg="Terminal is not available, proceeding without opening an editor"

あかん。。

  • Finchの削除

一度削除してみる。

brew uninstall finch
==> Uninstalling Cask finch
==> Running uninstall script /Applications/Finch/uninstall.sh
Password:
Finch-v1.1.3 will be REMOVED.
Application uninstalling process started
[1/4] [DONE] Successfully deleted shortcut links
Remove historical pkgutil packages...
Forgetting package org.Finch.v1.1.3
[2/4] [DONE] Successfully deleted application informations
[3/4] [DONE] Successfully deleted application
[4/4] Deletion of ~/.finch was aborted.
Application uninstall process finished
==> Purging files for version 1.1.3 of Cask finch
  • Finchの再インストール

caskオプションを追加

brew install --cask finch
==> Downloading https://github.com/runfinch/finch/releases/download/v1.1.3/Finch-v1.1.3-aarch64.pkg
Already downloaded: /Users/goalsymabashi/Library/Caches/Homebrew/downloads/969c63dfe4ed5c6841dfbb69b2201131b1b6bf36f8d059cf94939797ea89a6ca--Finch-v1.1.3-aarch64.pkg
==> Installing Cask finch
==> Running installer for finch with sudo; the password may be necessary.
installer: Package name is Finch
installer: Installing at base path /
installer: The install was successful.
🍺  finch was successfully installed!

→ 事象変わらず。

  • ターミナル Warpアプリケーション フルディスク許可

ターミナルはいつからだったらWarpを利用しており
[システム設定]→[プライバシーとセキュリティ]→[フルディスクアクセス]
で確認するとiTerm2では許可されていたがWarpでは許可されていなかったので許可。
→ Warpの再起動が行われる。
→ 事象変わらず。

  • DEBUGログ
{"error":"exec: \"/opt/socket_vmnet/bin/socket_vmnet\": stat /opt/socket_vmnet/bin/socket_vmnet: no such file or directory","level":"debug","msg":"Failed to look up socket_vmnet path \"/opt/socket_vmnet/bin/socket_vmnet\"","time":"2024-05-30T20:06:45+09:00"}
{"error":"exec: \"socket_vmnet\": executable file not found in $PATH","level":"debug","msg":"Failed to look up socket_vmnet path \"socket_vmnet\"","time":"2024-05-30T20:06:45+09:00"}
{"error":"exec: \"/usr/local/opt/socket_vmnet/bin/socket_vmnet\": stat /usr/local/opt/socket_vmnet/bin/socket_vmnet: no such file or directory","level":"debug","msg":"Failed to look up socket_vmnet path \"/usr/local/opt/socket_vmnet/bin/socket_vmnet\"","time":"2024-05-30T20:06:45+09:00"}
{"error":"exec: \"/opt/homebrew/opt/socket_vmnet/bin/socket_vmnet\": stat /opt/homebrew/opt/socket_vmnet/bin/socket_vmnet: no such file or directory","level":"debug","msg":"Failed to look up socket_vmnet path \"/opt/homebrew/opt/socket_vmnet/bin/socket_vmnet\"","time":"2024-05-30T20:06:45+09:00"}

/opt配下にfinchディレクトリがあるのでコピーしたらエラーは発生しなくなった

cd /opt/
sudo cp -pr finch socket_vmnet

が、FinchのVMが起動しない事象は継続

  • .finchディレクトリ削除
rm -rf ~/.finch

→ 事象変わらず。

  • /private/var/run/finch-lima/の権限変更

DEBUGログをみてみたところ(エビデンス取得もれました。。)
/private/var/run/finch-lima/の権限が足りなさそうだったので
755に変更

→ 正常に起動した!

再発

再び起動しようとしたところ同じエラーが再発しました。
権限も問題ありません。

デスクトップアプリケーション Docker for Macが起動しているとFinch VMが起動しないみたいです。。
そのため一時的にDocker for Macを停止してFinch VMを起動しました。

vm init してからDocker For Macを起動することで現状並行稼働できているように見受けられるので
一旦これでOKとしています。

結局速度はどうなのか

肝心の速度ですが、若干早くなったかなというところ。

ただ、dockerとfinchで別々でコンテナイメージを管理する必要があるため
よりディスク管理が重要になってくるかと思います。

Goals Tech Blog

Discussion