123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package 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"
- )
- // 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"`
- BindOptions *BindOptions `json:",omitempty"`
- VolumeOptions *VolumeOptions `json:",omitempty"`
- TmpfsOptions *TmpfsOptions `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"
- )
- // BindOptions defines options specific to mounts of type "bind".
- type BindOptions struct {
- Propagation Propagation `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 convered 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 docker/docker/pkg/mount/flags.go:
- //
- // 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.
- }
|