manifest.md 5.2 KB


aliases: [ "/engine/extend/" ] title: "Plugin manifest" description: "How develop and use a plugin with the managed plugin system" keywords: "API, Usage, plugins, documentation, developer"

advisory: "experimental"

Plugin Manifest Version 0 of Plugin V2

This document outlines the format of the V0 plugin manifest. The plugin manifest described herein was introduced in the Docker daemon (experimental version) in the v1.12.0 release.

Plugin manifests describe the various constituents of a docker plugin. Plugin manifests can be serialized to JSON format with the following media types:

Manifest Type Media Type
manifest "application/vnd.docker.plugin.v0+json"

Manifest Field Descriptions

Manifest provides the base accessible fields for working with V0 plugin format in the registry.

  • manifestVersion string

    version of the plugin manifest (This version uses V0)

  • 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**

- **`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

  • workdir string

workdir of the plugin, see WORKDIR

  • network PluginNetwork

network of the plugin, struct consisting of the following fields

- **`type`** *string*

  network type.

  currently supported:

    - **bridge**
    - **host**
    - **none**
  • capabilities array

capabilities of the plugin (Linux only), see list here

  • mounts PluginMount array

mount 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.
  • devices PluginDevice array

    device 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.

  • env PluginEnv array

env 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 PluginArgs

args of the plugin, struct consisting of the following fields

- **`name`** *string*

  name of the env.

- **`description`** *string*

  description of the env.

- **`value`** *string array*

  values of the args.

Example Manifest

Example showing the 'tiborvass/no-remove' plugin manifest.

{
       	"manifestVersion": "v0",
       	"description": "A test plugin for Docker",
       	"documentation": "https://docs.docker.com/engine/extend/plugins/",
       	"entrypoint": ["plugin-no-remove", "/data"],
       	"interface" : {
       		"types": ["docker.volumedriver/1.0"],
       		"socket": "plugins.sock"
       	},
       	"network": {
       		"type": "host"
       	},

       	"mounts": [
       		{
       			"source": "/data",
       			"destination": "/data",
       			"type": "bind",
       			"options": ["shared", "rbind"]
       		},
       		{
       			"destination": "/foobar",
       			"type": "tmpfs"
       		}
       	],

       	"args": {
       		"name": "args",
       		"description": "command line arguments",
       		"value": []
       	},

       	"env": [
       		{
       			"name": "DEBUG",
       			"description": "If set, prints debug messages",
       			"value": "1"
       		}
       	],

       	"devices": [
       		{
       			"name": "device",
       			"description": "a host device to mount",
       			"path": "/dev/cpu_dma_latency"
       		}
       	]
}