package mounts // import "github.com/docker/docker/volume/mounts" import ( "errors" "runtime" "github.com/docker/docker/api/types/mount" ) // ErrVolumeTargetIsRoot is returned when the target destination is root. // It's used by both LCOW and Linux parsers. var ErrVolumeTargetIsRoot = errors.New("invalid specification: destination can't be '/'") // read-write modes var rwModes = map[string]bool{ "rw": true, "ro": true, } // Parser represents a platform specific parser for mount expressions type Parser interface { ParseMountRaw(raw, volumeDriver string) (*MountPoint, error) ParseMountSpec(cfg mount.Mount) (*MountPoint, error) ParseVolumesFrom(spec string) (string, string, error) DefaultPropagationMode() mount.Propagation ConvertTmpfsOptions(opt *mount.TmpfsOptions, readOnly bool) (string, error) DefaultCopyMode() bool ValidateVolumeName(name string) error ReadWrite(mode string) bool IsBackwardCompatible(m *MountPoint) bool HasResource(m *MountPoint, absPath string) bool ValidateTmpfsMountDestination(dest string) error ValidateMountConfig(mt *mount.Mount) error } // NewParser creates a parser for the current host OS func NewParser() Parser { if runtime.GOOS == "windows" { return NewWindowsParser() } return NewLinuxParser() }