2015-07-15 14:25:56 -04:00
<!-- [metadata]>
+++
title = "Extending Docker with plugins"
description = "How to add additional functionality to Docker with plugins extensions"
keywords = ["Examples, Usage, plugins, docker, documentation, user guide"]
[menu.main]
parent = "mn_extend"
weight=-1
+++
<![end-metadata]-->
# Understand Docker plugins
2015-05-22 19:47:28 -04:00
You can extend the capabilities of the Docker Engine by loading third-party
2015-11-11 15:49:54 -05:00
plugins. This page explains the types of plugins and provides links to several
volume and network plugins for Docker.
2015-05-22 19:47:28 -04:00
## Types of plugins
Plugins extend Docker's functionality. They come in specific types. For
2015-10-09 19:50:41 -04:00
example, a [volume plugin ](plugins_volume.md ) might enable Docker
2015-09-30 16:11:36 -04:00
volumes to persist across multiple Docker hosts and a
[network plugin ](plugins_network.md ) might provide network plumbing.
2015-05-22 19:47:28 -04:00
2015-06-17 11:06:39 -04:00
Currently Docker supports volume and network driver plugins. In the future it
will support additional plugin types.
2015-05-22 19:47:28 -04:00
## Installing a plugin
Follow the instructions in the plugin's documentation.
## Finding a plugin
The following plugins exist:
2015-08-02 12:16:07 -04:00
* The [Blockbridge plugin ](https://github.com/blockbridge/blockbridge-docker-volume )
is a volume plugin that provides access to an extensible set of
container-based persistent storage options. It supports single and multi-host Docker
environments with features that include tenant isolation, automated
provisioning, encryption, secure deletion, snapshots and QoS.
2015-08-25 14:57:17 -04:00
* The [Convoy plugin ](https://github.com/rancher/convoy ) is a volume plugin for a
variety of storage back-ends including device mapper and NFS. It's a simple standalone
executable written in Go and provides the framework to support vendor-specific extensions
such as snapshots, backups and restore.
2015-05-22 19:47:28 -04:00
* The [Flocker plugin ](https://clusterhq.com/docker-plugin/ ) is a volume plugin
2015-06-17 11:06:39 -04:00
which provides multi-host portable volumes for Docker, enabling you to run
2015-05-22 19:47:28 -04:00
databases and other stateful containers and move them around across a cluster
of machines.
2015-07-15 14:25:56 -04:00
* The [GlusterFS plugin ](https://github.com/calavera/docker-volume-glusterfs ) is
another volume plugin that provides multi-host volumes management for Docker
using GlusterFS.
2015-06-17 11:06:39 -04:00
2015-07-15 14:25:56 -04:00
* The [Keywhiz plugin ](https://github.com/calavera/docker-volume-keywhiz ) is
a plugin that provides credentials and secret management using Keywhiz as
a central repository.
2015-10-21 21:42:17 -04:00
2015-10-21 21:07:55 -04:00
* The [Netshare plugin ](https://github.com/gondor/docker-volume-netshare ) is a volume plugin
2015-10-21 21:42:17 -04:00
that provides volume management for NFS 3/4, AWS EFS and CIFS file systems.
2015-06-17 11:06:39 -04:00
2015-11-06 00:16:26 -05:00
* The [OpenStorage Plugin ](https://github.com/libopenstorage/openstorage ) is a cluster aware volume plugin that provides volume management for file and block storage solutions. It implements a vendor neutral specification for implementing extensions such as CoS, encryption, and snapshots. It has example drivers based on FUSE, NFS, NBD and EBS to name a few.
2015-11-03 01:23:13 -05:00
2015-09-03 17:32:35 -04:00
* The [Pachyderm PFS plugin ](https://github.com/pachyderm/pachyderm/tree/master/src/cmd/pfs-volume-driver )
is a volume plugin written in Go that provides functionality to mount Pachyderm File System (PFS)
repositories at specific commits as volumes within Docker containers.
2015-09-06 18:34:45 -04:00
* The [REX-Ray plugin ](https://github.com/emccode/rexraycli ) is a volume plugin
which is written in Go and provides advanced storage functionality for many
2015-12-15 11:04:53 -05:00
platforms including EC2, Google Compute Engine, OpenStack, XtremIO, and ScaleIO.
2015-09-06 18:34:45 -04:00
2015-11-11 15:49:54 -05:00
* The [Contiv Volume Plugin ](https://github.com/contiv/volplugin ) is an open
source volume plugin that provides multi-tenant, persistent, distributed storage
with intent based consumption using ceph underneath.
* The [Contiv Networking ](https://github.com/contiv/netplugin ) is an open source
libnetwork plugin to provide infrastructure and security policies for a
multi-tenant micro services deployment, while providing an integration to
physical network for non-container workload. Contiv Networking implements the
remote driver and IPAM APIs available in Docker 1.9 onwards.
2015-11-13 05:06:04 -05:00
* The [Weave Network Plugin ](https://github.com/weaveworks/docker-plugin ) creates a virtual network that connects your Docker containers - across multiple hosts or clouds and enables automatic discovery of applications. Weave networks are resilient, partition tolerant, secure and work in partially connected networks, and other adverse environments - all configured with delightful simplicity.
2015-05-22 19:47:28 -04:00
## Troubleshooting a plugin
If you are having problems with Docker after loading a plugin, ask the authors
of the plugin for help. The Docker team may not be able to assist you.
## Writing a plugin
If you are interested in writing a plugin for Docker, or seeing how they work
2015-10-09 19:50:41 -04:00
under the hood, see the [docker plugins reference ](plugin_api.md ).