Datastore Emulator on Docker on M1 Mac がハングアップすることに対する対応

March 30, 2022

長らく google/cloud-sdk の Docker Image が linux/amd64 にしか対応していませんでした。 Apple Silicon 向け Docker Desktop for Mac で Cloud Datastore Emulator を立ち上げると、CPU が100% でハングするという問題がありました。 その件について対応しましたので記事にしておきました。

結論

以下のイメージ(少なくとも 379.0.0 以降)を使う

gcr.io/google.com/cloudsdktool/google-cloud-cli:379.0.0-emulators

Memo

仕事で手元でテストがまれに落ちるので困っていたところ、この問題に引っかかっていたことが判明しました。 https://journal.lampetty.net/entry/apple-silicon-docker-desktop-problem

上記にある通り google/cloud-sdk では長らく linux/amd64 しか配信されていなかったので M1 Mac では色々と問題がありました。 GoogleCloudPlatform/cloud-sdk-docker#232 に改善要望があったのだけれどもしばらく放置されていました。 今一度対応をお願いしたく、多少なり強引に PR を作るなりしてみました。 https://github.com/GoogleCloudPlatform/cloud-sdk-docker/pull/265

結果として、gcr.io で配信される debian_component_based tag でのみ linux/arm64 アーキテクチャの Image が配信されるようになりました。 https://github.com/GoogleCloudPlatform/cloud-sdk-docker/issues/232#issuecomment-1062486619

しかし、今回の問題の解決には至りませんでした。 debian_component_based tag では Cloud Datastore Emulator はサポートされていないのです。 その旨を GoogleCloudPlatform/cloud-sdk-docker#268 で相談しましたころ、 emulator tag でも linux/arm64 アーキテクチャの Image が配信されるようになりました :tada: https://console.cloud.google.com/gcr/images/google.com:cloudsdktool/global/google-cloud-cli@sha256:2e87f440123dcc6d8dbf41c42fe0e9c64ce792c181aedec11e0ec9dff44d2775/details

注意点ですが、この対応は Docker Hub 側での Image (google/cloud-sdk) には適用されていません。 M1 Mac から Cloud SDK on Docker を使うには、今後は gcr.io/google.com/cloudsdktool/google-cloud-cli を利用するようにした方がよさそうですね。

willfaris さん、素早い対応をありがとうございました。


© takanakahiko 2024, Built with Gatsby
This site uses Google Analytics.