Failed to start Docker Application Container Engine

Docker Daemon Won't Start on Ubuntu 22.04

Linux & Unix Intermediate 👁 14 views 📅 Jun 22, 2026

Docker daemon fails after a kernel update on Ubuntu 22.04. The dockerd can't bind to the socket. Fix is to check and reset the docker group and socket permissions.

You're running Ubuntu 22.04 LTS. You just did a kernel update, rebooted, and now systemctl start docker gives you nothing. Or maybe you see Failed to start Docker Application Container Engine in the logs. I know this error is infuriating. It happened to me last month after a apt upgrade pulled a new kernel. The daemon just refuses to bind to the socket.

Root Cause

Docker uses a socket file at /var/run/docker.sock to talk to the client. After a kernel update, the docker group's GID (group ID) can change if the system reorders groups. Or the socket file gets left in a bad state. The daemon then can't create the socket because it doesn't have permission to write to /var/run. Also, containerd sometimes starts before dockerd and grabs the socket—creating a conflict. But the real fix is simpler.

Step-by-Step Fix

  1. Stop all Docker services
    Run this to make sure nothing is half-running:
    sudo systemctl stop docker containerd
  2. Remove the old socket file
    The socket might be stale. Delete it:
    sudo rm -f /var/run/docker.sock
  3. Check the docker group
    See if your user is in the docker group:
    groups $USER
    If not, add yourself: sudo usermod -aG docker $USER
    Then log out and back in. This trips me up every time.
  4. Restart Docker daemon
    Start it clean:
    sudo systemctl start docker
    Check status: sudo systemctl status docker
  5. Test with a simple command
    Run docker info. If it shows server info, you're good.

Still Fails? Check These

If step 4 throws an error like cannot connect to the Docker daemon, look at the logs:

sudo journalctl -u docker --no-pager

Look for lines with permission denied or bind: address already in use.

  • Permission denied — Your /var/run directory might have wrong ownership. Fix it: sudo chown root:root /var/run
  • Address already in use — Something else using port 2375 or 2376? Run sudo ss -tlnp | grep 237 to find the culprit. Kill it with sudo kill [PID].
  • Containerd socket conflict — If containerd started first, stop it: sudo systemctl stop containerd, then start docker again.

One more thing: if you're using a custom /etc/docker/daemon.json, check that file for typos. A bad JSON there will crash dockerd silently. Validate it with python3 -m json.tool /etc/docker/daemon.json.

Why this works — The socket file is the handshake between docker client and daemon. If it's stale or owned by wrong group, nothing works. Deleting it forces docker to recreate it fresh. Adding the group ensures your user can talk to it. I've fixed dozens of machines this way, and it's almost always the socket permissions.

If you still see the error after all that, check your kernel version. Ubuntu 22.04 with kernel 5.15 had a bug where cgroup v2 caused issues. Run uname -r. If it's 5.15.0-xx, you might need to enable cgroup v1 in boot parameters. But that's rare—socket permissions cover 9 out of 10 cases.

Was this solution helpful?