How to Resolve the “cannot connect to the Docker daemon” Error

December 10, 2020

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.

Note: Not executing the command as the sudo user might invoke the "cannot connect to Docker daemon" error. Try adding the sudo command prefix to ensure this isn't the cause of 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, start it with the following command:

sudo service docker start

3. After you start 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.

Note: If you just installed Docker and still don't have a docker group to which you can add the user, create the group before running the command listed above. To do so, run: sudo groupadd docker.

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.

Was this article helpful?
YesNo
Aleksandar Kovačević
With a background in both design and writing, Aleksandar Kovacevic aims to bring a fresh perspective to writing for IT, making complicated concepts easy to understand and approach.
Next you should read
10 Docker Security Best Practices
September 14, 2020

This article provides 10 container security tips that can help you prevent attacks and privilege breaches...
Read more
How To Install and Use Docker on Ubuntu 20.04
April 6, 2023

Install Docker on Ubuntu 20.04 using the default repository or from the official Docker repository with the...
Read more
How to Update Docker Image and Container to the Latest Version
August 13, 2020

To avoid running containers with outdated Docker images, update the image and run the container with the...
Read more
Docker Volumes: How to Create & Get Started
July 27, 2020

Persist data in Docker containers by mounting Docker volumes to containers. You can use an existing host...
Read more