The 'plugin not found' error occurs when Docker cannot locate a requested plugin for volumes, networks, or authorization. This typically happens when the plugin is not installed, was installed as a legacy plugin on Docker 1.13+, or the plugin daemon is not running.
The "plugin not found" error in Docker appears when you try to use a plugin that the Docker daemon cannot locate or communicate with. Docker plugins extend Docker's functionality by providing additional drivers for volumes, networks, logging, and authorization. They can be managed plugins (installed via `docker plugin install`) or legacy plugins (standalone daemons that communicate via Unix sockets in `/run/docker/plugins/`). When you see this error, Docker is telling you that it searched for the specified plugin in both the managed plugin registry and the legacy plugin socket directory, but found nothing matching the requested name. This error commonly appears in three scenarios: 1. **Volume plugins**: When using `--volume-driver` or `-v` with a custom driver (e.g., flocker, nfs, glusterfs) 2. **Network plugins**: When creating networks with custom drivers like `transparent`, `macvlan`, or overlay plugins 3. **Authorization plugins**: When the Docker daemon is configured to use an auth plugin that isn't running On Windows, note that Docker Engine managed plugins are not supported, so any plugin usage will fail with this error.
First, check which plugins are currently installed and their status:
# List all managed plugins
docker plugin ls
# Example output:
# ID NAME DESCRIPTION ENABLED
# abc123 vieux/sshfs:latest sshFS plugin for Docker trueIf the plugin you need is not listed, it needs to be installed. If it's listed but shows ENABLED: false, you need to enable it.
For legacy plugins, check if the socket exists:
ls -la /run/docker/plugins/Install the plugin using Docker's managed plugin system:
# Install a plugin from Docker Hub
docker plugin install PLUGIN_NAME
# Example: Install the vieux/sshfs plugin
docker plugin install vieux/sshfs
# Install without prompting for capabilities
docker plugin install --grant-all-permissions vieux/sshfsDuring installation, Docker will prompt you to grant permissions/capabilities the plugin requires. Review these carefully before accepting.
Common volume plugins:
- vieux/sshfs - SSH filesystem driver
- rexray/ebs - Amazon EBS volumes
- local-persist - Persistent local volumes
For official plugin names, search Docker Hub: https://hub.docker.com/search?type=plugin
If the plugin is installed but disabled, enable it:
# Enable the plugin
docker plugin enable PLUGIN_NAME
# Verify it's now enabled
docker plugin lsA plugin might be disabled if:
- It was installed with --disable flag
- It encountered errors during startup
- You previously disabled it for configuration changes
Note: You cannot change plugin settings while it's enabled. To modify settings:
docker plugin disable PLUGIN_NAME
docker plugin set PLUGIN_NAME KEY=VALUE
docker plugin enable PLUGIN_NAMEIf you're using a legacy plugin (pre-Docker 1.13 style), the plugin runs as a separate daemon:
# Check if the plugin service is running (example with flocker)
systemctl status flocker-docker-plugin
# Or check the process directly
ps aux | grep docker-plugin
# Check plugin logs
journalctl -u flocker-docker-plugin
# or
cat /var/log/flocker/flocker-docker-plugin.logIf the service isn't running, start it:
sudo systemctl start flocker-docker-plugin
sudo systemctl enable flocker-docker-pluginThe plugin must create a socket file in /run/docker/plugins/ for Docker to find it.
If you're on Docker 1.13+ and using a legacy plugin, consider migrating to the managed plugin version if available:
# Remove the legacy plugin (stop its service first)
sudo systemctl stop OLD_PLUGIN_SERVICE
sudo rm /run/docker/plugins/OLD_PLUGIN.sock
# Install the managed version
docker plugin install MANAGED_PLUGIN_NAME
# Update your docker-compose.yml or run commands
# to use the new plugin name formatManaged plugins are preferred because:
- Docker handles lifecycle management
- Easier upgrades with docker plugin upgrade
- Better integration with Docker's security model
- Automatic startup with Docker daemon
After installing/enabling the plugin, verify it works:
# For volume plugins - create a test volume
docker volume create --driver PLUGIN_NAME test-volume
docker volume ls
# For network plugins - create a test network
docker network create --driver PLUGIN_NAME test-network
docker network ls
# Clean up test resources
docker volume rm test-volume
docker network rm test-networkIf the test fails, check the Docker daemon logs:
# Linux
sudo journalctl -u docker.service -f
# macOS/Windows
# Check Docker Desktop logs via Troubleshoot menuIf the plugin was installed but Docker still can't find it, restart the daemon:
# Linux (systemd)
sudo systemctl restart docker
# Linux (service)
sudo service docker restart
# macOS/Windows
# Restart Docker Desktop from the system trayThis forces Docker to re-scan for plugins. After restart, verify:
docker plugin ls
docker info | grep -A5 Plugins### Managed vs Legacy Plugins
Docker supports two plugin architectures:
| Feature | Managed Plugins (v2) | Legacy Plugins (v1) |
|---------|---------------------|---------------------|
| Introduced | Docker 1.13 | Docker 1.7 |
| Installation | docker plugin install | Manual daemon setup |
| Lifecycle | Docker-managed | Self-managed |
| Location | Internal plugin store | /run/docker/plugins/ socket |
| Upgrades | docker plugin upgrade | Manual |
### Windows Limitations
Docker Engine managed plugins are not supported on Windows. If you see this error on Windows:
Error response from daemon: plugins are not supported on this platformYou'll need to find alternative solutions:
- Use built-in volume drivers (local)
- Use Docker-in-Docker with a Linux container
- Run your workload on WSL2 backend
### Plugin Capabilities
When installing plugins, review the requested capabilities carefully:
docker plugin install --disable PLUGIN_NAME
docker plugin inspect PLUGIN_NAMECommon capabilities include:
- network: Access to host network
- mount: Access to host filesystem paths
- device: Access to host devices
- capabilities: Linux capabilities like CAP_SYS_ADMIN
### Troubleshooting Plugin Socket Issues
If a legacy plugin's socket isn't being created:
# Check if the plugin directory exists
ls -la /run/docker/plugins/
# Create it if missing (rare)
sudo mkdir -p /run/docker/plugins
sudo chmod 755 /run/docker/plugins
# Check SELinux/AppArmor if socket creation fails
sudo ausearch -m avc -ts recent### Plugin Logs Location
Managed plugin logs are integrated with Docker daemon logs:
# Filter plugin logs by plugin ID
docker plugin inspect --format '{{.ID}}' PLUGIN_NAME
journalctl -u docker | grep "plugin=PLUGIN_ID"### Common Plugin Types and Alternatives
If a plugin isn't available, consider these alternatives:
| Plugin Type | Managed Alternative | Built-in Alternative |
|-------------|--------------------|--------------------|
| NFS volumes | local-persist | local driver with NFS options |
| SSH volumes | vieux/sshfs | Mount externally, bind mount |
| Cloud storage | Provider-specific plugins | Cloud CLI + local mount |
### Using Local Driver with NFS
Instead of a plugin, use the built-in local driver with NFS options:
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=192.168.1.100,rw \
--opt device=:/path/to/share \
nfs-volumeThis avoids plugin dependencies entirely.
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