title: "Plugin config" description: "How develop and use a plugin with the managed plugin system"
This document outlines the format of the V0 plugin configuration. The plugin config described herein was introduced in the Docker daemon in the v1.12.0 release.
Plugin configs describe the various constituents of a docker plugin. Plugin configs can be serialized to JSON format with the following media types:
Config Type | Media Type |
---|---|
config | "application/vnd.docker.plugin.v1+json" |
Config provides the base accessible fields for working with V0 plugin format in the registry.
description
string
description of the plugin
documentation
string
link to the documentation about the plugin
interface
PluginInterface
interface implemented by the plugins, struct consisting of the following fields
- **`types`** *string array*
types indicate what interface(s) the plugin currently implements.
currently supported:
- **docker.volumedriver/1.0**
- **docker.networkdriver/1.0**
- **docker.ipamdriver/1.0**
- **docker.authz/1.0**
- **docker.logdriver/1.0**
- **docker.metricscollector/1.0**
- **`socket`** *string*
socket is the name of the socket the engine should use to communicate with the plugins.
the socket will be created in `/run/docker/plugins`.
entrypoint
string arrayentrypoint of the plugin, see ENTRYPOINT
workdir
stringworkdir of the plugin, see WORKDIR
network
PluginNetworknetwork of the plugin, struct consisting of the following fields
- **`type`** *string*
network type.
currently supported:
- **bridge**
- **host**
- **none**
mounts
PluginMount arraymount of the plugin, struct consisting of the following fields, see MOUNTS
- **`name`** *string*
name of the mount.
- **`description`** *string*
description of the mount.
- **`source`** *string*
source of the mount.
- **`destination`** *string*
destination of the mount.
- **`type`** *string*
mount type.
- **`options`** *string array*
options of the mount.
ipchost
boolean
Access to host ipc namespace.pidhost
boolean
Access to host pid namespace.
propagatedMount
string
path to be mounted as rshared, so that mounts under that path are visible to docker. This is useful for volume plugins. This path will be bind-mounted outisde of the plugin rootfs so it's contents are preserved on upgrade.
env
PluginEnv arrayenv of the plugin, struct consisting of the following fields
- **`name`** *string*
name of the env.
- **`description`** *string*
description of the env.
- **`value`** *string*
value of the env.
args
PluginArgsargs of the plugin, struct consisting of the following fields
- **`name`** *string*
name of the args.
- **`description`** *string*
description of the args.
- **`value`** *string array*
values of the args.
linux
PluginLinux
capabilities
string arraycapabilities of the plugin (Linux only), see list here
allowAllDevices
booleanIf /dev
is bind mounted from the host, and allowAllDevices is set to true, the plugin will have rwm
access to all devices on the host.
devices
PluginDevice arraydevice of the plugin, (Linux only), struct consisting of the following fields, see DEVICES
- **`name`** *string*
name of the device.
- **`description`** *string*
description of the device.
- **`path`** *string*
path of the device.
Example showing the 'tiborvass/sample-volume-plugin' plugin config.
{
"Args": {
"Description": "",
"Name": "",
"Settable": null,
"Value": null
},
"Description": "A sample volume plugin for Docker",
"Documentation": "https://docs.docker.com/engine/extend/plugins/",
"Entrypoint": [
"/usr/bin/sample-volume-plugin",
"/data"
],
"Env": [
{
"Description": "",
"Name": "DEBUG",
"Settable": [
"value"
],
"Value": "0"
}
],
"Interface": {
"Socket": "plugin.sock",
"Types": [
"docker.volumedriver/1.0"
]
},
"Linux": {
"Capabilities": null,
"AllowAllDevices": false,
"Devices": null
},
"Mounts": null,
"Network": {
"Type": ""
},
"PropagatedMount": "/data",
"User": {},
"Workdir": ""
}