Documentation ¶
Overview ¶
Package plugins provides structures and helper functions to manage Docker plugins.
Docker discovers plugins by looking for them in the plugin directory whenever a user or container tries to use one by name. UNIX domain socket files must be located under /run/docker/plugins, whereas spec files can be located either under /etc/docker/plugins or /usr/lib/docker/plugins. This is handled by the Registry interface, which lets you list all plugins or get a plugin by its name if it exists.
The plugins need to implement an HTTP server and bind this to the UNIX socket or the address specified in the spec files. A handshake is send at /Plugin.Activate, and plugins are expected to return a Manifest with a list of of Docker subsystems which this plugin implements.
In order to use a plugins, you can use the “Get“ with the name of the plugin and the subsystem it implements.
plugin, err := plugins.Get("example", "VolumeDriver") if err != nil { return fmt.Errorf("Error looking up volume plugin example: %v", err) }
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNotFound plugin not found ErrNotFound = errors.New("plugin not found") )
var ( // ErrNotImplements is returned if the plugin does not implement the requested driver. ErrNotImplements = errors.New("Plugin does not implement the requested driver") )
Functions ¶
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client represents a plugin client.
func (*Client) Call ¶
Call calls the specified method with the specified arguments for the plugin. It will retry for 30 seconds if a failure occurs when calling.
type Manifest ¶
type Manifest struct { // List of subsystem the plugin implements. Implements []string }
Manifest lists what a plugin implements.
type Plugin ¶
type Plugin struct { // Name of the plugin Name string `json:"-"` // Address of the plugin Addr string // TLS configuration of the plugin TLSConfig tlsconfig.Options // Client attached to the plugin Client *Client `json:"-"` // Manifest of the plugin (see above) Manifest *Manifest `json:"-"` // contains filtered or unexported fields }
Plugin is the definition of a docker plugin.