- Notifications
You must be signed in to change notification settings - Fork253
containers/storage
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
storage
is a Go library which aims to provide methods for storing filesystemlayers, container images, and containers. Acontainers-storage
CLI wrapperis also included for manual and scripting use.
To build the CLI wrapper, use 'make binary'.
Operations which use VMs expect to launch them using 'vagrant', defaulting tousing its 'libvirt' provider. The boxes used are also available for the'virtualbox' provider, and can be selected by setting $VAGRANT_PROVIDER to'virtualbox' before kicking off the build.
The library manages three types of items: layers, images, and containers.
Alayer is a copy-on-write filesystem which is notionally stored as a set ofchanges relative to itsparent layer, if it has one. A given layer can onlyhave one parent, but any layer can be the parent of multiple layers. Layerswhich are parents of other layers should be treated as read-only.
Animage is a reference to a particular layer (itstop layer), along withother information which the library can manage for the convenience of itscaller. This information typically includes configuration templates forrunning a binary contained within the image's layers, and may includecryptographic signatures. Multiple images can reference the same layer, as thedifferences between two images may not be in their layer contents.
Acontainer is a read-write layer which is a child of an image's top layer,along with information which the library can manage for the convenience of itscaller. This information typically includes configuration information forrunning the specific container. Multiple containers can be derived from asingle image.
Layers, images, and containers are represented primarily by 32 characterhexadecimal IDs, but items of each kind can also have one or more arbitrarynames attached to them, which the library will automatically resolve to IDswhen they are passed in to API calls which expect IDs.
The library can store what it callsmetadata for each of these types ofitems. This is expected to be a small piece of data, since it is cached inmemory and stored along with the library's own bookkeeping information.
Additionally, the library can store one or more of what it callsbig data forimages and containers. This is a named chunk of larger data, which is only inmemory when it is being read from or being written to its own disk file.
ContributingInformation about contributing to this project.
About
Container Storage Library