Skip to content
Fresh

Plugin Config Version 1 of Plugin V2

Back

Manuals

Plugin Config Version 1 of Plugin V2

Copy as Markdown

Open MarkdownAsk Docs AIClaudeOpen in Claude

Table of contents


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 TypeMedia Type
configapplication/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

  • workdir string

Working directory of the plugin, see 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.

  • 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

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

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