Introduction

Users new to Docker may find it difficult to use as they often encounter an issue right after installing it. The “cannot connect to the Docker daemon” error in Docker usually happens when running the docker-compose build command.

In this tutorial, we will go over possible causes of the “cannot connect to the Docker daemon” error and the ways you can solve it.

How to resolve the "cannot connect to Docker daemon" error

Prerequisites

Resolving the "cannot connect to the Docker daemon" Error

There are several ways to fix the “cannot connect to the Docker daemon” error. If one solution doesn’t work for you, move on to the next method until you resolve the issue.

Method 1: Check the Docker Engine

If the Docker engine is not running, docker-compose can’t access it, which produces the error.

1. First, check if the Docker engine is running:

sudo service docker status

Checking the Docker service status to resolve the "cannot connect to the docker daemon" error.

2. If the Docker engine isn’t working, restart it with the following command:

sudo service docker restart

3. After you restart the Docker engine, try running the docker-compose build command again. If the error persists, try one of the following solutions.

Method 2: Assign Ownership to the Docker Unix Socket

The “cannot connect to the Docker daemon” error also happens if the Unix socket file for Docker doesn’t have the correct ownership assigned.

1. Check ownership for the Docker Unix socket:

sudo ls -la /var/run/docker.sock

Checking the ownership for the Docker Unix socket to resolve "cannot connect to the docker daemon" error.

2. If necessary, grant the user ownership with:

sudo chown [username]:docker /var/run/docker.sock

Method 3: Check the Ownership of Used Files

Ownership issues can also extend to files used by your Docker build. If Docker needs to use a file it can’t access, this results in a “cannot connect to the Docker daemon” error.

1. Run the docker build command for each individual container. This gives you a detailed output that points out any potential errors.

Using the docker build command to get a more detailed output to resolve "cannot connect to the docker daemon" error.

2. Check the output for each container, keeping an eye out for an “cannot connect to the Docker daemon” error report. If there is a problem with the file ownership, the error report will list out the files that the docker build command cannot access.

3. There are several ways to resolve the issue of ownership of used files:

      • You can simply remove the files in question by deleting them, but this affects any other builds using the same files.
      • Another method is to add the .dockerignore file to your current build, thus excluding the files your build can’t access.
      •  Finally, you can change the file ownership with:
sudo chown [username]:docker /your/file/location

Method 4: Add Your User to the Docker Group

Not having the proper user privileges also triggers the error. You need to be able to access the Docker engine without using the sudo command.

1. To solve this issue, add the current user to the Docker group via usermod command:

sudo usermod -aG docker [username]

2. Log out and back in to confirm the changes.

Method 5: Add Environment Tables on OS X

If you are running Docker on OS X, you may have to add environment variables:

1. First, start the Docker virtual machine:

docker-machine start

2. Get the environment variables for Docker with:

docker-machine env

3. Finally, set the environment variables:

eval "$(docker-machine env default)"

Conclusion

After following this tutorial, you should be aware of the potential causes of the “cannot connect to the Docker daemon” error and ways to fix each one.

Learn Docker container management best practices for an efficient and safe Docker environment.


Next you should also read