困った事
devcontainerから "az login" すると "Failed to establish a new connection"
- devcontainer 環境で
az login
する - ブラウザでログイン、閉じてもいいよと表示される
-
Failed to establish a new connection
のエラーが表示され、azure CLI が使えない・・・ -
devcontainer
からは使えないが、WSL
からは使える -
VScode
の Azure 系アドオンもログインできない
原因
どうやら devcontainer
の azure CLI
からどこか外を見に行くときに、名前解決ができていない模様。
対応
/etc/resolv.conf
の nameServer
に追記します。
sudo vi /etc/resolv.conf
nameServer
にパブリックなDNSを追記します。
8.8.8.8
は Google さん提供のものですね。
(私の環境の場合、127.0.0.11を書き換えようとしましたがDocker composeで起動している他のサーバを解決するのに残しておく必要がありました)
nameserver 127.0.0.11
options ndots:0
+ nameserver 8.8.8.8
恒久的対策
devcontainer
なので、他のメンバーに同様の問題が発生した場合、いちいちファイルをいじってもらうのも忍びない。
ということで devcontainer
作成後に実行される postCreateCommand
を仕込みました。
postCreateCommand に仕込む
devcontainer
イメージ作成時に実行されるように、シェルスクリプトを仕込みました。
{
"postCreateCommand": ".devcontainer/postCreateCommand.sh"
}
このスクリプトに、 /etc/resolv.conf
に DNS を追記するコマンドを記載しておきます。
# /etc/resolv.confにnameserverを追記
sudo sh -c "echo 'nameserver 8.8.8.8' >> /etc/resolv.conf"
これで解決!
参考
MSのQ&Aを参考にしました。
az login
fails with "Failed to establish a new connection: [Errno -2] Name or service not known'"