server misbehavingエラーをパブリックDNSで回避する

Dockerイメージのダウンロードで ERROR: failed to solve: server misbehaving というエラーが発生しました。ごく稀に遭遇するエラーで、パブリックDNSサービスを利用することで回避できます。

目次

server misbehavingエラーが起きた経緯

AWS CDKで、aws-lambda-nodejsを使ってLambdaをデプロイしようとしたところ、Dockerイメージのダウンロードでエラーが起きました。

$ cdk synth

ERROR: failed to solve: public.ecr.aws/sam/build-nodejs14.x: failed to authorize: failed to fetch anonymous token: Get "https://public.ecr.aws/token/?scope=aws%3A%3A&scope=repository%3Asam%2Fbuild-nodejs14.x%3Apull&service=public.ecr.aws": dial tcp: lookup public.ecr.aws on 192.168.0.1:53: server misbehaving

Error: docker exited with status 1

普段使っているDNSサーバではpublic.ecr.awsドメインが見つからず、どのサーバを見に行けば良いのかわからないようです。

パブリックDNSサービスを利用する

CloudFlareが運営するDNSを使います。IPアドレスは1.1.1.1です。最速で、かつプライバシーも担保されるとのこと。

Googleが運営する Google Public DNS もあります。IPアドレスは8.8.8.88.8.4.4です。パブリックDNSサービスは他にもいくつかあるので、興味ある方は調べてみてください。

MacでDNSサーバを設定するには、「システム設定」で「DNS」を検索して出てくる「DNSサーバ」を選択します。DNSサーバに1.1.1.1を追加します。

MacでDNSサーバを設定する

パソコンの初期セットアップ手順に追加

過去にもパブリックDNSサーバを使うよう設定したのですが、Macを新調した際に設定するのを失念していました。エラーが出てから対応しても問題ないのですが、あらかじめエラーの種を潰しておくに越したことはありません。初期メモに追加しておきます。






Amazon欲しいものリスト

私が作業中に飲んでいるコーヒーや欲しいマンガなどを集めました。開発・執筆の励みになりますのでクリックして頂ければ幸いです。

<Amazon欲しいものリスト>