plugins
packageThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
Documentation¶
Overview¶
Package plugins provides structures and helper functions to manage Dockerplugins.
Docker discovers plugins by looking for them in the plugin directory whenevera user or container tries to use one by name. UNIX domain socket files mustbe located under /run/docker/plugins, whereas spec files can be locatedeither under /etc/docker/plugins or /usr/lib/docker/plugins. This is handledby the Registry interface, which lets you list all plugins or get a plugin byits name if it exists.
The plugins need to implement an HTTP server and bind this to the UNIX socketor the address specified in the spec files.A handshake is send at /Plugin.Activate, and plugins are expected to returna Manifest with a list of Docker subsystems which this plugin implements.
In order to use a plugins, you can use the `Get` with the name of theplugin 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
- Variables
- func Handle(iface string, fn func(string, *Client))
- func IsNotFound(err error) bool
- func SpecsPaths() []string
- func WithRequestTimeout(t time.Duration) func(*RequestOpts)
- type Client
- func (c *Client) Call(serviceMethod string, args, ret any) error
- func (c *Client) CallWithOptions(serviceMethod string, args any, ret any, opts ...func(*RequestOpts)) error
- func (c *Client) SendFile(serviceMethod string, data io.Reader, ret any) error
- func (c *Client) Stream(serviceMethod string, args any) (io.ReadCloser, error)
- type LocalRegistry
- type Manifest
- type Plugin
- type RequestOpts
Constants¶
const ProtocolSchemeHTTPV1 = "moby.plugins.http/v1"ProtocolSchemeHTTPV1 is the name of the protocol used for interacting with plugins using this package.
const VersionMimetype =transport.VersionMimetypeVersionMimetype is the Content-Type the engine sends to plugins.
Variables¶
var ErrNotFound =errors.New("plugin not found")ErrNotFound plugin not found
var ErrNotImplements =errors.New("Plugin does not implement the requested driver")ErrNotImplements is returned if the plugin does not implement the requested driver.
Functions¶
funcIsNotFound¶
IsNotFound indicates if the passed in error is from an http.StatusNotFound from the plugin
funcSpecsPaths¶
func SpecsPaths() []string
SpecsPaths returns paths in which to look for plugins, in order of priority.
On Windows:
- "%programdata%\docker\plugins"
On Unix in non-rootless mode:
- "/etc/docker/plugins"
- "/usr/lib/docker/plugins"
On Unix in rootless-mode:
- "$XDG_CONFIG_HOME/docker/plugins" (or "/etc/docker/plugins" if $XDG_CONFIG_HOME is not set)
- "$HOME/.local/lib/docker/plugins" (pr "/usr/lib/docker/plugins" if $HOME is set)
funcWithRequestTimeout¶
func WithRequestTimeout(ttime.Duration) func(*RequestOpts)
WithRequestTimeout sets a timeout duration for plugin requests
Types¶
typeClient¶
type Client struct {// contains filtered or unexported fields}Client represents a plugin client.
funcNewClientWithTimeout¶
func NewClientWithTimeout(addrstring, tlsConfig *tlsconfig.Options, timeouttime.Duration) (*Client,error)
NewClientWithTimeout creates a new plugin client (http).
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.
func (*Client)CallWithOptions¶
func (c *Client) CallWithOptions(serviceMethodstring, argsany, retany, opts ...func(*RequestOpts))error
CallWithOptions is just like call except it takes options
typeLocalRegistry¶
type LocalRegistry struct {// contains filtered or unexported fields}LocalRegistry defines a registry that is local (using unix socket).
funcNewLocalRegistry¶
func NewLocalRegistry()LocalRegistry
func (*LocalRegistry)GetAll¶
func (l *LocalRegistry) GetAll(impstring) ([]*Plugin,error)
GetAll returns all the plugins for the specified implementation
func (*LocalRegistry)Plugin¶
func (l *LocalRegistry) Plugin(namestring) (*Plugin,error)
Plugin returns the plugin registered with the given name (or returns an error).
func (*LocalRegistry)Scan¶
func (l *LocalRegistry) Scan() ([]string,error)
Scan scans all the plugin paths and returns all the names it found
typeManifest¶
type Manifest struct {// List of subsystem the plugin implements.Implements []string}Manifest lists what a plugin implements.
typePlugin¶
type Plugin struct {// Address of the pluginAddrstring// TLS configuration of the pluginTLSConfig *tlsconfig.Options// Manifest of the plugin (see above)Manifest *Manifest `json:"-"`// contains filtered or unexported fields}Plugin is the definition of a docker plugin.
funcNewLocalPlugin¶
NewLocalPlugin creates a new local plugin.
func (*Plugin)Client¶
Client returns a ready-to-use plugin client that can be used to communicate with the plugin.
func (*Plugin)ScopedPath¶
ScopedPath returns the path scoped to the plugin's rootfs.For v1 plugins, this always returns the path unchanged as v1 plugins run directly on the host.
typeRequestOpts¶
RequestOpts is the set of options that can be passed into a request