Documentation ¶
Index ¶
- Constants
- Variables
- func CmdStream(cmd *exec.Cmd) (io.Reader, error)
- func CompareConfig(a, b *Config) bool
- func CopyFileWithTar(src, dst string) error
- func CopyWithTar(src, dst string) error
- func CreateBridgeIface(ifaceName string) error
- func GenerateID() string
- func ListenAndServe(proto, addr string, srv *Server, logging bool) error
- func MergeConfig(userConf, imageConf *Config)
- func MountAUFS(ro []string, rw string, target string) error
- func Mounted(mountpoint string) (bool, error)
- func ParseCommands(proto, addr string, args ...string) error
- func StoreImage(img *Image, layerData Archive, root string, store bool) error
- func StoreSize(img *Image, root string) error
- func Subcmd(name, signature, description string) *flag.FlagSet
- func SysInit()
- func Tar(path string, compression Compression) (io.Reader, error)
- func TarFilter(path string, compression Compression, filter []string) (io.Reader, error)
- func TarUntar(src string, filter []string, dst string) error
- func Unmount(target string) error
- func Untar(archive io.Reader, path string) error
- func UntarPath(src, dst string) error
- func ValidateID(id string) error
- type APIAuth
- type APIContainers
- type APIHistory
- type APIID
- type APIImageConfig
- type APIImages
- type APIInfo
- type APIPort
- type APIRmi
- type APIRun
- type APISearch
- type APIVersion
- type APIWait
- type Archive
- type AttachOpts
- type BuildFile
- type Builder
- type Capabilities
- type Change
- type ChangeType
- type Compression
- type Config
- type Container
- func (container *Container) Attach(stdin io.ReadCloser, stdinCloser io.Closer, stdout io.Writer, stderr io.Writer) chan error
- func (container *Container) Changes() ([]Change, error)
- func (container *Container) Cmd() *exec.Cmd
- func (container *Container) EnsureMounted() error
- func (container *Container) Export() (Archive, error)
- func (container *Container) ExportRw() (Archive, error)
- func (container *Container) FromDisk() error
- func (container *Container) GetImage() (*Image, error)
- func (container *Container) GetSize() (int64, int64)
- func (container *Container) GetVolumes() (map[string]string, error)
- func (container *Container) Inject(file io.Reader, pth string) error
- func (container *Container) Kill() error
- func (container *Container) Mount() error
- func (container *Container) Mounted() (bool, error)
- func (container *Container) Output() (output []byte, err error)
- func (container *Container) ReadLog(name string) (io.Reader, error)
- func (container *Container) Resize(h, w int) error
- func (container *Container) Restart(seconds int) error
- func (container *Container) RootfsPath() string
- func (container *Container) Run() error
- func (container *Container) RwChecksum() (string, error)
- func (container *Container) ShortID() string
- func (container *Container) Start() error
- func (container *Container) StderrPipe() (io.ReadCloser, error)
- func (container *Container) StdinPipe() (io.WriteCloser, error)
- func (container *Container) StdoutPipe() (io.ReadCloser, error)
- func (container *Container) Stop(seconds int) error
- func (container *Container) ToDisk() (err error)
- func (container *Container) Unmount() error
- func (container *Container) Wait() int
- func (container *Container) WaitTimeout(timeout time.Duration) error
- func (container *Container) When() time.Time
- type DockerCli
- func (cli *DockerCli) CmdAttach(args ...string) error
- func (cli *DockerCli) CmdBuild(args ...string) error
- func (cli *DockerCli) CmdCommit(args ...string) error
- func (cli *DockerCli) CmdDiff(args ...string) error
- func (cli *DockerCli) CmdExport(args ...string) error
- func (cli *DockerCli) CmdHelp(args ...string) error
- func (cli *DockerCli) CmdHistory(args ...string) error
- func (cli *DockerCli) CmdImages(args ...string) error
- func (cli *DockerCli) CmdImport(args ...string) error
- func (cli *DockerCli) CmdInfo(args ...string) error
- func (cli *DockerCli) CmdInsert(args ...string) error
- func (cli *DockerCli) CmdInspect(args ...string) error
- func (cli *DockerCli) CmdKill(args ...string) error
- func (cli *DockerCli) CmdLogin(args ...string) error
- func (cli *DockerCli) CmdLogs(args ...string) error
- func (cli *DockerCli) CmdPort(args ...string) error
- func (cli *DockerCli) CmdPs(args ...string) error
- func (cli *DockerCli) CmdPull(args ...string) error
- func (cli *DockerCli) CmdPush(args ...string) error
- func (cli *DockerCli) CmdRestart(args ...string) error
- func (cli *DockerCli) CmdRm(args ...string) error
- func (cli *DockerCli) CmdRmi(args ...string) error
- func (cli *DockerCli) CmdRun(args ...string) error
- func (cli *DockerCli) CmdSearch(args ...string) error
- func (cli *DockerCli) CmdStart(args ...string) error
- func (cli *DockerCli) CmdStop(args ...string) error
- func (cli *DockerCli) CmdTag(args ...string) error
- func (cli *DockerCli) CmdVersion(args ...string) error
- func (cli *DockerCli) CmdWait(args ...string) error
- type Graph
- func (graph *Graph) All() ([]*Image, error)
- func (graph *Graph) ByParent() (map[string][]*Image, error)
- func (graph *Graph) Create(layerData Archive, container *Container, comment, author string, ...) (*Image, error)
- func (graph *Graph) Delete(name string) error
- func (graph *Graph) Exists(id string) bool
- func (graph *Graph) Get(name string) (*Image, error)
- func (graph *Graph) Heads() (map[string]*Image, error)
- func (graph *Graph) IsNotExist(err error) bool
- func (graph *Graph) Map() (map[string]*Image, error)
- func (graph *Graph) Mktemp(id string) (string, error)
- func (graph *Graph) Register(layerData Archive, store bool, img *Image) error
- func (graph *Graph) TempLayerArchive(id string, compression Compression, output io.Writer) (*TempArchive, error)
- func (graph *Graph) UpdateChecksums(newChecksums map[string]*registry.ImgData) error
- func (graph *Graph) WalkAll(handler func(*Image)) error
- type History
- type IPAllocator
- type Image
- func (image *Image) Changes(rw string) ([]Change, error)
- func (img *Image) Checksum() (string, error)
- func (img *Image) GetParent() (*Image, error)
- func (img *Image) History() ([]*Image, error)
- func (image *Image) Mount(root, rw string) error
- func (image *Image) ShortID() string
- func (image *Image) TarLayer(compression Compression) (Archive, error)
- func (img *Image) WalkHistory(handler func(*Image) error) (err error)
- type ListOpts
- type Nat
- type NetworkInterface
- type NetworkManager
- type NetworkSettings
- type PathOpts
- type PortAllocator
- type PortMapper
- type Repository
- type Runtime
- func (runtime *Runtime) Destroy(container *Container) error
- func (runtime *Runtime) Exists(id string) bool
- func (runtime *Runtime) Get(name string) *Container
- func (runtime *Runtime) List() []*Container
- func (runtime *Runtime) Load(id string) (*Container, error)
- func (runtime *Runtime) LogToDisk(src *utils.WriteBroadcaster, dst string) error
- func (runtime *Runtime) Register(container *Container) error
- func (runtime *Runtime) UpdateCapabilities(quiet bool)
- type Server
- func (srv *Server) ContainerAttach(name string, logs, stream, stdin, stdout, stderr bool, in io.ReadCloser, ...) error
- func (srv *Server) ContainerChanges(name string) ([]Change, error)
- func (srv *Server) ContainerCommit(name, repo, tag, author, comment string, config *Config) (string, error)
- func (srv *Server) ContainerCreate(config *Config) (string, error)
- func (srv *Server) ContainerDestroy(name string, removeVolume bool) error
- func (srv *Server) ContainerExport(name string, out io.Writer) error
- func (srv *Server) ContainerInspect(name string) (*Container, error)
- func (srv *Server) ContainerKill(name string) error
- func (srv *Server) ContainerResize(name string, h, w int) error
- func (srv *Server) ContainerRestart(name string, t int) error
- func (srv *Server) ContainerStart(name string) error
- func (srv *Server) ContainerStop(name string, t int) error
- func (srv *Server) ContainerTag(name, repo, tag string, force bool) error
- func (srv *Server) ContainerWait(name string) (int, error)
- func (srv *Server) Containers(all, size bool, n int, since, before string) []APIContainers
- func (srv *Server) DockerInfo() *APIInfo
- func (srv *Server) DockerVersion() APIVersion
- func (srv *Server) ImageDelete(name string, autoPrune bool) (*[]APIRmi, error)
- func (srv *Server) ImageGetCached(imgId string, config *Config) (*Image, error)
- func (srv *Server) ImageHistory(name string) ([]APIHistory, error)
- func (srv *Server) ImageImport(src, repo, tag string, in io.Reader, out io.Writer, sf *utils.StreamFormatter) error
- func (srv *Server) ImageInsert(name, url, path string, out io.Writer, sf *utils.StreamFormatter) (string, error)
- func (srv *Server) ImageInspect(name string) (*Image, error)
- func (srv *Server) ImagePull(name, tag, endpoint string, out io.Writer, sf *utils.StreamFormatter, ...) error
- func (srv *Server) ImagePush(name, endpoint string, out io.Writer, sf *utils.StreamFormatter, ...) error
- func (srv *Server) Images(all bool, filter string) ([]APIImages, error)
- func (srv *Server) ImagesSearch(term string) ([]APISearch, error)
- func (srv *Server) ImagesViz(out io.Writer) error
- type State
- type TagStore
- func (store *TagStore) ByID() map[string][]string
- func (store *TagStore) Delete(repoName, tag string) (bool, error)
- func (store *TagStore) DeleteAll(id string) error
- func (store *TagStore) Get(repoName string) (Repository, error)
- func (store *TagStore) GetImage(repoName, tagOrId string) (*Image, error)
- func (store *TagStore) ImageName(id string) string
- func (store *TagStore) LookupImage(name string) (*Image, error)
- func (store *TagStore) Reload() error
- func (store *TagStore) Save() error
- func (store *TagStore) Set(repoName, tag, imageName string, force bool) error
- type TempArchive
Constants ¶
const ( ChangeModify = iota ChangeAdd ChangeDelete )
const APIVERSION = 1.3
const DEFAULTHTTPHOST string = "127.0.0.1"
const DEFAULTHTTPPORT int = 4243
const DEFAULTTAG = "latest"
const (
DefaultNetworkBridge = "docker0"
)
const LxcTemplate = `` /* 3437-byte string literal not displayed */
const VERSION = "0.4.6"
Variables ¶
var ErrImageReferenced = errors.New("Image referenced by a repository")
var (
GITCOMMIT string
)
var LxcTemplateCompiled *template.Template
var NetworkBridgeIface string
Functions ¶
func CmdStream ¶
CmdStream executes a command, and returns its stdout as a stream. If the command fails to run or doesn't complete successfully, an error will be returned, including anything written on stderr.
func CompareConfig ¶
Compare two Config struct. Do not compare the "Image" nor "Hostname" fields If OpenStdin is set, then it differs
func CopyFileWithTar ¶
CopyFileWithTar emulates the behavior of the 'cp' command-line for a single file. It copies a regular file from path `src` to path `dst`, and preserves all its metadata.
If `dst` ends with a trailing slash '/', the final destination path will be `dst/base(src)`.
func CopyWithTar ¶
CopyWithTar creates a tar archive of filesystem path `src`, and unpacks it at filesystem path `dst`. The archive is streamed directly with fixed buffering and no intermediary disk IO.
func CreateBridgeIface ¶
func GenerateID ¶
func GenerateID() string
func MergeConfig ¶
func MergeConfig(userConf, imageConf *Config)
func ParseCommands ¶
func SysInit ¶
func SysInit()
Sys Init code This code is run INSIDE the container and is responsible for setting up the environment before running the actual process
func Tar ¶
func Tar(path string, compression Compression) (io.Reader, error)
Tar creates an archive from the directory at `path`, and returns it as a stream of bytes.
func TarFilter ¶
Tar creates an archive from the directory at `path`, only including files whose relative paths are included in `filter`. If `filter` is nil, then all files are included.
func TarUntar ¶
TarUntar is a convenience function which calls Tar and Untar, with the output of one piped into the other. If either Tar or Untar fails, TarUntar aborts and returns the error.
func Untar ¶
Untar reads a stream of bytes from `archive`, parses it as a tar archive, and unpacks it into the directory at `path`. The archive may be compressed with one of the following algorithgms:
identity (uncompressed), gzip, bzip2, xz.
FIXME: specify behavior when target path exists vs. doesn't exist.
func UntarPath ¶
UntarPath is a convenience function which looks for an archive at filesystem path `src`, and unpacks it at `dst`.
func ValidateID ¶
Types ¶
type APIContainers ¶
type APIHistory ¶
type APIImageConfig ¶
type APIVersion ¶
type AttachOpts ¶
AttachOpts stores arguments to 'docker run -a', eg. which streams to attach to
func NewAttachOpts ¶
func NewAttachOpts() AttachOpts
func (AttachOpts) Get ¶
func (opts AttachOpts) Get(val string) bool
func (AttachOpts) Set ¶
func (opts AttachOpts) Set(val string) error
func (AttachOpts) String ¶
func (opts AttachOpts) String() string
type BuildFile ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
func NewBuilder ¶
type Capabilities ¶
type Change ¶
type Change struct { Path string Kind ChangeType }
type ChangeType ¶
type ChangeType int
type Compression ¶
type Compression uint32
const ( Uncompressed Compression = iota Bzip2 Gzip Xz )
func DetectCompression ¶
func DetectCompression(source []byte) Compression
func (*Compression) Extension ¶
func (compression *Compression) Extension() string
func (*Compression) Flag ¶
func (compression *Compression) Flag() string
type Config ¶
type Config struct { Hostname string User string Memory int64 // Memory limit (in bytes) MemorySwap int64 // Total memory usage (memory + swap); set `-1' to disable swap AttachStdin bool AttachStdout bool AttachStderr bool PortSpecs []string Tty bool // Attach standard streams to a tty, including stdin if it is not closed. OpenStdin bool // Open stdin StdinOnce bool // If true, close stdin after the 1 attached client disconnects. Env []string Cmd []string Dns []string Image string // Name of the image as it was passed by the operator (eg. could be symbolic) Volumes map[string]struct{} VolumesFrom string }
type Container ¶
type Container struct { ID string Created time.Time Path string Args []string Config *Config State State Image string NetworkSettings *NetworkSettings SysInitPath string ResolvConfPath string Volumes map[string]string // contains filtered or unexported fields }
func (*Container) EnsureMounted ¶
func (*Container) RootfsPath ¶
This method must be exported to be used from the lxc template
func (*Container) RwChecksum ¶
func (*Container) ShortID ¶
ShortID returns a shorthand version of the container's id for convenience. A collision with other container shorthands is very unlikely, but possible. In case of a collision a lookup with Runtime.Get() will fail, and the caller will need to use a langer prefix, or the full-length container Id.
func (*Container) StderrPipe ¶
func (container *Container) StderrPipe() (io.ReadCloser, error)
func (*Container) StdinPipe ¶
func (container *Container) StdinPipe() (io.WriteCloser, error)
StdinPipe() returns a pipe connected to the standard input of the container's active process.
func (*Container) StdoutPipe ¶
func (container *Container) StdoutPipe() (io.ReadCloser, error)
func (*Container) WaitTimeout ¶
type DockerCli ¶
type DockerCli struct {
// contains filtered or unexported fields
}
func NewDockerCli ¶
func (*DockerCli) CmdHistory ¶
func (*DockerCli) CmdInspect ¶
func (*DockerCli) CmdRestart ¶
func (*DockerCli) CmdVersion ¶
'docker version': show version information
type Graph ¶
type Graph struct { Root string // contains filtered or unexported fields }
A Graph is a store for versioned filesystem images and the relationship between them.
func NewGraph ¶
NewGraph instantiates a new graph at the given root path in the filesystem. `root` will be created if it doesn't exist.
func (*Graph) ByParent ¶
ByParent returns a lookup table of images by their parent. If an image of id ID has 3 children images, then the value for key ID will be a list of 3 images. If an image has no children, it will not have an entry in the table.
func (*Graph) Create ¶
func (graph *Graph) Create(layerData Archive, container *Container, comment, author string, config *Config) (*Image, error)
Create creates a new image and registers it in the graph.
func (*Graph) Exists ¶
Exists returns true if an image is registered at the given id. If the image doesn't exist or if an error is encountered, false is returned.
func (*Graph) Get ¶
Get returns the image with the given id, or an error if the image doesn't exist.
func (*Graph) Heads ¶
Heads returns all heads in the graph, keyed by id. A head is an image which is not the parent of another image in the graph.
func (*Graph) IsNotExist ¶
FIXME: Implement error subclass instead of looking at the error text Note: This is the way golang implements os.IsNotExists on Plan9
func (*Graph) Register ¶
Register imports a pre-existing image into the graph. FIXME: pass img as first argument
func (*Graph) TempLayerArchive ¶
func (graph *Graph) TempLayerArchive(id string, compression Compression, output io.Writer) (*TempArchive, error)
TempLayerArchive creates a temporary archive of the given image's filesystem layer.
The archive is stored on disk and will be automatically deleted as soon as has been read. If output is not nil, a human-readable progress bar will be written to it. FIXME: does this belong in Graph? How about MktempFile, let the caller use it for archives?
func (*Graph) UpdateChecksums ¶
type IPAllocator ¶
type IPAllocator struct {
// contains filtered or unexported fields
}
IP allocator: Atomatically allocate and release networking ports
func (*IPAllocator) Release ¶
func (alloc *IPAllocator) Release(ip net.IP)
type Image ¶
type Image struct { ID string `json:"id"` Parent string `json:"parent,omitempty"` Comment string `json:"comment,omitempty"` Created time.Time `json:"created"` Container string `json:"container,omitempty"` ContainerConfig Config `json:"container_config,omitempty"` DockerVersion string `json:"docker_version,omitempty"` Author string `json:"author,omitempty"` Config *Config `json:"config,omitempty"` Architecture string `json:"architecture,omitempty"` Size int64 // contains filtered or unexported fields }
func NewImgJSON ¶
Build an Image object from raw json data
func (*Image) History ¶
Image includes convenience proxy functions to its graph These functions will return an error if the image is not registered (ie. if image.graph == nil)
type NetworkInterface ¶
type NetworkInterface struct { IPNet net.IPNet Gateway net.IP // contains filtered or unexported fields }
Network interface represents the networking stack of a container
func (*NetworkInterface) AllocatePort ¶
func (iface *NetworkInterface) AllocatePort(spec string) (*Nat, error)
Allocate an external TCP port and map it to the interface
func (*NetworkInterface) Release ¶
func (iface *NetworkInterface) Release()
Release: Network cleanup - release all resources
type NetworkManager ¶
type NetworkManager struct {
// contains filtered or unexported fields
}
Network Manager manages a set of network interfaces Only *one* manager per host machine should be used
func (*NetworkManager) Allocate ¶
func (manager *NetworkManager) Allocate() (*NetworkInterface, error)
Allocate a network interface
type NetworkSettings ¶
type NetworkSettings struct { IPAddress string IPPrefixLen int Gateway string Bridge string PortMapping map[string]string }
func (*NetworkSettings) PortMappingHuman ¶
func (settings *NetworkSettings) PortMappingHuman() string
String returns a human-readable description of the port mapping defined in the settings
type PathOpts ¶
type PathOpts map[string]struct{}
PathOpts stores a unique set of absolute paths
func NewPathOpts ¶
func NewPathOpts() PathOpts
type PortAllocator ¶
type PortAllocator struct {
// contains filtered or unexported fields
}
Port allocator: Atomatically allocate and release networking ports
func (*PortAllocator) Release ¶
func (alloc *PortAllocator) Release(port int) error
FIXME: Release can no longer fail, change its prototype to reflect that.
type PortMapper ¶
type PortMapper struct {
// contains filtered or unexported fields
}
Port mapper takes care of mapping external ports to containers by setting up iptables rules. It keeps track of all mappings and is able to unmap at will
func (*PortMapper) Unmap ¶
func (mapper *PortMapper) Unmap(port int) error
type Repository ¶
type Runtime ¶
type Runtime struct { Dns []string // contains filtered or unexported fields }
func NewRuntime ¶
FIXME: harmonize with NewGraph()
func NewRuntimeFromDirectory ¶
func (*Runtime) LogToDisk ¶
func (runtime *Runtime) LogToDisk(src *utils.WriteBroadcaster, dst string) error
func (*Runtime) Register ¶
Register makes a container object usable by the runtime as <container.ID>
func (*Runtime) UpdateCapabilities ¶
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
func (*Server) ContainerAttach ¶
func (*Server) ContainerChanges ¶
func (*Server) ContainerCommit ¶
func (*Server) ContainerDestroy ¶
func (*Server) ContainerExport ¶
func (*Server) ContainerInspect ¶
func (*Server) ContainerKill ¶
func (*Server) ContainerStart ¶
func (*Server) ContainerTag ¶
func (*Server) Containers ¶
func (srv *Server) Containers(all, size bool, n int, since, before string) []APIContainers
func (*Server) DockerInfo ¶
func (*Server) DockerVersion ¶
func (srv *Server) DockerVersion() APIVersion
func (*Server) ImageDelete ¶
func (*Server) ImageGetCached ¶
func (*Server) ImageHistory ¶
func (srv *Server) ImageHistory(name string) ([]APIHistory, error)
func (*Server) ImageImport ¶
func (*Server) ImageInsert ¶
func (*Server) ImagePull ¶
func (srv *Server) ImagePull(name, tag, endpoint string, out io.Writer, sf *utils.StreamFormatter, authConfig *auth.AuthConfig) error
type State ¶
type TagStore ¶
type TagStore struct { Repositories map[string]Repository // contains filtered or unexported fields }
func (*TagStore) ByID ¶
Return a reverse-lookup table of all the names which refer to each image Eg. {"43b5f19b10584": {"base:latest", "base:v1"}}
type TempArchive ¶
func NewTempArchive ¶
func NewTempArchive(src Archive, dir string) (*TempArchive, error)
NewTempArchive reads the content of src into a temporary file, and returns the contents of that file as an archive. The archive can only be read once - as soon as reading completes, the file will be deleted.