LoginSignup
3

More than 1 year has passed since last update.

posted at

updated at

WSL2でDOCKER_HOSTが指定されているとDockerが動かない

TL;DR

Windows 10でDocker for Desktopが動いている状態で、WSLのubuntuでは動いていたdockerが、WSL2にしたら動かなくなったのは、環境変数DOCKER_HOSTが指定されていたため。unset DOCKER_HOSTすると動く。

現象

WSLでdockerが使えていたのに、WSL2にしたら動かなくなった。

$ docker ps                                                                           [~]
Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?

実際にDockerは動いており、ポート2375が空いていることはPower Shellで確かめることができる。

$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

$ Test-NetConnection -ComputerName localhost -Port 2375


ComputerName     : localhost
RemoteAddress    : ::1
RemotePort       : 2375
InterfaceAlias   : Loopback Pseudo-Interface 1
SourceAddress    : ::1
TcpTestSucceeded : True

WSLのバージョン確認。

$ wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

WSLのバージョンは2で、docker-desktopも動いていますね。

原因は、(僕の場合は.zshrcにて)環境変数DOCKER_HOSTが指定されていたため。

export DOCKER_HOST=tcp://localhost:2375

確かWSLではこれが必要だった。しかし、WSL2では不要。これをunsetすると動くようになる。

$ unset DOCKER_HOST
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

動いた。めでたい。

個人的にものすごく困っていたので、同じ理由で困っている人のためにここに記録を残しておきます。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3