123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585 |
- package types
- import (
- "io"
- "os"
- "time"
- "github.com/docker/docker/api/types/container"
- "github.com/docker/docker/api/types/mount"
- "github.com/docker/docker/api/types/network"
- "github.com/docker/docker/api/types/registry"
- "github.com/docker/docker/api/types/swarm"
- "github.com/docker/go-connections/nat"
- )
- // ContainerCreateResponse contains the information returned to a client on the
- // creation of a new container.
- type ContainerCreateResponse struct {
- // ID is the ID of the created container.
- ID string `json:"Id"`
- // Warnings are any warnings encountered during the creation of the container.
- Warnings []string `json:"Warnings"`
- }
- // ContainerExecCreateResponse contains response of Remote API:
- // POST "/containers/{name:.*}/exec"
- type ContainerExecCreateResponse struct {
- // ID is the exec ID.
- ID string `json:"Id"`
- }
- // ContainerUpdateResponse contains response of Remote API:
- // POST "/containers/{name:.*}/update"
- type ContainerUpdateResponse struct {
- // Warnings are any warnings encountered during the updating of the container.
- Warnings []string `json:"Warnings"`
- }
- // AuthResponse contains response of Remote API:
- // POST "/auth"
- type AuthResponse struct {
- // Status is the authentication status
- Status string `json:"Status"`
- // IdentityToken is an opaque token used for authenticating
- // a user after a successful login.
- IdentityToken string `json:"IdentityToken,omitempty"`
- }
- // ContainerWaitResponse contains response of Remote API:
- // POST "/containers/"+containerID+"/wait"
- type ContainerWaitResponse struct {
- // StatusCode is the status code of the wait job
- StatusCode int `json:"StatusCode"`
- }
- // ContainerCommitResponse contains response of Remote API:
- // POST "/commit?container="+containerID
- type ContainerCommitResponse struct {
- ID string `json:"Id"`
- }
- // ContainerChange contains response of Remote API:
- // GET "/containers/{name:.*}/changes"
- type ContainerChange struct {
- Kind int
- Path string
- }
- // ImageHistory contains response of Remote API:
- // GET "/images/{name:.*}/history"
- type ImageHistory struct {
- ID string `json:"Id"`
- Created int64
- CreatedBy string
- Tags []string
- Size int64
- Comment string
- }
- // ImageDelete contains response of Remote API:
- // DELETE "/images/{name:.*}"
- type ImageDelete struct {
- Untagged string `json:",omitempty"`
- Deleted string `json:",omitempty"`
- }
- // Image contains response of Remote API:
- // GET "/images/json"
- type Image struct {
- ID string `json:"Id"`
- ParentID string `json:"ParentId"`
- RepoTags []string
- RepoDigests []string
- Created int64
- Size int64
- SharedSize int64
- VirtualSize int64
- Labels map[string]string
- Containers int64
- }
- // GraphDriverData returns Image's graph driver config info
- // when calling inspect command
- type GraphDriverData struct {
- Name string
- Data map[string]string
- }
- // RootFS returns Image's RootFS description including the layer IDs.
- type RootFS struct {
- Type string
- Layers []string `json:",omitempty"`
- BaseLayer string `json:",omitempty"`
- }
- // ImageInspect contains response of Remote API:
- // GET "/images/{name:.*}/json"
- type ImageInspect struct {
- ID string `json:"Id"`
- RepoTags []string
- RepoDigests []string
- Parent string
- Comment string
- Created string
- Container string
- ContainerConfig *container.Config
- DockerVersion string
- Author string
- Config *container.Config
- Architecture string
- Os string
- OsVersion string `json:",omitempty"`
- Size int64
- VirtualSize int64
- GraphDriver GraphDriverData
- RootFS RootFS
- }
- // Port stores open ports info of container
- // e.g. {"PrivatePort": 8080, "PublicPort": 80, "Type": "tcp"}
- type Port struct {
- IP string `json:",omitempty"`
- PrivatePort int
- PublicPort int `json:",omitempty"`
- Type string
- }
- // Container contains response of Remote API:
- // GET "/containers/json"
- type Container struct {
- ID string `json:"Id"`
- Names []string
- Image string
- ImageID string
- Command string
- Created int64
- Ports []Port
- SizeRw int64 `json:",omitempty"`
- SizeRootFs int64 `json:",omitempty"`
- Labels map[string]string
- State string
- Status string
- HostConfig struct {
- NetworkMode string `json:",omitempty"`
- }
- NetworkSettings *SummaryNetworkSettings
- Mounts []MountPoint
- }
- // CopyConfig contains request body of Remote API:
- // POST "/containers/"+containerID+"/copy"
- type CopyConfig struct {
- Resource string
- }
- // ContainerPathStat is used to encode the header from
- // GET "/containers/{name:.*}/archive"
- // "Name" is the file or directory name.
- type ContainerPathStat struct {
- Name string `json:"name"`
- Size int64 `json:"size"`
- Mode os.FileMode `json:"mode"`
- Mtime time.Time `json:"mtime"`
- LinkTarget string `json:"linkTarget"`
- }
- // ContainerStats contains response of Remote API:
- // GET "/stats"
- type ContainerStats struct {
- Body io.ReadCloser `json:"body"`
- OSType string `json:"ostype"`
- }
- // ContainerProcessList contains response of Remote API:
- // GET "/containers/{name:.*}/top"
- type ContainerProcessList struct {
- Processes [][]string
- Titles []string
- }
- // Version contains response of Remote API:
- // GET "/version"
- type Version struct {
- Version string
- APIVersion string `json:"ApiVersion"`
- GitCommit string
- GoVersion string
- Os string
- Arch string
- KernelVersion string `json:",omitempty"`
- Experimental bool `json:",omitempty"`
- BuildTime string `json:",omitempty"`
- }
- // Info contains response of Remote API:
- // GET "/info"
- type Info struct {
- ID string
- Containers int
- ContainersRunning int
- ContainersPaused int
- ContainersStopped int
- Images int
- Driver string
- DriverStatus [][2]string
- SystemStatus [][2]string
- Plugins PluginsInfo
- MemoryLimit bool
- SwapLimit bool
- KernelMemory bool
- CPUCfsPeriod bool `json:"CpuCfsPeriod"`
- CPUCfsQuota bool `json:"CpuCfsQuota"`
- CPUShares bool
- CPUSet bool
- IPv4Forwarding bool
- BridgeNfIptables bool
- BridgeNfIP6tables bool `json:"BridgeNfIp6tables"`
- Debug bool
- NFd int
- OomKillDisable bool
- NGoroutines int
- SystemTime string
- LoggingDriver string
- CgroupDriver string
- NEventsListener int
- KernelVersion string
- OperatingSystem string
- OSType string
- Architecture string
- IndexServerAddress string
- RegistryConfig *registry.ServiceConfig
- NCPU int
- MemTotal int64
- DockerRootDir string
- HTTPProxy string `json:"HttpProxy"`
- HTTPSProxy string `json:"HttpsProxy"`
- NoProxy string
- Name string
- Labels []string
- ExperimentalBuild bool
- ServerVersion string
- ClusterStore string
- ClusterAdvertise string
- SecurityOptions []string
- Runtimes map[string]Runtime
- DefaultRuntime string
- Swarm swarm.Info
- // LiveRestoreEnabled determines whether containers should be kept
- // running when the daemon is shutdown or upon daemon start if
- // running containers are detected
- LiveRestoreEnabled bool
- Isolation container.Isolation
- }
- // PluginsInfo is a temp struct holding Plugins name
- // registered with docker daemon. It is used by Info struct
- type PluginsInfo struct {
- // List of Volume plugins registered
- Volume []string
- // List of Network plugins registered
- Network []string
- // List of Authorization plugins registered
- Authorization []string
- }
- // ExecStartCheck is a temp struct used by execStart
- // Config fields is part of ExecConfig in runconfig package
- type ExecStartCheck struct {
- // ExecStart will first check if it's detached
- Detach bool
- // Check if there's a tty
- Tty bool
- }
- // HealthcheckResult stores information about a single run of a healthcheck probe
- type HealthcheckResult struct {
- Start time.Time // Start is the time this check started
- End time.Time // End is the time this check ended
- ExitCode int // ExitCode meanings: 0=healthy, 1=unhealthy, 2=reserved (considered unhealthy), else=error running probe
- Output string // Output from last check
- }
- // Health states
- const (
- Starting = "starting" // Starting indicates that the container is not yet ready
- Healthy = "healthy" // Healthy indicates that the container is running correctly
- Unhealthy = "unhealthy" // Unhealthy indicates that the container has a problem
- )
- // Health stores information about the container's healthcheck results
- type Health struct {
- Status string // Status is one of Starting, Healthy or Unhealthy
- FailingStreak int // FailingStreak is the number of consecutive failures
- Log []*HealthcheckResult // Log contains the last few results (oldest first)
- }
- // ContainerState stores container's running state
- // it's part of ContainerJSONBase and will return by "inspect" command
- type ContainerState struct {
- Status string
- Running bool
- Paused bool
- Restarting bool
- OOMKilled bool
- Dead bool
- Pid int
- ExitCode int
- Error string
- StartedAt string
- FinishedAt string
- Health *Health `json:",omitempty"`
- }
- // ContainerNode stores information about the node that a container
- // is running on. It's only available in Docker Swarm
- type ContainerNode struct {
- ID string
- IPAddress string `json:"IP"`
- Addr string
- Name string
- Cpus int
- Memory int64
- Labels map[string]string
- }
- // ContainerJSONBase contains response of Remote API:
- // GET "/containers/{name:.*}/json"
- type ContainerJSONBase struct {
- ID string `json:"Id"`
- Created string
- Path string
- Args []string
- State *ContainerState
- Image string
- ResolvConfPath string
- HostnamePath string
- HostsPath string
- LogPath string
- Node *ContainerNode `json:",omitempty"`
- Name string
- RestartCount int
- Driver string
- MountLabel string
- ProcessLabel string
- AppArmorProfile string
- ExecIDs []string
- HostConfig *container.HostConfig
- GraphDriver GraphDriverData
- SizeRw *int64 `json:",omitempty"`
- SizeRootFs *int64 `json:",omitempty"`
- }
- // ContainerJSON is newly used struct along with MountPoint
- type ContainerJSON struct {
- *ContainerJSONBase
- Mounts []MountPoint
- Config *container.Config
- NetworkSettings *NetworkSettings
- }
- // NetworkSettings exposes the network settings in the api
- type NetworkSettings struct {
- NetworkSettingsBase
- DefaultNetworkSettings
- Networks map[string]*network.EndpointSettings
- }
- // SummaryNetworkSettings provides a summary of container's networks
- // in /containers/json
- type SummaryNetworkSettings struct {
- Networks map[string]*network.EndpointSettings
- }
- // NetworkSettingsBase holds basic information about networks
- type NetworkSettingsBase struct {
- Bridge string // Bridge is the Bridge name the network uses(e.g. `docker0`)
- SandboxID string // SandboxID uniquely represents a container's network stack
- HairpinMode bool // HairpinMode specifies if hairpin NAT should be enabled on the virtual interface
- LinkLocalIPv6Address string // LinkLocalIPv6Address is an IPv6 unicast address using the link-local prefix
- LinkLocalIPv6PrefixLen int // LinkLocalIPv6PrefixLen is the prefix length of an IPv6 unicast address
- Ports nat.PortMap // Ports is a collection of PortBinding indexed by Port
- SandboxKey string // SandboxKey identifies the sandbox
- SecondaryIPAddresses []network.Address
- SecondaryIPv6Addresses []network.Address
- }
- // DefaultNetworkSettings holds network information
- // during the 2 release deprecation period.
- // It will be removed in Docker 1.11.
- type DefaultNetworkSettings struct {
- EndpointID string // EndpointID uniquely represents a service endpoint in a Sandbox
- Gateway string // Gateway holds the gateway address for the network
- GlobalIPv6Address string // GlobalIPv6Address holds network's global IPv6 address
- GlobalIPv6PrefixLen int // GlobalIPv6PrefixLen represents mask length of network's global IPv6 address
- IPAddress string // IPAddress holds the IPv4 address for the network
- IPPrefixLen int // IPPrefixLen represents mask length of network's IPv4 address
- IPv6Gateway string // IPv6Gateway holds gateway address specific for IPv6
- MacAddress string // MacAddress holds the MAC address for the network
- }
- // MountPoint represents a mount point configuration inside the container.
- // This is used for reporting the mountpoints in use by a container.
- type MountPoint struct {
- Type mount.Type `json:",omitempty"`
- Name string `json:",omitempty"`
- Source string
- Destination string
- Driver string `json:",omitempty"`
- Mode string
- RW bool
- Propagation mount.Propagation
- }
- // VolumeUsageData holds information regarding the volume usage
- type VolumeUsageData struct {
- Size int64 // Size holds how much disk space is used by the (local driver only). Sets to -1 if not provided.
- RefCount int // RefCount holds the number of containers having this volume attached to them. Sets to -1 if not provided.
- }
- // Volume represents the configuration of a volume for the remote API
- type Volume struct {
- Name string // Name is the name of the volume
- Driver string // Driver is the Driver name used to create the volume
- Mountpoint string // Mountpoint is the location on disk of the volume
- Status map[string]interface{} `json:",omitempty"` // Status provides low-level status information about the volume
- Labels map[string]string // Labels is metadata specific to the volume
- Scope string // Scope describes the level at which the volume exists (e.g. `global` for cluster-wide or `local` for machine level)
- UsageData *VolumeUsageData `json:",omitempty"`
- }
- // VolumesListResponse contains the response for the remote API:
- // GET "/volumes"
- type VolumesListResponse struct {
- Volumes []*Volume // Volumes is the list of volumes being returned
- Warnings []string // Warnings is a list of warnings that occurred when getting the list from the volume drivers
- }
- // VolumeCreateRequest contains the request for the remote API:
- // POST "/volumes/create"
- type VolumeCreateRequest struct {
- Name string // Name is the requested name of the volume
- Driver string // Driver is the name of the driver that should be used to create the volume
- DriverOpts map[string]string // DriverOpts holds the driver specific options to use for when creating the volume.
- Labels map[string]string // Labels holds metadata specific to the volume being created.
- }
- // NetworkResource is the body of the "get network" http response message
- type NetworkResource struct {
- Name string // Name is the requested name of the network
- ID string `json:"Id"` // ID uniquely identifies a network on a single machine
- Created time.Time // Created is the time the network created
- Scope string // Scope describes the level at which the network exists (e.g. `global` for cluster-wide or `local` for machine level)
- Driver string // Driver is the Driver name used to create the network (e.g. `bridge`, `overlay`)
- EnableIPv6 bool // EnableIPv6 represents whether to enable IPv6
- IPAM network.IPAM // IPAM is the network's IP Address Management
- Internal bool // Internal represents if the network is used internal only
- Attachable bool // Attachable represents if the global scope is manually attachable by regular containers from workers in swarm mode.
- Containers map[string]EndpointResource // Containers contains endpoints belonging to the network
- Options map[string]string // Options holds the network specific options to use for when creating the network
- Labels map[string]string // Labels holds metadata specific to the network being created
- }
- // EndpointResource contains network resources allocated and used for a container in a network
- type EndpointResource struct {
- Name string
- EndpointID string
- MacAddress string
- IPv4Address string
- IPv6Address string
- }
- // NetworkCreate is the expected body of the "create network" http request message
- type NetworkCreate struct {
- CheckDuplicate bool
- Driver string
- EnableIPv6 bool
- IPAM *network.IPAM
- Internal bool
- Attachable bool
- Options map[string]string
- Labels map[string]string
- }
- // NetworkCreateRequest is the request message sent to the server for network create call.
- type NetworkCreateRequest struct {
- NetworkCreate
- Name string
- }
- // NetworkCreateResponse is the response message sent by the server for network create call
- type NetworkCreateResponse struct {
- ID string `json:"Id"`
- Warning string
- }
- // NetworkConnect represents the data to be used to connect a container to the network
- type NetworkConnect struct {
- Container string
- EndpointConfig *network.EndpointSettings `json:",omitempty"`
- }
- // NetworkDisconnect represents the data to be used to disconnect a container from the network
- type NetworkDisconnect struct {
- Container string
- Force bool
- }
- // Checkpoint represents the details of a checkpoint
- type Checkpoint struct {
- Name string // Name is the name of the checkpoint
- }
- // Runtime describes an OCI runtime
- type Runtime struct {
- Path string `json:"path"`
- Args []string `json:"runtimeArgs,omitempty"`
- }
- // DiskUsage contains response of Remote API:
- // GET "/system/df"
- type DiskUsage struct {
- LayersSize int64
- Images []*Image
- Containers []*Container
- Volumes []*Volume
- }
- // ImagesPruneConfig contains the configuration for Remote API:
- // POST "/images/prune"
- type ImagesPruneConfig struct {
- DanglingOnly bool
- }
- // ContainersPruneConfig contains the configuration for Remote API:
- // POST "/images/prune"
- type ContainersPruneConfig struct {
- }
- // VolumesPruneConfig contains the configuration for Remote API:
- // POST "/images/prune"
- type VolumesPruneConfig struct {
- }
- // ContainersPruneReport contains the response for Remote API:
- // POST "/containers/prune"
- type ContainersPruneReport struct {
- ContainersDeleted []string
- SpaceReclaimed uint64
- }
- // VolumesPruneReport contains the response for Remote API:
- // POST "/volumes/prune"
- type VolumesPruneReport struct {
- VolumesDeleted []string
- SpaceReclaimed uint64
- }
- // ImagesPruneReport contains the response for Remote API:
- // POST "/images/prune"
- type ImagesPruneReport struct {
- ImagesDeleted []ImageDelete
- SpaceReclaimed uint64
- }
|