12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package volume // import "github.com/docker/docker/volume"
- import (
- "context"
- "time"
- )
- // DefaultDriverName is the driver name used for the driver
- // implemented in the local package.
- const DefaultDriverName = "local"
- // Scopes define if a volume has is cluster-wide (global) or local only.
- // Scopes are returned by the volume driver when it is queried for capabilities and then set on a volume
- const (
- LocalScope = "local"
- GlobalScope = "global"
- )
- // Driver is for creating and removing volumes.
- type Driver interface {
- // Name returns the name of the volume driver.
- Name() string
- // Create makes a new volume with the given name.
- Create(name string, opts map[string]string) (Volume, error)
- // Remove deletes the volume.
- Remove(vol Volume) (err error)
- // List lists all the volumes the driver has
- List() ([]Volume, error)
- // Get retrieves the volume with the requested name
- Get(name string) (Volume, error)
- // Scope returns the scope of the driver (e.g. `global` or `local`).
- // Scope determines how the driver is handled at a cluster level
- Scope() string
- }
- // Capability defines a set of capabilities that a driver is able to handle.
- type Capability struct {
- // Scope is the scope of the driver, `global` or `local`
- // A `global` scope indicates that the driver manages volumes across the cluster
- // A `local` scope indicates that the driver only manages volumes resources local to the host
- // Scope is declared by the driver
- Scope string
- }
- // Volume is a place to store data. It is backed by a specific driver, and can be mounted.
- type Volume interface {
- // Name returns the name of the volume
- Name() string
- // DriverName returns the name of the driver which owns this volume.
- DriverName() string
- // Path returns the absolute path to the volume.
- Path() string
- // Mount mounts the volume and returns the absolute path to
- // where it can be consumed.
- Mount(id string) (string, error)
- // Unmount unmounts the volume when it is no longer in use.
- Unmount(id string) error
- // CreatedAt returns Volume Creation time
- CreatedAt() (time.Time, error)
- // Status returns low-level status information about a volume
- Status() map[string]interface{}
- }
- // LiveRestorer is an optional interface that can be implemented by a volume driver
- // It is used to restore any resources that are necessary for a volume to be used by a live-restored container
- type LiveRestorer interface {
- // LiveRestoreVolume allows a volume driver which implements this interface to restore any necessary resources (such as reference counting)
- // This is called only after the daemon is restarted with live-restored containers
- // It is called once per live-restored container.
- LiveRestoreVolume(_ context.Context, ref string) error
- }
- // DetailedVolume wraps a Volume with user-defined labels, options, and cluster scope (e.g., `local` or `global`)
- type DetailedVolume interface {
- Labels() map[string]string
- Options() map[string]string
- Scope() string
- Volume
- }
|