Promote volume drivers from experimental to master.

Remove volume stubs and use the experimental path as the only path.

Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
David Calavera 2015-07-15 11:25:56 -07:00 committed by Tibor Vass
parent bbabc8172c
commit 356a7beb31
5 changed files with 79 additions and 51 deletions

22
docs/extend/index.md Normal file
View File

@ -0,0 +1,22 @@
<!--[metadata]>
+++
title = "Extend Docker"
description = "How to extend Docker with plugins"
keywords = ["extend, plugins, docker, documentation, developer"]
[menu.main]
identifier = "mn_extend"
name = "Extend Docker"
weight = 6
+++
<![end-metadata]-->
## Extending Docker
Currently, you can extend Docker by adding a plugin. This section contains the following topics:
* [Understand Docker plugins](plugins.md)
* [Write a volume plugin](plugins_volumes.md)
* [Docker plugin API](plugin_api.md)

View File

@ -1,13 +1,22 @@
# Experimental: Docker Plugin API <!--[metadata]>
+++
title = "Plugins API"
description = "How to write Docker plugins extensions "
keywords = ["API, Usage, plugins, documentation, developer"]
[menu.main]
parent = "mn_extend"
weight=1
+++
<![end-metadata]-->
# Docker Plugin API
Docker plugins are out-of-process extensions which add capabilities to the Docker plugins are out-of-process extensions which add capabilities to the
Docker Engine. Docker Engine.
This page is intended for people who want to develop their own Docker plugin. This page is intended for people who want to develop their own Docker plugin.
If you just want to learn about or use Docker plugins, look If you just want to learn about or use Docker plugins, look
[here](/experimental/plugins.md). [here](plugins.md).
This is an experimental feature. For information on installing and using experimental features, see [the experimental feature overview](README.md).
## What plugins are ## What plugins are
@ -77,10 +86,6 @@ manage startup and shutdown order.
When upgrading a plugin, you should first stop the Docker daemon, upgrade the When upgrading a plugin, you should first stop the Docker daemon, upgrade the
plugin, then start Docker again. plugin, then start Docker again.
If a plugin is packaged as a container, this may cause issues. Plugins as
containers are currently considered experimental due to these shutdown/startup
ordering issues. These issues are mitigated by plugin retries (see below).
## Plugin activation ## Plugin activation
When a plugin is first referred to -- either by a user referring to it by name When a plugin is first referred to -- either by a user referring to it by name

View File

@ -1,14 +1,23 @@
# Experimental: Extend Docker with a plugin <!--[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
You can extend the capabilities of the Docker Engine by loading third-party You can extend the capabilities of the Docker Engine by loading third-party
plugins. plugins.
This is an experimental feature. For information on installing and using experimental features, see [the experimental feature overview](README.md).
## Types of plugins ## Types of plugins
Plugins extend Docker's functionality. They come in specific types. For Plugins extend Docker's functionality. They come in specific types. For
example, a [volume plugin](/experimental/plugins_volume.md) might enable Docker example, a [volume plugin](plugins_volume.md) might enable Docker
volumes to persist across multiple Docker hosts. volumes to persist across multiple Docker hosts.
Currently Docker supports volume and network driver plugins. In the future it Currently Docker supports volume and network driver plugins. In the future it
@ -27,12 +36,13 @@ The following plugins exist:
databases and other stateful containers and move them around across a cluster databases and other stateful containers and move them around across a cluster
of machines. of machines.
* The [Weave plugin](https://github.com/weaveworks/docker-plugin) is a network * The [GlusterFS plugin](https://github.com/calavera/docker-volume-glusterfs) is
driver plugin which provides a virtual, multi-host network for containers. another volume plugin that provides multi-host volumes management for Docker
using GlusterFS.
* The [Calico plugin](https://github.com/metaswitch/calico-docker) is a network * The [Keywhiz plugin](https://github.com/calavera/docker-volume-keywhiz) is
driver plugin which provides a multi-host network for containers with routes a plugin that provides credentials and secret management using Keywhiz as
distributed by BGP. a central repository.
## Troubleshooting a plugin ## Troubleshooting a plugin
@ -42,11 +52,4 @@ of the plugin for help. The Docker team may not be able to assist you.
## Writing a plugin ## Writing a plugin
If you are interested in writing a plugin for Docker, or seeing how they work If you are interested in writing a plugin for Docker, or seeing how they work
under the hood, see the [docker plugins reference](/experimental/plugin_api.md). under the hood, see the [docker plugins reference](plugin_api.md).
# Related GitHub PRs and issues
- [#13222](https://github.com/docker/docker/pull/13222) Plugins plumbing
Send us feedback and comments on [#13419](https://github.com/docker/docker/issues/13419),
or on the usual Google Groups (docker-user, docker-dev) and IRC channels.

View File

@ -1,34 +1,38 @@
# Experimental: Docker volume plugins <!--[metadata]>
+++
title = "Volume plugins"
description = "How to manage data with external volume plugins"
keywords = ["Examples, Usage, volume, docker, data, volumes, plugin, api"]
[menu.main]
parent = "mn_extend"
+++
<![end-metadata]-->
# Write a volume plugin
Docker volume plugins enable Docker deployments to be integrated with external Docker volume plugins enable Docker deployments to be integrated with external
storage systems, such as Amazon EBS, and enable data volumes to persist beyond storage systems, such as Amazon EBS, and enable data volumes to persist beyond
the lifetime of a single Docker host. See the [plugin documentation](/experimental/plugins.md) the lifetime of a single Docker host. See the [plugin documentation](plugins.md)
for more information. for more information.
This is an experimental feature. For information on installing and using experimental features, see [the experimental feature overview](README.md).
# Command-line changes # Command-line changes
This experimental feature introduces two changes to the `docker run` command: A volume plugin makes use of the `-v`and `--volume-driver` flag on the `docker run` command. The `-v` flag accepts a volume name and the `--volume-driver` flag a driver type, for example:
- The `--volume-driver` flag is introduced. $ docker run -ti -v volumename:/data --volume-driver=flocker busybox sh
- The `-v` syntax is changed to accept a volume name a first component.
Example: This command passes the `volumename` through to the volume plugin as a
user-given name for the volume. The `volumename` must not begin with a `/`.
$ docker run -ti -v volumename:/data --volume-driver=flocker busybox sh By having the user specify a `volumename`, a plugin can associate the volume
with an external volume beyond the lifetime of a single container or container
host. This can be used, for example, to move a stateful container from one
server to another.
By specifying a volume name in conjunction with a volume driver, volume plugins By specifying a `volumedriver` in conjunction with a `volumename`, users can use plugins such as [Flocker](https://clusterhq.com/docker-plugin/) to manage volumes external to a single host, such as those on EBS.
such as [Flocker](https://clusterhq.com/docker-plugin/), once installed, can be
used to manage volumes external to a single host, such as those on EBS. In this
example, "volumename" is passed through to the volume plugin as a user-given
name for the volume which allows the plugin to associate it with an external
volume beyond the lifetime of a single container or container host. This can be
used, for example, to move a stateful container from one server to another.
The `volumename` must not begin with a `/`.
# API changes # Create a VolumeDriver
The container creation endpoint (`/containers/create`) accepts a `VolumeDriver` The container creation endpoint (`/containers/create`) accepts a `VolumeDriver`
field of type `string` allowing to specify the name of the driver. It's default field of type `string` allowing to specify the name of the driver. It's default
@ -152,9 +156,3 @@ this point.
Respond with a string error if an error occurred. Respond with a string error if an error occurred.
# Related GitHub PRs and issues
- [#13161](https://github.com/docker/docker/pull/13161) Volume refactor and external volume plugins
Send us feedback and comments on [#13420](https://github.com/docker/docker/issues/13420),
or on the usual Google Groups (docker-user, docker-dev) and IRC channels.

View File

@ -18,7 +18,7 @@ commands. For example,
docker network create -d weave mynet docker network create -d weave mynet
Some network driver plugins are listed in [plugins.md](plugins.md) Some network driver plugins are listed in [plugins.md](/docs/extend/plugins.md)
The network thus created is owned by the plugin, so subsequent commands The network thus created is owned by the plugin, so subsequent commands
referring to that network will also be run through the plugin. referring to that network will also be run through the plugin.