Docker Community Forums

Share and learn in the Docker community.

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

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

2 Likes

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.

5 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

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:

1 Like

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:

3 Likes

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

Wow! I ran this command in Ubuntu WSL :man_facepalming: and tried running docker ps, which didn’t work to my annoyment. If it wasn’t for @spottedmahn clarifying it to be run on the Windows side I would have throwed in the towel! I really have to give a lot of kudos to @nicodocoyo (for the solution), and @spottedmahn (for the clarification) for helping me figure this out!

Thank you nicodocoyo, this fixed the problem for me.

I just added the tcp://localhost:2375 to the root ~/.bashrc and it worked for me.

removing the variable worked for me aswell.

Hi, I have been having this problem for days now and I am new to Docker.

I tried executing the docker-machine.exe create default, but it gives me this error:

'docker-machine.exe' is not recognized as an internal or external command,
operable program or batch file.