...

Text file src/github.com/docker/cli/docs/extend/config.md

Documentation: github.com/docker/cli/docs/extend

     1---
     2description: "How to develop and use a plugin with the managed plugin system"
     3keywords: "API, Usage, plugins, documentation, developer"
     4title: Plugin Config Version 1 of Plugin V2
     5---
     6
     7This document outlines the format of the V0 plugin configuration.
     8
     9Plugin configs describe the various constituents of a Docker engine plugin.
    10Plugin configs can be serialized to JSON format with the following media types:
    11
    12| Config Type | Media Type                              |
    13|-------------|-----------------------------------------|
    14| config      | `application/vnd.docker.plugin.v1+json` |
    15
    16## Config Field Descriptions
    17
    18Config provides the base accessible fields for working with V0 plugin format in
    19the registry.
    20
    21- `description` string
    22
    23  Description of the plugin
    24
    25- `documentation` string
    26
    27  Link to the documentation about the plugin
    28
    29- `interface` PluginInterface
    30
    31  Interface implemented by the plugins, struct consisting of the following fields:
    32
    33  - `types` string array
    34
    35    Types indicate what interface(s) the plugin currently implements.
    36
    37    Supported types:
    38
    39    - `docker.volumedriver/1.0`
    40
    41    - `docker.networkdriver/1.0`
    42
    43    - `docker.ipamdriver/1.0`
    44
    45    - `docker.authz/1.0`
    46
    47    - `docker.logdriver/1.0`
    48
    49    - `docker.metricscollector/1.0`
    50
    51  - `socket` string
    52
    53    Socket is the name of the socket the engine should use to communicate with the plugins.
    54    the socket will be created in `/run/docker/plugins`.
    55
    56- `entrypoint` string array
    57
    58   Entrypoint of the plugin, see [`ENTRYPOINT`](https://docs.docker.com/reference/dockerfile/#entrypoint)
    59
    60- `workdir` string
    61
    62   Working directory of the plugin, see [`WORKDIR`](https://docs.docker.com/reference/dockerfile/#workdir)
    63
    64- `network` PluginNetwork
    65
    66  Network of the plugin, struct consisting of the following fields:
    67
    68  - `type` string
    69
    70    Network type.
    71
    72    Supported types:
    73
    74    - `bridge`
    75    - `host`
    76    - `none`
    77
    78- `mounts` PluginMount array
    79
    80  Mount of the plugin, struct consisting of the following fields.
    81  See [`MOUNTS`](https://github.com/opencontainers/runtime-spec/blob/master/config.md#mounts).
    82
    83  - `name` string
    84
    85    Name of the mount.
    86
    87  - `description` string
    88
    89    Description of the mount.
    90
    91  - `source` string
    92
    93    Source of the mount.
    94
    95  - `destination` string
    96
    97    Destination of the mount.
    98
    99  - `type` string
   100
   101    Mount type.
   102
   103  - `options` string array
   104
   105    Options of the mount.
   106
   107- `ipchost` Boolean
   108
   109   Access to host ipc namespace.
   110
   111- `pidhost` Boolean
   112
   113   Access to host PID namespace.
   114
   115- `propagatedMount` string
   116
   117   Path to be mounted as rshared, so that mounts under that path are visible to
   118   Docker. This is useful for volume plugins. This path will be bind-mounted
   119   outside of the plugin rootfs so it's contents are preserved on upgrade.
   120
   121- `env` PluginEnv array
   122
   123  Environment variables of the plugin, struct consisting of the following fields:
   124
   125  - `name` string
   126
   127    Name of the environment variable.
   128
   129  - `description` string
   130
   131    Description of the environment variable.
   132
   133  - `value` string
   134
   135    Value of the environment variable.
   136
   137- `args` PluginArgs
   138
   139  Arguments of the plugin, struct consisting of the following fields:
   140
   141  - `name` string
   142
   143    Name of the arguments.
   144
   145  - `description` string
   146
   147    Description of the arguments.
   148
   149  - `value` string array
   150
   151    Values of the arguments.
   152
   153- `linux` PluginLinux
   154
   155  - `capabilities` string array
   156
   157    Capabilities of the plugin (Linux only), see list [`here`](https://github.com/opencontainers/runc/blob/master/libcontainer/SPEC.md#security)
   158
   159  - `allowAllDevices` Boolean
   160
   161    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.
   162
   163  - `devices` PluginDevice array
   164
   165    Device of the plugin, (Linux only), struct consisting of the following fields.
   166    See [`DEVICES`](https://github.com/opencontainers/runtime-spec/blob/master/config-linux.md#devices).
   167
   168    - `name` string
   169
   170      Name of the device.
   171
   172    - `description` string
   173
   174      Description of the device.
   175
   176    - `path` string
   177
   178      Path of the device.
   179
   180## Example Config
   181
   182The following example shows the 'tiborvass/sample-volume-plugin' plugin config.
   183
   184```json
   185{
   186  "Args": {
   187    "Description": "",
   188    "Name": "",
   189    "Settable": null,
   190    "Value": null
   191  },
   192  "Description": "A sample volume plugin for Docker",
   193  "Documentation": "https://docs.docker.com/engine/extend/plugins/",
   194  "Entrypoint": [
   195    "/usr/bin/sample-volume-plugin",
   196    "/data"
   197  ],
   198  "Env": [
   199    {
   200      "Description": "",
   201      "Name": "DEBUG",
   202      "Settable": [
   203        "value"
   204      ],
   205      "Value": "0"
   206    }
   207  ],
   208  "Interface": {
   209    "Socket": "plugin.sock",
   210    "Types": [
   211      "docker.volumedriver/1.0"
   212    ]
   213  },
   214  "Linux": {
   215    "Capabilities": null,
   216    "AllowAllDevices": false,
   217    "Devices": null
   218  },
   219  "Mounts": null,
   220  "Network": {
   221    "Type": ""
   222  },
   223  "PropagatedMount": "/data",
   224  "User": {},
   225  "Workdir": ""
   226}
   227```

View as plain text