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.
Prerequisites
- Access to the command line or terminal
- A working Docker installation
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
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
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.
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.