$ docker run redis
Unable to find image 'redis:latest' locally
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: read udp 10.0.2.15:52538->10.0.2.3:53: i/o timeout.
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
みたいになるときの対応です。
DockerホストのDNSが問題
次のサイトに書いてあったことそのまんまで解決しました。どうもDNSの名前解決がうまくできていないみたい。
Docker Toolboxの場合
$ docker-machine ssh default
でDockerが動作しているVMに入ります。
$ sudo vi /etc/resolv.conf
でresolv.confを開いてみると、確かに「nameserver 10.0.2.3」となっているので、これを「nameserver 8.8.8.8」に変更して保存。
あとはVMから出てdocker pullすると上手く動きました。
$ docker pull redis
Using default tag: latest
latest: Pulling from library/redis
f17d81b4b692: Pull complete
b32474098757: Pull complete
8980cabe8bc2: Pull complete
2719bdbf9516: Pull complete
f306130d78e3: Pull complete
3e09204f8155: Pull complete
Digest: sha256:481678b4b5ea1cb4e8d38ed6677b2da9b9e057cf7e1b6c988ba96651c6f6eff3
Status: Downloaded newer image for redis:latest
Docker for Windowsの場合
Docker Desktopの設定に、DNSの項目がありました。
「Settings > Network > DNS Server」を「Fixed: 」にして、「8.8.8.8」を入力します。
変更後はDockerのrestartが必要です。
さらに、Docker for WindowsではDNS設定を変えてもまた出てくることがありました。
その場合は、Docker Desktopの右クリックメニューより、「Sign in / Create Docker ID」を選択し、DockerHubにログインすることで治りました。
DockerHubのIDはDocker for Windowをダウンロードする際に作成していると思います。そうでなければ新しく作成して試してみると良いです。