事象
Docker Toolbox 環境において、npm install
が以下の理由により失敗する場合があります。
npm ERR! code EAI_AGAIN
npm ERR! errno EAI_AGAIN
npm ERR! request to https://registry.npmjs.org/vue-router failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org
原因
わたしの環境だと、原因はregistry.npmjs.org
の名前解決に失敗していることでした。 とりたてて設定などをしていない場合、docker machine はホスト側(すなわちWindows)に名前解決を依頼します。そこで、ホスト側でnslookup
を行ったところ、自分のマシンが利用しているDNSサーバにはregistry.npmjs.org
が登録されていませんでした。
C:\>nslookup registry.npmjs.org
サーバー: ntt.setup
Address: 2408:211:605:600:5a52:8aff:fe66:f4a5
*** ntt.setup が registry.npmjs.org を見つけられません: Query refused
対策
対策方法はいろいろあると思いますが、__「Dockerが利用するDNSサーバをregistry.npmjs.org
の名前解決ができるGoogle Public DNS (8.8.8.8)にする」__ことで問題が解消しました。
-
%DOCKER_CERT_PATH%\config.json
のHostOptions > EngineOptions > Dns
を編集し、DNSサーバとして8.8.8.8
を登録する。 - Docker Machineを再起動する (
docker-machine restart
)
"DriverName": "virtualbox",
"HostOptions": {
"Driver": "",
"Memory": 0,
"Disk": 0,
"EngineOptions": {
"ArbitraryFlags": [],
"Dns": [
"8.8.8.8"
],
環境情報
- Microsoft Windows [Version 10.0.18362.720]
- docker-machine.exe version 0.16.1, build cce350d7
Dockerのバージョンは次の通り:
Client:
API version: 1.40
Go version: go1.12.7
Git commit: 74b1e89e8a
Built: Wed Jul 31 15:18:18 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea838
Built: Wed Nov 13 07:28:45 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.10
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683