github.com/thajeztah/cli@v0.0.0-20240223162942-dc6bfac81a8b/docs/reference/commandline/plugin_set.md (about) 1 # plugin set 2 3 <!---MARKER_GEN_START--> 4 Change settings for a plugin 5 6 7 <!---MARKER_GEN_END--> 8 9 ## Description 10 11 Change settings for a plugin. The plugin must be disabled. 12 13 The settings currently supported are: 14 * env variables 15 * source of mounts 16 * path of devices 17 * args 18 19 ## What is settable ? 20 21 Look at the plugin manifest, it's easy to see what fields are settable, 22 by looking at the `Settable` field. 23 24 Here is an extract of a plugin manifest: 25 26 ```json 27 { 28 "config": { 29 "args": { 30 "name": "myargs", 31 "settable": ["value"], 32 "value": ["foo", "bar"] 33 }, 34 "env": [ 35 { 36 "name": "DEBUG", 37 "settable": ["value"], 38 "value": "0" 39 }, 40 { 41 "name": "LOGGING", 42 "value": "1" 43 } 44 ], 45 "devices": [ 46 { 47 "name": "mydevice", 48 "path": "/dev/foo", 49 "settable": ["path"] 50 } 51 ], 52 "mounts": [ 53 { 54 "destination": "/baz", 55 "name": "mymount", 56 "options": ["rbind"], 57 "settable": ["source"], 58 "source": "/foo", 59 "type": "bind" 60 } 61 ] 62 } 63 } 64 ``` 65 66 In this example, we can see that the `value` of the `DEBUG` environment variable is settable, 67 the `source` of the `mymount` mount is also settable. Same for the `path` of `mydevice` and `value` of `myargs`. 68 69 On the contrary, the `LOGGING` environment variable doesn't have any settable field, which implies that user cannot tweak it. 70 71 ## Examples 72 73 ### Change an environment variable 74 75 The following example change the env variable `DEBUG` on the 76 `sample-volume-plugin` plugin. 77 78 ```console 79 $ docker plugin inspect -f {{.Settings.Env}} tiborvass/sample-volume-plugin 80 [DEBUG=0] 81 82 $ docker plugin set tiborvass/sample-volume-plugin DEBUG=1 83 84 $ docker plugin inspect -f {{.Settings.Env}} tiborvass/sample-volume-plugin 85 [DEBUG=1] 86 ``` 87 88 ### Change the source of a mount 89 90 The following example change the source of the `mymount` mount on 91 the `myplugin` plugin. 92 93 ```console 94 $ docker plugin inspect -f '{{with $mount := index .Settings.Mounts 0}}{{$mount.Source}}{{end}}' myplugin 95 /foo 96 97 $ docker plugins set myplugin mymount.source=/bar 98 99 $ docker plugin inspect -f '{{with $mount := index .Settings.Mounts 0}}{{$mount.Source}}{{end}}' myplugin 100 /bar 101 ``` 102 103 > **Note** 104 > 105 > Since only `source` is settable in `mymount`, 106 > `docker plugins set mymount=/bar myplugin` would work too. 107 108 ### Change a device path 109 110 The following example change the path of the `mydevice` device on 111 the `myplugin` plugin. 112 113 ```console 114 $ docker plugin inspect -f '{{with $device := index .Settings.Devices 0}}{{$device.Path}}{{end}}' myplugin 115 116 /dev/foo 117 118 $ docker plugins set myplugin mydevice.path=/dev/bar 119 120 $ docker plugin inspect -f '{{with $device := index .Settings.Devices 0}}{{$device.Path}}{{end}}' myplugin 121 122 /dev/bar 123 ``` 124 125 > **Note** 126 > 127 > Since only `path` is settable in `mydevice`, 128 > `docker plugins set mydevice=/dev/bar myplugin` would work too. 129 130 ### Change the source of the arguments 131 132 The following example change the value of the args on the `myplugin` plugin. 133 134 ```console 135 $ docker plugin inspect -f '{{.Settings.Args}}' myplugin 136 137 ["foo", "bar"] 138 139 $ docker plugins set myplugin myargs="foo bar baz" 140 141 $ docker plugin inspect -f '{{.Settings.Args}}' myplugin 142 143 ["foo", "bar", "baz"] 144 ``` 145 146 ## Related commands 147 148 * [plugin create](plugin_create.md) 149 * [plugin disable](plugin_disable.md) 150 * [plugin enable](plugin_enable.md) 151 * [plugin inspect](plugin_inspect.md) 152 * [plugin install](plugin_install.md) 153 * [plugin ls](plugin_ls.md) 154 * [plugin push](plugin_push.md) 155 * [plugin rm](plugin_rm.md) 156 * [plugin upgrade](plugin_upgrade.md)