When you run a Docker command and see “Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”, your Docker client cannot communicate with the Docker service. This happens because either Docker isn’t running, your user lacks permissions, or the socket file has issues.
Let me walk you through every solution that actually works.
Understanding the Error
Docker uses a client-server architecture. When you type docker run or any Docker command, the Docker client talks to the Docker daemon (dockerd) through a socket file located at /var/run/docker.sock.
This error means the connection failed. The daemon might be stopped, the socket file might be missing, or your user account doesn’t have access rights.
Quick fix for most users: Run sudo systemctl start docker on Linux or start Docker Desktop on Windows/Mac.
Check if Docker Daemon is Running
Start here. Most errors happen because the daemon simply isn’t running.
Linux Systems
Open your terminal and check the Docker service status:
sudo systemctl status docker
Look for “active (running)” in green text. If you see “inactive (dead)” or “failed”, Docker isn’t running.
Start Docker with:
sudo systemctl start docker
Enable Docker to start automatically on boot:
sudo systemctl enable docker
Verify it’s working:
docker ps
macOS and Windows
Open Docker Desktop from your applications. The whale icon should appear in your system tray (Windows) or menu bar (macOS).
If Docker Desktop shows “Docker is starting…”, wait 30-60 seconds. Large projects or slow systems take longer.
Right-click the Docker icon and select “Restart” if it seems stuck.

Permission Problems
This is the second most common cause. Docker requires elevated permissions to access the socket file.
Add Your User to the Docker Group (Linux)
The docker socket file is owned by root and the docker group. Your user needs to be in this group.
Check if the docker group exists:
cat /etc/group | grep docker
Add yourself to the docker group:
sudo usermod -aG docker $USER
Important: Log out completely and log back in. The group membership only takes effect after you start a fresh session. Switching terminals won’t work.
Verify your group membership:
groups
You should see “docker” in the list.
Alternative: Use Sudo (Quick Temporary Fix)
If you need Docker working immediately:
sudo docker ps
This works but gets tedious. The group method above is better for regular use.
Socket File Issues
Sometimes the socket file itself has problems.
Check Socket File Exists
Run this command:
ls -l /var/run/docker.sock
You should see something like:
srw-rw---- 1 root docker 0 Jan 11 10:30 /var/run/docker.sock
The “s” at the start means it’s a socket file. The “rw-rw—-” shows permissions.
Socket File Missing
If the file doesn’t exist, Docker daemon failed to start. Check the daemon logs:
sudo journalctl -u docker.service -n 50
Look for error messages. Common issues include:
- Port conflicts (another service using Docker’s ports)
- Corrupted configuration files
- Insufficient disk space
Fix Socket Permissions
If the socket exists but you still get errors, fix the permissions:
sudo chmod 666 /var/run/docker.sock
This makes the socket readable and writable by everyone. It’s less secure than the group method but works for testing.
Better approach: Fix the socket ownership instead:
sudo chown root:docker /var/run/docker.sock
Docker Desktop Specific Issues
Docker Desktop on Windows and Mac has unique problems.
Windows with WSL2
If you’re using WSL2, make sure Docker Desktop’s WSL2 integration is enabled.
Open Docker Desktop settings:
- Click the Docker icon in the system tray
- Select “Settings”
- Go to “Resources” then “WSL Integration”
- Enable integration for your WSL2 distribution
- Click “Apply & Restart”
Check that Docker Desktop is actually running in the background. Task Manager should show “Docker Desktop” processes.
macOS Ventura and Newer
Recent macOS versions have stricter security. Grant Docker full disk access:
- Open System Settings
- Go to “Privacy & Security”
- Select “Full Disk Access”
- Add Docker Desktop to the list
- Restart Docker Desktop
Docker Desktop Not Starting
If Docker Desktop won’t start at all:
Clear Docker data (This removes all containers and images):
- Windows: Delete
C:\Users\YourUsername\AppData\Local\Docker - macOS: Delete
~/Library/Containers/com.docker.docker
Reinstall Docker Desktop: Download the latest version from Docker’s official website and install fresh.
Configuration File Problems
Docker reads configuration from /etc/docker/daemon.json. A syntax error here breaks everything.
Check if the file exists:
sudo cat /etc/docker/daemon.json
If you see JSON syntax errors (missing commas, brackets), fix them. Valid JSON looks like:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
Validate your JSON using any online JSON validator before saving.
After fixing, restart Docker:
sudo systemctl restart docker
Environment Variable Conflicts
Docker client uses environment variables to find the daemon. Incorrect variables cause connection failures.
Check your current Docker host setting:
echo $DOCKER_HOST
If this shows anything other than being empty or unix:///var/run/docker.sock, it’s pointing to the wrong location.
Unset the variable:
unset DOCKER_HOST
Add this to your ~/.bashrc or ~/.zshrc to make it permanent:
export DOCKER_HOST=unix:///var/run/docker.sock
Reload your shell configuration:
source ~/.bashrc
Firewall and Security Software
Security software sometimes blocks Docker’s socket communication.
Linux Firewalls
Check if SELinux is blocking Docker:
sudo ausearch -m avc -ts recent | grep docker
If you see denials, either fix the SELinux policy or temporarily set it to permissive mode:
sudo setenforce 0
For AppArmor:
sudo aa-status | grep docker
Windows Firewall
Add Docker Desktop as an exception in Windows Defender Firewall:
- Open Windows Security
- Go to “Firewall & network protection”
- Click “Allow an app through firewall”
- Find “Docker Desktop” and check both private and public
- Restart Docker Desktop
Installation Issues
If you just installed Docker and get this error, the installation might be incomplete.
Verify Installation (Linux)
Check that Docker packages are actually installed:
dpkg -l | grep docker
or
rpm -qa | grep docker
You should see packages like docker-ce, docker-ce-cli, and containerd.io.
Reinstall Docker
Ubuntu/Debian:
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
CentOS/RHEL:
sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum install docker-ce docker-ce-cli containerd.io
Start and enable the service:
sudo systemctl start docker
sudo systemctl enable docker
Advanced Diagnostics
When basic fixes don’t work, dig deeper.
Check System Resources
Docker needs adequate resources. Check disk space:
df -h
Docker typically stores data in /var/lib/docker. If this partition is full, Docker won’t start.
Check memory:
free -h
Low memory can cause daemon crashes.
Examine Daemon Logs
Get detailed logs:
sudo journalctl -u docker.service --no-pager
Look for lines with “ERROR” or “FATAL”. Common errors:
- “Failed to start daemon: error initializing graphdriver”
- “Unable to configure the Docker daemon with file”
- “Address already in use”
Test Docker Manually
Try starting Docker daemon manually to see live errors:
sudo dockerd
This runs Docker in the foreground. You’ll see all output directly. Press Ctrl+C to stop.
Network and Proxy Issues
Corporate networks and proxies cause connection problems.
Configure Docker Proxy Settings
Create or edit /etc/systemd/system/docker.service.d/http-proxy.conf:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
Add these lines (replace with your proxy details):
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=http://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1"
Reload and restart:
sudo systemctl daemon-reload
sudo systemctl restart docker
Container Runtime Conflicts
Multiple container runtimes can conflict with Docker.
Check for Podman (common on RHEL-based systems):
podman info
If Podman is actively using the socket location, you’ll need to stop it or configure Docker to use a different socket.
Common Scenario Solutions
Here’s a quick reference table for the most frequent situations:
| Situation | Solution |
|---|---|
| Just installed Docker | Run sudo systemctl start docker and sudo systemctl enable docker |
| Error after system reboot | Docker service didn’t start automatically. Enable with sudo systemctl enable docker |
| Works with sudo, fails without | Add user to docker group: sudo usermod -aG docker $USER, then log out and back in |
| Docker Desktop icon missing (Mac/Win) | Open Docker Desktop manually from Applications folder |
| After upgrading Docker | Restart daemon: sudo systemctl restart docker |
| WSL2 on Windows | Enable WSL integration in Docker Desktop settings |
| Changed Docker configuration | Validate /etc/docker/daemon.json syntax and restart daemon |
Prevention Tips
Avoid this error in the future:
Set Docker to start on boot (Linux):
sudo systemctl enable docker
Monitor Docker health:
docker info
This command shows Docker’s status and catches problems early.
Keep Docker updated: Older versions have bugs that cause daemon crashes.
For more information about Docker daemon configuration, see the official Docker documentation.
Summary
The “Cannot connect to the Docker daemon” error has three main causes:
- Docker daemon isn’t running: Start it with
sudo systemctl start dockeron Linux or launch Docker Desktop on Windows/Mac. - Permission denied: Add your user to the docker group with
sudo usermod -aG docker $USERand log out/in. - Socket file issues: Verify
/var/run/docker.sockexists and has correct permissions.
Most users fix this error within 2 minutes using the first two solutions. If you’re still stuck, work through the configuration file checks and daemon logs.
Docker is reliable once properly configured. These errors usually happen during initial setup or after system changes.
Frequently Asked Questions
Why does Docker work with sudo but not without it?
Your user account isn’t in the docker group. The docker socket file is owned by root and the docker group. Without group membership, you need root privileges to access it. Add yourself to the docker group using sudo usermod -aG docker $USER and start a new login session.
Can I use Docker without adding my user to the docker group?
Yes, but you’ll need to prefix every Docker command with sudo. This gets inconvenient quickly. The docker group method is standard practice and recommended by Docker. For production servers, consider the security implications of giving users docker group access since it grants root-equivalent privileges.
Docker was working yesterday but stopped today, what happened?
Common causes include system updates that stopped the Docker service, system reboots where Docker didn’t auto-start, or disk space issues. Check if the daemon is running with sudo systemctl status docker and look at available disk space with df -h. Restart the daemon to fix most issues.
Does uninstalling and reinstalling Docker delete my containers and images?
It depends on how you uninstall. Using package managers to remove Docker doesn’t automatically delete /var/lib/docker where images and containers are stored. However, removing Docker Desktop on Windows/Mac through the uninstaller typically removes everything. Back up important data in volumes before reinstalling.
How do I know if my Docker installation is corrupted?
Run docker version and docker info. If these commands fail even with sudo, or if sudo dockerd shows errors when starting manually, your installation likely has problems. Check the daemon logs with sudo journalctl -u docker.service for specific errors. Corrupted installations usually show clear error messages pointing to missing files or dependency problems.
- How to Uninstall Apps from the Start Menu in Windows 11/10 (2026 Guide) - April 2, 2026
- How to Fix Overscan on Windows 11/10: Stop Your Screen Getting Cut Off (2026) - April 1, 2026
- How to Disable Lock Screen on Windows 11/10 in 2026 - April 1, 2026
