--- 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": "" } ```