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)