主旨
Windows7 + Docker Toolbox + VirtualBoxで環境構築した際に、
ネットワーク障害が発生したら、VirtualBox上のDockerサーバの/etc/resolve.conf
のIPアドレスをGoogle の公開DNSサーバである8.8.8.8やIPアドレス指定時に利用される10.0.2.2に変更すれば、解決するかもしれない。
上記の暫定策を行った経緯:
Windows7上に、開発環境をDocker Toolbox で構築している。
そして、利用しているうちに外部のネットワークが使えなくなる問題が発生した。github に接続できず困ってしまうことがあった。また、cucumberの@javascriptのテストで、phantomjsエラーが発生し、立ち上がっているサーバにアクセスできない問題も発生した。
この現象は、container内だけでなくDockerサーバのコンソール上でも同様だった。
どうすることもできなくなるため、Dockerサーバを再起動してcontainerを立ち上げなおして対応していた。
しかし、あるとき、Docker container(Ubuntu)上に立ち上げたRailsは、Windows7(ホストOS)上で立ち上げたブラウザからIPアドレス指定でアクセスできることに気づいた。すなわち、ネットワークそのものが使えなくなったわけではないことに気づいた。
(IPアドレス指定の場合、resolved.confで指定されていた10.0.2.3ではなく10.0.2.2が利用されていた)
ネットワーク障害の問題は、名前で引けなくなっているだけだった。
そこで、Googleで、「Docker Windows7 DNS 10.0.2.3 resolved.conf」 として検索したところ参照したページでたまたま、名前解決できない問題で上記の様にresolved.confを変更している記載があり、
参考に自分環境に適用してみたところうまくいった。
なぜ、DNSサーバが10.0.2.3が使っているうちに接続できなくなるのかは調査中。
参考サイト:
http://danielhnyk.cz/docker-machine-with-virtualbox-server-misbehaving/
https://developers.google.com/speed/public-dns/docs/using