123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package mount // import "github.com/docker/docker/api/types/mount"
- import (
- "os"
- )
- // Type represents the type of a mount.
- type Type string
- // Type constants
- const (
- // TypeBind is the type for mounting host dir
- TypeBind Type = "bind"
- // TypeVolume is the type for remote storage volumes
- TypeVolume Type = "volume"
- // TypeTmpfs is the type for mounting tmpfs
- TypeTmpfs Type = "tmpfs"
- // TypeNamedPipe is the type for mounting Windows named pipes
- TypeNamedPipe Type = "npipe"
- // TypeCluster is the type for Swarm Cluster Volumes.
- TypeCluster Type = "cluster"
- )
- // Mount represents a mount (volume).
- type Mount struct {
- Type Type `json:",omitempty"`
- // Source specifies the name of the mount. Depending on mount type, this
- // may be a volume name or a host path, or even ignored.
- // Source is not supported for tmpfs (must be an empty value)
- Source string `json:",omitempty"`
- Target string `json:",omitempty"`
- ReadOnly bool `json:",omitempty"` // attempts recursive read-only if possible
- Consistency Consistency `json:",omitempty"`
- BindOptions *BindOptions `json:",omitempty"`
- VolumeOptions *VolumeOptions `json:",omitempty"`
- TmpfsOptions *TmpfsOptions `json:",omitempty"`
- ClusterOptions *ClusterOptions `json:",omitempty"`
- }
- // Propagation represents the propagation of a mount.
- type Propagation string
- const (
- // PropagationRPrivate RPRIVATE
- PropagationRPrivate Propagation = "rprivate"
- // PropagationPrivate PRIVATE
- PropagationPrivate Propagation = "private"
- // PropagationRShared RSHARED
- PropagationRShared Propagation = "rshared"
- // PropagationShared SHARED
- PropagationShared Propagation = "shared"
- // PropagationRSlave RSLAVE
- PropagationRSlave Propagation = "rslave"
- // PropagationSlave SLAVE
- PropagationSlave Propagation = "slave"
- )
- // Propagations is the list of all valid mount propagations
- var Propagations = []Propagation{
- PropagationRPrivate,
- PropagationPrivate,
- PropagationRShared,
- PropagationShared,
- PropagationRSlave,
- PropagationSlave,
- }
- // Consistency represents the consistency requirements of a mount.
- type Consistency string
- const (
- // ConsistencyFull guarantees bind mount-like consistency
- ConsistencyFull Consistency = "consistent"
- // ConsistencyCached mounts can cache read data and FS structure
- ConsistencyCached Consistency = "cached"
- // ConsistencyDelegated mounts can cache read and written data and structure
- ConsistencyDelegated Consistency = "delegated"
- // ConsistencyDefault provides "consistent" behavior unless overridden
- ConsistencyDefault Consistency = "default"
- )
- // BindOptions defines options specific to mounts of type "bind".
- type BindOptions struct {
- Propagation Propagation `json:",omitempty"`
- NonRecursive bool `json:",omitempty"`
- CreateMountpoint bool `json:",omitempty"`
- // ReadOnlyNonRecursive makes the mount non-recursively read-only, but still leaves the mount recursive
- // (unless NonRecursive is set to true in conjunction).
- ReadOnlyNonRecursive bool `json:",omitempty"`
- // ReadOnlyForceRecursive raises an error if the mount cannot be made recursively read-only.
- ReadOnlyForceRecursive bool `json:",omitempty"`
- }
- // VolumeOptions represents the options for a mount of type volume.
- type VolumeOptions struct {
- NoCopy bool `json:",omitempty"`
- Labels map[string]string `json:",omitempty"`
- DriverConfig *Driver `json:",omitempty"`
- }
- // Driver represents a volume driver.
- type Driver struct {
- Name string `json:",omitempty"`
- Options map[string]string `json:",omitempty"`
- }
- // TmpfsOptions defines options specific to mounts of type "tmpfs".
- type TmpfsOptions struct {
- // Size sets the size of the tmpfs, in bytes.
- //
- // This will be converted to an operating system specific value
- // depending on the host. For example, on linux, it will be converted to
- // use a 'k', 'm' or 'g' syntax. BSD, though not widely supported with
- // docker, uses a straight byte value.
- //
- // Percentages are not supported.
- SizeBytes int64 `json:",omitempty"`
- // Mode of the tmpfs upon creation
- Mode os.FileMode `json:",omitempty"`
- // TODO(stevvooe): There are several more tmpfs flags, specified in the
- // daemon, that are accepted. Only the most basic are added for now.
- //
- // From https://github.com/moby/sys/blob/mount/v0.1.1/mount/flags.go#L47-L56
- //
- // var validFlags = map[string]bool{
- // "": true,
- // "size": true, X
- // "mode": true, X
- // "uid": true,
- // "gid": true,
- // "nr_inodes": true,
- // "nr_blocks": true,
- // "mpol": true,
- // }
- //
- // Some of these may be straightforward to add, but others, such as
- // uid/gid have implications in a clustered system.
- }
- // ClusterOptions specifies options for a Cluster volume.
- type ClusterOptions struct {
- // intentionally empty
- }
|