| --- |
| description: "How to develop and use a plugin with the managed plugin system" |
| keywords: "API, Usage, plugins, documentation, developer" |
| title: Plugin Config Version 1 of Plugin V2 |
| --- |
| |
| This document outlines the format of the V0 plugin configuration. |
| |
| Plugin configs describe the various constituents of a Docker engine 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 Field Descriptions |
| |
| 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. |
| |
| Supported types: |
| |
| - `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 array |
| |
| Entrypoint of the plugin, see [`ENTRYPOINT`](https://docs.docker.com/reference/dockerfile/#entrypoint) |
| |
| - `workdir` string |
| |
| Working directory of the plugin, see [`WORKDIR`](https://docs.docker.com/reference/dockerfile/#workdir) |
| |
| - `network` PluginNetwork |
| |
| Network of the plugin, struct consisting of the following fields: |
| |
| - `type` string |
| |
| Network type. |
| |
| Supported types: |
| |
| - `bridge` |
| - `host` |
| - `none` |
| |
| - `mounts` PluginMount array |
| |
| Mount of the plugin, struct consisting of the following fields. |
| See [`MOUNTS`](https://github.com/opencontainers/runtime-spec/blob/master/config.md#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 |
| outside of the plugin rootfs so it's contents are preserved on upgrade. |
| |
| - `env` PluginEnv array |
| |
| Environment variables of the plugin, struct consisting of the following fields: |
| |
| - `name` string |
| |
| Name of the environment variable. |
| |
| - `description` string |
| |
| Description of the environment variable. |
| |
| - `value` string |
| |
| Value of the environment variable. |
| |
| - `args` PluginArgs |
| |
| Arguments of the plugin, struct consisting of the following fields: |
| |
| - `name` string |
| |
| Name of the arguments. |
| |
| - `description` string |
| |
| Description of the arguments. |
| |
| - `value` string array |
| |
| Values of the arguments. |
| |
| - `linux` PluginLinux |
| |
| - `capabilities` string array |
| |
| Capabilities of the plugin (Linux only), see list [`here`](https://github.com/opencontainers/runc/blob/master/libcontainer/SPEC.md#security) |
| |
| - `allowAllDevices` Boolean |
| |
| If `/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 array |
| |
| Device of the plugin, (Linux only), struct consisting of the following fields. |
| See [`DEVICES`](https://github.com/opencontainers/runtime-spec/blob/master/config-linux.md#devices). |
| |
| - `name` string |
| |
| Name of the device. |
| |
| - `description` string |
| |
| Description of the device. |
| |
| - `path` string |
| |
| Path of the device. |
| |
| ## Example Config |
| |
| The following example shows the 'tiborvass/sample-volume-plugin' plugin config. |
| |
| ```json |
| { |
| "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": "" |
| } |
| ``` |