Documentation ¶
Overview ¶
This backend uses the overlay union filesystem for containers with diff directories for each layer.
This version of the overlay driver requires at least kernel 4.0.0 in order to support mounting multiple diff directories.
Each container/image has at least a "diff" directory and "link" file. If there is also a "lower" file when there are diff layers below as well as "merged" and "work" directories. The "diff" directory has the upper layer of the overlay and is used to capture any changes to the layer. The "lower" file contains all the lower layer mounts separated by ":" and ordered from uppermost to lowermost layers. The overlay itself is mounted in the "merged" directory, and the "work" dir is needed for overlay to work.
The "link" file for each layer contains a unique string for the layer. Under the "l" directory at the root there will be a symbolic link with that unique string pointing the "diff" directory for the layer. The symbolic links are used to reference lower layers in the "lower" file and on mount. The links are used to shorten the total length of a layer reference without requiring changes to the layer identifier or root directory. Mounts are always done relative to root and referencing the symbolic links in order to ensure the number of lower directories can fit in a single page for making the mount syscall. A hard upper limit of 128 lower layers is enforced to ensure that mounts do not fail due to length.
Index ¶
- func Init(home string, options []string, uidMaps, gidMaps []idtools.IDMap) (graphdriver.Driver, error)
- type Driver
- func (d *Driver) ApplyDiff(id string, parent string, diff archive.Reader) (size int64, err error)
- func (d *Driver) Changes(id, parent string) ([]archive.Change, error)
- func (d *Driver) Cleanup() error
- func (d *Driver) Create(id, parent, mountLabel string, storageOpt map[string]string) (retErr error)
- func (d *Driver) CreateReadWrite(id, parent, mountLabel string, storageOpt map[string]string) error
- func (d *Driver) Diff(id, parent string) (archive.Archive, error)
- func (d *Driver) DiffSize(id, parent string) (size int64, err error)
- func (d *Driver) Exists(id string) bool
- func (d *Driver) Get(id string, mountLabel string) (s string, err error)
- func (d *Driver) GetMetadata(id string) (map[string]string, error)
- func (d *Driver) Put(id string) error
- func (d *Driver) Remove(id string) error
- func (d *Driver) Status() [][2]string
- func (d *Driver) String() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Init ¶
func Init(home string, options []string, uidMaps, gidMaps []idtools.IDMap) (graphdriver.Driver, error)
Init returns the a native diff driver for overlay filesystem. If overlay filesystem is not supported on the host, graphdriver.ErrNotSupported is returned as error. If a overlay filesystem is not supported over a existing filesystem then error graphdriver.ErrIncompatibleFS is returned.
Types ¶
type Driver ¶
type Driver struct {
// contains filtered or unexported fields
}
Driver contains information about the home directory and the list of active mounts that are created using this driver.
func (*Driver) Changes ¶
Changes produces a list of changes between the specified layer and its parent layer. If parent is "", then all changes will be ADD changes.
func (*Driver) Cleanup ¶
Cleanup any state created by overlay which should be cleaned when daemon is being shutdown. For now, we just have to unmount the bind mounted we had created.
func (*Driver) Create ¶
Create is used to create the upper, lower, and merge directories required for overlay fs for a given id. The parent filesystem is used to configure these directories for the overlay.
func (*Driver) CreateReadWrite ¶
CreateReadWrite creates a layer that is writable for use as a container file system.
func (*Driver) Diff ¶
Diff produces an archive of the changes between the specified layer and its parent layer which may be "".
func (*Driver) DiffSize ¶
DiffSize calculates the changes between the specified id and its parent and returns the size in bytes of the changes relative to its base filesystem directory.
func (*Driver) Get ¶
Get creates and mounts the required file system for the given id and returns the mount path.
func (*Driver) GetMetadata ¶
GetMetadata returns meta data about the overlay driver such as LowerDir, UpperDir, WorkDir and MergeDir used to store data.