Change settings for a plugin
Change settings for a plugin. The plugin must be disabled.
The settings currently supported are:
- env variables
- source of mounts
- path of devices
- args
Look at the plugin manifest, it's easy to see what fields are settable,
by looking at the Settable field.
Here is an extract of a plugin manifest:
{
"config": {
"args": {
"name": "myargs",
"settable": ["value"],
"value": ["foo", "bar"]
},
"env": [
{
"name": "DEBUG",
"settable": ["value"],
"value": "0"
},
{
"name": "LOGGING",
"value": "1"
}
],
"devices": [
{
"name": "mydevice",
"path": "/dev/foo",
"settable": ["path"]
}
],
"mounts": [
{
"destination": "/baz",
"name": "mymount",
"options": ["rbind"],
"settable": ["source"],
"source": "/foo",
"type": "bind"
}
]
}
}In this example, we can see that the value of the DEBUG environment variable is settable,
the source of the mymount mount is also settable. Same for the path of mydevice and value of myargs.
On the contrary, the LOGGING environment variable doesn't have any settable field, which implies that user cannot tweak it.
The following example change the env variable DEBUG on the
sample-volume-plugin plugin.
$ docker plugin inspect -f {{.Settings.Env}} tiborvass/sample-volume-plugin
[DEBUG=0]
$ docker plugin set tiborvass/sample-volume-plugin DEBUG=1
$ docker plugin inspect -f {{.Settings.Env}} tiborvass/sample-volume-plugin
[DEBUG=1]The following example change the source of the mymount mount on
the myplugin plugin.
$ docker plugin inspect -f '{{with $mount := index .Settings.Mounts 0}}{{$mount.Source}}{{end}}' myplugin
/foo
$ docker plugins set myplugin mymount.source=/bar
$ docker plugin inspect -f '{{with $mount := index .Settings.Mounts 0}}{{$mount.Source}}{{end}}' myplugin
/barNote
Since only source is settable in mymount,
docker plugins set mymount=/bar myplugin would work too.
The following example change the path of the mydevice device on
the myplugin plugin.
$ docker plugin inspect -f '{{with $device := index .Settings.Devices 0}}{{$device.Path}}{{end}}' myplugin
/dev/foo
$ docker plugins set myplugin mydevice.path=/dev/bar
$ docker plugin inspect -f '{{with $device := index .Settings.Devices 0}}{{$device.Path}}{{end}}' myplugin
/dev/barNote
Since only path is settable in mydevice,
docker plugins set mydevice=/dev/bar myplugin would work too.
The following example change the value of the args on the myplugin plugin.
$ docker plugin inspect -f '{{.Settings.Args}}' myplugin
["foo", "bar"]
$ docker plugins set myplugin myargs="foo bar baz"
$ docker plugin inspect -f '{{.Settings.Args}}' myplugin
["foo", "bar", "baz"]