WSL and Docker for Windows: "Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?"

Works great! Thank you for this solution!

Solved it by resetting Shared Drives credentials :

  1. Go to Shared Drives
  2. Hit Reset credentials
  3. Type password again
  4. Share drive again
  5. Apply

Thanks. This solution works great

Thank you.

I have been struggling with this for well over a year. Some days, connectivity to Docker for Windows works flawlessly within WSL. Other days, the dreaded “Cannot connect to the Docker daemon…” error (usually after Windows updates). No amount of restarting / resetting Docker typically helps, and I often have to reboot numerous times until finally it decides it wants to allow connections again.

Right now, I’m having the issue. I can confirm that running this in cmd.exe and then trying to connect in WSL works. I was concerned that this might break volume mounts from WSL, but they too work perfectly.

Thank you!

Make sure to check the box next to the following:

Docker desktop --> Settings --> General --> “Expose daemon on tcp://localhost:2375 without TLS”

1 Like

If you are on Windows Pro, you just need to enable on the docker settings {expose demon on port 2375 without TLS} check box.

1 Like

Thank you so much for this solutin, you saved my day.

I had to expose the 2375 port in the Docker Desktop settings as well. As a test, I quit Docker Desktop and the error returned.

I had these same error message but not that often when I execute docker ps:

Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?

Sys info: Running Windows 10 Enterprise Vers 1803 OS Build 17134.1069 and docker ver Docker version 18.09.7, build 2d0083d.

I had tried:

-"/localhost:2375 without TLS" verified it was checked
-Reset permissions to local hard drives
-Restarted docker itself few times

Currently running docker via WSL. Everything works fine but every blue moon I get this error. No matter what I do, it will not go away. My current solution is to do a hard cold restart and everything works as before. I have a theory and it is that docker (or docker-machine and underlined layer) builds up some memory over time until it reaches at limit and the connection cannot be made. Maybe the port is not release properly? It takes on average 10 to 15 days to reach this error and for me, restarting the system solved the problem every time. This has been my experience in the last three months so this behavior of locking up is consistent. I would like to note that after I restart the machine, Docker works without any problems.

Cheers!

The above command needs to be run from the Windows side not the WSL side (thanks bigwhoop). Probably obvious to others but not me :man_facepalming:.

Run socat via docker on the Windows command line (source)

1 Like

He said he has already done it

For anyone still having issues with:

Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?

After enabling “Expose daemon on 2375” setting in Docker Desktop, you have to manually restart. I thought it was restarting automatically, but it was not.

2 Likes

I had the same problem with sudo docker <command>.
But without sudo( docker info) it is running fine.

Same issue

wsl:ubuntu $ docker version
Client:
 Version:           19.03.6
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        369ce74a3c
 Built:             Fri Feb 28 23:45:43 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at tcp://172.18.7.106:2375. Is the docker daemon running?

But in my case it worked from cmd

cmd: $ docker -H tcp://localhost:2375 version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:23:10 2020
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

For me helped turn on/off docker’s Expose daemon on tcp://localhost:2375 without TLS setting on windows panel with restart.

wsl:ubuntu $ docker version
Client:
 Version:           19.03.6
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        369ce74a3c
 Built:             Fri Feb 28 23:45:43 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
1 Like

Have you tried restarting the Docker Desktop? I saw the same error at begining but the problemn was resolved after restarting the Docker Desktop.

I was struggling with this, too, and the following worked for me:

Instead of: DOCKER_HOST=tcp://localhost:2375

Do: DOCKER_HOST=tcp://127.0.0.1:2375

Yeah, IP instead of “domain”… :slight_smile:

This was the fix for me, needed to manually restart Docker Desktop after setting it up to listen on localhost:2375. This was in spite of the fact that after setting it to listen on localhost:2375, the button said “apply and restart” :slight_smile:

1 Like

yup! after restarting daemon manually it worked for me. Thanks buddy.

I did every steps by the official tutorials, then I met this issue as well, I tried to remove the variable echo DOCKER_HOST=tcp://localhost:2375 from my ~/.zshrc, and then restarted the terminal, after that it worked properly with command docker version on Ubuntu.

# WSL2 Ubuntu
$ docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b7f0
 Built:             Wed Mar 11 01:25:46 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

My Docker Desktop settings as below:


1 Like

For those running Docker Toolbox, you don’t have the option to expose the daemon without TLS.

A solution that I found on Stack Overflow,

In your .bashrc or .zshrc add these lines.

export DOCKER_HOST=tcp://192.168.99.100:2376 // your Docker IP
export DOCKER_CERT_PATH=/mnt/c/Users/YOUR_USERNAME/.docker/machine/certs
export DOCKER_TLS_VERIFY=1

You get your docker daemon ip by running, docker-machine ip in windows powershell.

Just source the updated profile config, and it works smoothly.
source .bashrc

Original Stack Overflow post: https://stackoverflow.com/questions/45863486/docker-toolbox-on-windows-disable-tls

1 Like