This error occurs when Docker cannot enable a plugin due to permission issues, missing dependencies, incompatible versions, or plugin configuration problems. The fix typically involves checking plugin requirements, ensuring proper permissions, and verifying Docker daemon compatibility.
When you run `docker plugin enable` or install a plugin that auto-enables, Docker attempts to start the plugin's runtime environment. If the plugin cannot be initialized, Docker returns this error from the daemon. Docker plugins extend the Docker Engine's functionality, providing volume drivers, network drivers, authorization handlers, and other features. Each plugin runs as a separate process managed by the Docker daemon. When enabling fails, it typically means the plugin cannot access required resources, lacks necessary permissions, or has configuration issues. This error commonly appears when installing storage plugins (like rexray or local-persist), network plugins, or logging drivers. The underlying cause varies significantly depending on the specific plugin type and system configuration.
The generic error message often hides the real cause. Check the Docker daemon logs for specifics:
# On systemd-based systems (Ubuntu, Debian, CentOS 7+)
sudo journalctl -u docker.service --since "5 minutes ago" | grep -i plugin
# Or check the daemon log directly
sudo tail -100 /var/log/docker.log | grep -i pluginLook for messages mentioning the plugin name, permission denied, or missing files.
Review the plugin's current configuration and required permissions:
docker plugin inspect <plugin-name>Pay attention to:
- Settings.Devices: Required device access (e.g., /dev/fuse)
- Settings.Mounts: Required mount points
- Config.Network.Type: Network requirements (host, bridge)
- Config.Linux.Capabilities: Required Linux capabilities
Example for a storage plugin:
{
"Settings": {
"Devices": [{"Path": "/dev/fuse"}],
"Mounts": [{"Source": "/var/lib/plugin-data", "Destination": "/data"}]
}
}When installing plugins, Docker prompts for capability grants. If you skipped this or the plugin needs different capabilities:
# Disable the plugin first
docker plugin disable <plugin-name>
# Re-enable with capability grant
docker plugin set <plugin-name> <capability>=<value>
# Or remove and reinstall with grants
docker plugin rm <plugin-name>
docker plugin install <plugin-name> --grant-all-permissionsWarning: Only use --grant-all-permissions for trusted plugins, as it grants extensive host access.
Many plugins require specific directories on the host. Create them if missing:
# Check what mounts the plugin needs
docker plugin inspect <plugin-name> --format '{{.Settings.Mounts}}'
# Create required directories
sudo mkdir -p /var/lib/<plugin-data-dir>
sudo chmod 755 /var/lib/<plugin-data-dir>For storage plugins, the data directory is often configurable:
docker plugin set <plugin-name> DATA_DIR=/custom/pathSome plugins require specific devices. For example, FUSE-based storage plugins need /dev/fuse:
# Check if device exists
ls -la /dev/fuse
# If missing, load the fuse module
sudo modprobe fuse
# Make it persistent across reboots
echo "fuse" | sudo tee /etc/modules-load.d/fuse.confFor other devices, check docker plugin inspect output and ensure they exist.
Check the plugin documentation for Docker version requirements:
# Check your Docker version
docker version
# Check plugin API version
docker plugin inspect <plugin-name> --format '{{.Config.Interface.Types}}'If the plugin requires a newer Docker version, upgrade Docker or use an older plugin version:
docker plugin install <plugin-name>:<version-tag>If configuration changes don't help, perform a clean reinstall:
# Force disable if it has references
docker plugin disable -f <plugin-name>
# Remove the plugin
docker plugin rm <plugin-name>
# Clean any leftover state (plugin-specific)
sudo rm -rf /var/lib/docker/plugins/<plugin-id>
# Reinstall with explicit grants
docker plugin install <plugin-name> --grant-all-permissionsThen try enabling:
docker plugin enable <plugin-name>Sometimes the daemon needs a restart to properly initialize plugin infrastructure:
sudo systemctl restart docker
# Verify daemon is running
sudo systemctl status docker
# Try enabling the plugin again
docker plugin enable <plugin-name>Check that the plugin appears enabled:
docker plugin ls### Rootless Docker Plugin Issues
Docker 25.0.5 fixed a bug where rootless Docker would fail with "open /etc/docker/plugins: permission denied". If you're running rootless Docker and encountering plugin issues:
# Update to Docker 25.0.5 or later
# Or manually create the plugins directory with correct permissions
mkdir -p ~/.config/docker/plugins### SELinux Considerations
On RHEL/CentOS/Fedora systems with SELinux enabled, plugins may be blocked:
# Check for SELinux denials
sudo ausearch -m avc -ts recent | grep docker
# Temporarily set SELinux to permissive to test
sudo setenforce 0
docker plugin enable <plugin-name>
# If it works, you need to create a custom SELinux policy
# Don't leave SELinux disabled in production
sudo setenforce 1### Plugin Socket Locations
Docker looks for plugin sockets in:
- /run/docker/plugins/ - Unix domain socket files
- /etc/docker/plugins/ - Plugin spec files
- /usr/lib/docker/plugins/ - Alternative spec location
Ensure these directories exist and have correct permissions:
sudo ls -la /run/docker/plugins/
sudo ls -la /etc/docker/plugins/### Third-Party Plugin Support
The Docker team explicitly states that third-party plugin issues should be directed to plugin maintainers. When reporting issues:
1. Include docker plugin inspect output
2. Include relevant daemon logs
3. Note your Docker version and host OS
4. Check the plugin's GitHub issues for known problems
### Plugin Retry Behavior
Docker automatically retries plugin method calls with exponential backoff for up to 30 seconds. If the plugin is slow to start (common with containerized plugins), the first few enable attempts may fail before succeeding. Try waiting a moment and running enable again.
image operating system "linux" cannot be used on this platform
How to fix 'image operating system linux cannot be used on this platform' in Docker
manifest unknown: manifest unknown
How to fix 'manifest unknown' in Docker
cannot open '/etc/passwd': Permission denied
How to fix 'cannot open: Permission denied' in Docker
Error response from daemon: failed to create the ipvlan port
How to fix 'failed to create the ipvlan port' in Docker
toomanyrequests: Rate exceeded for anonymous users
How to fix 'Rate exceeded for anonymous users' in Docker Hub