How to fix Error starting daemon: error initializing graphdriver: driver not supported in Docker
This error occurs when Docker cannot initialize the storage driver (graphdriver) used to manage container images and layers. It typically happens after kernel updates, when storage driver configuration conflicts exist, or when there are incompatible filesystem types.
Quick fix
Fixes Error starting daemon: error initializing graphdriver: driver not supported
# Check systemd journal for Docker daemon errors
sudo journalctl -u docker.service -n 50 --no-pager
# Or try starting dockerd directly to see the full error
sudo dockerd --debug- Check the Docker daemon logs for details
- Reboot the system (if kernel was recently updated)
- Check which storage drivers are available
- Identify conflicting storage driver directories
# Check systemd journal for Docker daemon errorssudo journalctl -u docker.service -n 50 --no-pager# Or try starting dockerd directly to see the full errorsudo dockerd --debugError starting daemon: error initializing graphdriver: driver not supported
What this error means
The graphdriver (storage driver) is a core Docker component responsible for managing layered filesystem storage for images and containers. When Docker starts, it initializes the storage driver to read and write container layers to disk. This error appears when: - The configured storage driver is not supported by your kernel - Multiple conflicting storage driver directories exist in /var/lib/docker - A kernel update removed support for the previously-used storage driver (e.g., AUFS) - The underlying filesystem doesn't support the selected storage driver - Docker was upgraded and the old storage driver is deprecated or removed The most common scenario is after a kernel or Docker upgrade where the previously-used storage driver (like AUFS or devicemapper) is no longer available, and Docker cannot automatically switch to a compatible alternative.
Typical symptoms
- Docker daemon fails to start with 'error initializing graphdriver' message
- Running 'dockerd' or 'systemctl start docker' fails immediately
- Error mentions 'driver not supported' or 'prior storage driver failed'
- journalctl shows graphdriver initialization failures
- Docker worked before a kernel update or system upgrade
- Error references multiple graphdrivers: aufs, overlay2, devicemapper
Common causes
- Kernel update removed support for the previously-used storage driver (AUFS)
- Multiple storage driver directories exist in /var/lib/docker causing conflicts
- Docker upgrade deprecated or removed the configured storage driver
- Underlying filesystem does not support the storage driver (e.g., ZFS with overlay2)
- Explicit storage driver configuration in daemon.json conflicts with system capabilities
- VM or container host kernel lacks required modules for the storage driver
- System reboot required after kernel update to load new modules
- Corrupted Docker data directory from previous failed initialization
How to fix "Error starting daemon: error initializing graphdriver: driver not supported"
First, examine the exact error message to understand which storage driver is failing:
# Check systemd journal for Docker daemon errors
sudo journalctl -u docker.service -n 50 --no-pager
# Or try starting dockerd directly to see the full error
sudo dockerd --debugLook for messages like:
- "prior storage driver aufs failed"
- "driver not supported"
- "/var/lib/docker contains several valid graphdrivers"
If you recently performed a system update, the kernel may have been upgraded but not yet loaded:
# Check if a reboot is required
ls /var/run/reboot-required 2>/dev/null && echo "Reboot required"
# Reboot the system
sudo rebootAfter rebooting, try starting Docker again:
sudo systemctl start docker
docker versionVerify which storage drivers your kernel supports:
# Check for overlay/overlay2 support
lsmod | grep overlay
modprobe overlay # Try loading the overlay module
# Check kernel config for storage driver support
grep -i overlay /boot/config-$(uname -r) 2>/dev/null || \
zcat /proc/config.gz 2>/dev/null | grep -i overlay
# Check for AUFS support (deprecated in newer kernels)
grep -i aufs /proc/filesystemsModern systems should use overlay2 as the default storage driver.
Check if multiple storage driver directories exist:
ls -la /var/lib/docker/If you see multiple directories like aufs, overlay2, devicemapper, Docker may be confused about which one to use.
The error message will often tell you which drivers were detected:
- "contains several valid graphdrivers: aufs, overlay2"
- "contains several valid graphdrivers: devicemapper, overlay2"
Explicitly set the storage driver to overlay2 (recommended for most systems):
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"storage-driver": "overlay2"
}
EOF
# Restart Docker
sudo systemctl restart dockerNote: If you're on an older system without overlay2 support, you may need to use a different driver. Check Docker's storage driver documentation for compatibility.
Warning: This will delete all containers, images, and volumes. Back up important data first!
If you need to switch storage drivers and clean up old data:
# Stop Docker
sudo systemctl stop docker
# Remove the old storage driver directory (e.g., aufs)
sudo rm -rf /var/lib/docker/aufs
# Or if switching from devicemapper
sudo rm -rf /var/lib/docker/devicemapper
# Start Docker with the new driver
sudo systemctl start dockerAlternatively, to completely reset Docker:
sudo rm -rf /var/lib/docker/*
sudo systemctl start dockerIf you're using Docker Desktop and see this error, perform a factory reset:
1. Open Docker Desktop
2. Go to Settings (gear icon)
3. Navigate to Troubleshoot
4. Click Reset to factory defaults
This will clear all Docker data and reset the storage driver configuration.
Alternatively, from the error dialog, you may see a "reset docker to factory defaults" button - click it to resolve the conflict.
After applying fixes, verify Docker is functioning correctly:
# Check Docker daemon status
sudo systemctl status docker
# Verify the storage driver in use
docker info | grep "Storage Driver"
# Run a test container
docker run --rm hello-worldThe storage driver should now show "overlay2" (or your configured driver), and the test container should run successfully.
Advanced notes
Storage Driver Deprecation Timeline:
- AUFS: Removed from Ubuntu kernels since 3.18; replaced by OverlayFS
- Devicemapper: Deprecated in Docker 18.09+, removed in newer versions
- Overlay (v1): Superseded by overlay2, not recommended
- Overlay2: Current recommended driver for most Linux distributions
ZFS and Btrfs Considerations:
If your Docker data directory is on ZFS or Btrfs, you should use the matching storage driver:
{
"storage-driver": "zfs"
}Overlay2 is not compatible with ZFS filesystems. Docker will fail with "backing file system is unsupported for this graph driver."
Graphdriver Plugin Deprecation:
Graphdriver plugins were an experimental feature removed in Docker v28.0. If you were using custom graphdriver plugins, you'll need to migrate to containerd snapshotters.
Kernel Module Issues in VMs:
In virtualized environments (Xen, VirtualBox, cloud VMs), the host kernel may not have the required modules. For Xen, you may need to enable pygrub and install a kernel inside the VM rather than using the host kernel.
Checking for Corrupted State:
If Docker keeps failing even after configuration changes, the internal state may be corrupted:
sudo ls -la /var/lib/docker/
sudo du -sh /var/lib/docker/*Look for unusually large or empty directories that shouldn't exist.
LXC Containers:
Running Docker inside LXC containers often requires specific kernel features. The overlay2 driver may fail if the container doesn't have the right privileges. Consider using fuse-overlayfs or running Docker in privileged mode.
Frequently asked questions
- What does "Error starting daemon: error initializing graphdriver: driver not supp" mean?
- The graphdriver (storage driver) is a core Docker component responsible for managing layered filesystem storage for images and containers. When Docker starts, it initializes the storage driver to read and write container layers to disk. , AUFS) - The underlying filesystem doesn't support the selected storage driver - Docker was upgraded and the old storage driver is deprecated or removed The most common scenario is after a kernel or Docker upgrade where the previously-used storage driver (like AUFS or devicemapper) is no longer available, and Docker cannot automatically switch to a compatible alternative.
- How do I fix "Error starting daemon: error initializing graphdriver: driver not supp"?
- This error occurs when Docker cannot initialize the storage driver (graphdriver) used to manage container images and layers. It typically happens after kernel updates, when storage driver configuration conflicts exist, or when there are incompatible filesystem types.
- What causes "Error starting daemon: error initializing graphdriver: driver not supp"?
- Kernel update removed support for the previously-used storage driver (AUFS) Multiple storage driver directories exist in /var/lib/docker causing conflicts Docker upgrade deprecated or removed the configured storage driver
- Is the "Error starting daemon: error initializing graphdriver: driver not supp" error serious?
- Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.
Official resources & further reading
- 📚Docker Official Documentation
- 📖Select a storage driver - Docker Docs(Official Docs)
- 📖Deprecated features - Docker Docs(Official Docs)
- 📖Docker Engine plugins - Graphdriver - Docker Docs(Official Docs)
- 📖Troubleshoot and diagnose - Docker Docs(Official Docs)
- 💬
- 💬
- 💬
- 💬
- 🐙
- 🐙
- 🐙