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.8
と8.8.4.4
です。パブリックDNSサービスは他にもいくつかあるので、興味ある方は調べてみてください。
MacでDNSサーバを設定するには、「システム設定」で「DNS」を検索して出てくる「DNSサーバ」を選択します。DNSサーバに1.1.1.1
を追加します。
パソコンの初期セットアップ手順に追加
過去にもパブリックDNSサーバを使うよう設定したのですが、Macを新調した際に設定するのを失念していました。エラーが出てから対応しても問題ないのですが、あらかじめエラーの種を潰しておくに越したことはありません。初期メモに追加しておきます。
私が作業中に飲んでいるコーヒーや欲しいマンガなどを集めました。開発・執筆の励みになりますのでクリックして頂ければ幸いです。
<Amazon欲しいものリスト>