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 ParseRun(args []string, capabilities *Capabilities) (*Config, *HostConfig, *flag.FlagSet, error)
- func StoreImage(img *Image, jsonData []byte, layerData Archive, root string) 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 APITop
- type APIVersion
- type APIWait
- type Archive
- type AttachOpts
- type BindMap
- 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) 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) ReadHostConfig() (*HostConfig, 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) SaveHostConfig(hostConfig *HostConfig) (err error)
- func (container *Container) ShortID() string
- func (container *Container) Start(hostConfig *HostConfig) 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) CmdEvents(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) CmdTop(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(jsonData []byte, layerData Archive, img *Image) error
- func (graph *Graph) TempLayerArchive(id string, compression Compression, sf *utils.StreamFormatter, ...) (*TempArchive, error)
- func (graph *Graph) WalkAll(handler func(*Image)) error
- type History
- type HostConfig
- type IPAllocator
- type Image
- func (image *Image) Changes(rw string) ([]Change, 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 PortMapping
- type Proxy
- 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, stream 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, hostConfig *HostConfig) error
- func (srv *Server) ContainerStop(name string, t int) error
- func (srv *Server) ContainerTag(name, repo, tag string, force bool) error
- func (srv *Server) ContainerTop(name, ps_args string) (*APITop, 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(localName string, tag string, out io.Writer, sf *utils.StreamFormatter, ...) error
- func (srv *Server) ImagePush(localName 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
- func (srv *Server) LogEvent(action, id string)
- type State
- type TCPProxy
- 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
- type UDPProxy
Constants ¶
const ( ChangeModify = iota ChangeAdd ChangeDelete )
const ( DefaultNetworkBridge = "docker0" DisableNetworkBridge = "none" )
const ( UDPConnTrackTimeout = 90 * time.Second UDPBufSize = 2048 )
const APIVERSION = 1.4
const DEFAULTHTTPHOST string = "127.0.0.1"
const DEFAULTHTTPPORT int = 4243
const DEFAULTTAG = "latest"
const LxcTemplate = `` /* 3612-byte string literal not displayed */
const VERSION = "0.5.0-dev"
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 ¶
CreateBridgeIface creates a network bridge interface on the host system with the name `ifaceName`, and attempts to configure it with an address which doesn't conflict with any other interface on the host. If it can't find an address which doesn't conflict, it will return an error.
func GenerateID ¶
func GenerateID() string
func MergeConfig ¶
func MergeConfig(userConf, imageConf *Config)
func ParseCommands ¶
func ParseRun ¶
func ParseRun(args []string, capabilities *Capabilities) (*Config, *HostConfig, *flag.FlagSet, error)
func StoreImage ¶
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 APIInfo ¶
type APIInfo struct { Debug bool Containers int Images int NFd int `json:",omitempty"` NGoroutines int `json:",omitempty"` MemoryLimit bool `json:",omitempty"` SwapLimit bool `json:",omitempty"` LXCVersion string `json:",omitempty"` NEventsListener int `json:",omitempty"` KernelVersion string `json:",omitempty"` }
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 Entrypoint []string NetworkDisabled bool }
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 // Store rw/ro in a separate structure to preserve reverse-compatibility on-disk. // Easier than migrating older container configs :) VolumesRW map[string]bool // contains filtered or unexported fields }
func (*Container) EnsureMounted ¶
func (*Container) ReadHostConfig ¶
func (container *Container) ReadHostConfig() (*HostConfig, error)
func (*Container) RootfsPath ¶
This method must be exported to be used from the lxc template
func (*Container) RwChecksum ¶
func (*Container) SaveHostConfig ¶
func (container *Container) SaveHostConfig(hostConfig *HostConfig) (err error)
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) Start ¶
func (container *Container) Start(hostConfig *HostConfig) error
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, sf *utils.StreamFormatter, 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?
type HostConfig ¶
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]PortMapping }
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 ¶
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
type PortMapping ¶
type Proxy ¶
type Proxy interface { // Start forwarding traffic back and forth the front and back-end // addresses. Run() // Stop forwarding traffic and close both ends of the Proxy. Close() // Return the address on which the proxy is listening. FrontendAddr() net.Addr // Return the proxied address. BackendAddr() net.Addr }
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, stream string) error
func (*Runtime) Register ¶
Register makes a container object usable by the runtime as <container.ID>
func (*Runtime) UpdateCapabilities ¶
type Server ¶
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 (srv *Server) ContainerStart(name string, hostConfig *HostConfig) error
func (*Server) ContainerTag ¶
func (*Server) ContainerTop ¶
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(localName string, tag string, out io.Writer, sf *utils.StreamFormatter, authConfig *auth.AuthConfig) error
type TCPProxy ¶
type TCPProxy struct {
// contains filtered or unexported fields
}
func (*TCPProxy) BackendAddr ¶
func (*TCPProxy) FrontendAddr ¶
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.
type UDPProxy ¶
type UDPProxy struct {
// contains filtered or unexported fields
}