mirror of https://github.com/docker/cli.git
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:
parent
bbabc8172c
commit
356a7beb31
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue