// Type definitions for dockerode 2.5 // Project: https://github.com/apocas/dockerode // Definitions by: Carl Winkler // Nicolas Laplante // ByeongHun Yoo // Ray Fang // Marius Meisenzahl // Rob Moran // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 /// import * as stream from 'stream'; import * as events from 'events'; declare namespace Dockerode { interface Container { inspect(options: {}, callback: Callback): void; inspect(callback: Callback): void; inspect(options?: {}): Promise; rename(options: {}, callback: Callback): void; rename(options: {}): Promise; update(options: {}, callback: Callback): void; update(options: {}): Promise; top(options: {}, callback: Callback): void; top(callback: Callback): void; top(options?: {}): Promise; changes(callback: Callback): void; changes(): Promise; export(callback: Callback): void; export(): Promise; start(options: {}, callback: Callback): void; start(callback: Callback): void; start(options?: {}): Promise; pause(options: {}, callback: Callback): void; pause(callback: Callback): void; pause(options?: {}): Promise; unpause(options: {}, callback: Callback): void; unpause(callback: Callback): void; unpause(options?: {}): Promise; exec(options: {}, callback: Callback): void; exec(options: {}): Promise; commit(options: {}, callback: Callback): void; commit(callback: Callback): void; commit(options?: {}): Promise; stop(options: {}, callback: Callback): void; stop(callback: Callback): void; stop(options?: {}): Promise; restart(options: {}, callback: Callback): void; restart(callback: Callback): void; restart(options?: {}): Promise; kill(options: {}, callback: Callback): void; kill(callback: Callback): void; kill(options?: {}): Promise; resize(options: {}, callback: Callback): void; resize(callback: Callback): void; resize(options?: {}): Promise; wait(callback: Callback): void; wait(): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; /** Deprecated since RAPI v1.20 */ copy(options: {}, callback: Callback): void; /** Deprecated since RAPI v1.20 */ copy(callback: Callback): void; /** Deprecated since RAPI v1.20 */ copy(options?: {}): Promise; getArchive(options: {}, callback: Callback): void; getArchive(options: {}): Promise; infoArchive(options: {}, callback: Callback): void; infoArchive(options: {}): Promise; /** @param file Filename (will read synchronously), Buffer or stream */ putArchive(file: string | Buffer | NodeJS.ReadableStream, options: {}, callback: Callback): void; putArchive(file: string | Buffer | NodeJS.ReadableStream, options: {}): Promise; logs(options: ContainerLogsOptions, callback: Callback): void; logs(callback: Callback): void; logs(options?: ContainerLogsOptions): Promise; stats(options: {}, callback: Callback): void; stats(callback: Callback): void; stats(options?: {}): Promise; attach(options: {}, callback: Callback): void; attach(options: {}): Promise; modem: any; id?: string; } interface Image { inspect(callback: Callback): void; inspect(): Promise; history(callback: Callback): void; history(): Promise; get(callback: Callback): void; get(): Promise; push(options: {}, callback: Callback): void; push(callback: Callback): void; push(options?: {}): Promise; tag(options: {}, callback: Callback): void; tag(callback: Callback): void; tag(options?: {}): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; modem: any; id?: string; } interface Volume { inspect(callback: Callback): void; inspect(): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; modem: any; name?: string; } interface Service { inspect(callback: Callback): void; inspect(): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; update(options: {}, callback: Callback): void; update(options: {}): Promise; modem: any; id?: string; } interface Task { inspect(callback: Callback): void; inspect(): Promise; modem: any; id?: string; } interface Node { inspect(callback: Callback): void; inspect(): Promise; update(options: {}, callback: Callback): void; update(callback: Callback): void; update(options?: {}): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; modem: any; id?: string; } interface Plugin { modem: any; name: string; remote: any; inspect(callback: Callback): void; inspect(): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; privileges(callback: Callback): void; privileges(): Promise; pull(options: {}, callback: Callback): void; pull(options: {}): Promise; enable(options: {}, callback: Callback): void; enable(callback: Callback): void; enable(options?: {}): Promise; disable(options: {}, callback: Callback): void; disable(callback: Callback): void; disable(options?: {}): Promise; push(options: {}, callback: Callback): void; push(callback: Callback): void; push(options?: {}): Promise; configure(options: {}, callback: Callback): void; configure(callback: Callback): void; configure(options?: {}): Promise; upgrade(auth: any, options: {}, callback: Callback): void; upgrade(auth: any, callback: Callback): void; upgrade(auth: any, options?: {}): Promise; } interface Secret { inspect(callback: Callback): void; inspect(): Promise; update(options: {}, callback: Callback): void; update(callback: Callback): void; update(options?: {}): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; modem: any; id?: string; } interface Network { inspect(callback: Callback): void; inspect(): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; connect(options: {}, callback: Callback): void; connect(callback: Callback): void; connect(options?: {}): Promise; disconnect(options: {}, callback: Callback): void; disconnect(callback: Callback): void; disconnect(options?: {}): Promise; modem: any; id?: string; } interface Exec { inspect(callback: Callback): void; inspect(): Promise; start(options: {}, callback: Callback): void; start(options: {}): Promise; resize(options: {}, callback: Callback): void; resize(options: {}): Promise; modem: any; id?: string; } interface ImageInfo { Id: string; ParentId: string; RepoTags: string[]; RepoDigests?: string[]; Created: number; Size: number; VirtualSize: number; Labels: { [label: string]: string }; } interface ContainerInfo { Id: string; Names: string[]; Image: string; ImageID: string; Command: string; Created: number; Ports: Port[]; Labels: { [label: string]: string }; State: string; Status: string; HostConfig: { NetworkMode: string; }; NetworkSettings: { Networks: { [networkType: string]: NetworkInfo } }; } interface Port { IP: string; PrivatePort: number; PublicPort: number; Type: string; } interface NetworkInfo { IPAMConfig?: any; Links?: any; Aliases?: any; NetworkID: string; EndpointID: string; Gateway: string; IPAddress: string; IPPrefixLen: number; IPv6Gateway: string; GlobalIPv6Address: string; GlobalIPv6PrefixLen: number; MacAddress: string; } interface ContainerInspectInfo { Id: string; Created: string; Path: string; Args: string[]; State: { Status: string; Running: boolean; Paused: boolean; Restarting: boolean; OOMKilled: boolean; Dead: boolean; Pid: number; ExitCode: number; Error: string; StartedAt: string; FinishedAt: string; }; Image: string; ResolvConfPath: string; HostnamePath: string; HostsPath: string; LogPath: string; Name: string; RestartCount: number; Driver: string; MountLabel: string; ProcessLabel: string; AppArmorProfile: string; ExecIDs?: any; HostConfig: HostConfig; GraphDriver: { Name: string; Data: { DeviceId: string; DeviceName: string; DeviceSize: string; } }; Mounts: Array<{ Source: string; Destination: string; Mode: string; RW: boolean; Propagation: string; }>; Config: { Hostname: string; Domainname: string; User: string; AttachStdin: boolean; AttachStdout: boolean; AttachStderr: boolean; ExposedPorts: { [portAndProtocol: string]: {} }; Tty: boolean; OpenStdin: boolean; StdinOnce: boolean; Env: string[]; Cmd: string[]; Image: string; Volumes: { [volume: string]: {} }; WorkingDir: string; Entrypoint?: any; OnBuild?: any; Labels: { [label: string]: string } }; NetworkSettings: { Bridge: string; SandboxID: string; HairpinMode: boolean; LinkLocalIPv6Address: string; LinkLocalIPv6PrefixLen: number; Ports: { [portAndProtocol: string]: Array<{ HostIp: string; HostPort: string; }>; }; SandboxKey: string; SecondaryIPAddresses?: any; SecondaryIPv6Addresses?: any; EndpointID: string; Gateway: string; GlobalIPv6Address: string; GlobalIPv6PrefixLen: number; IPAddress: string; IPPrefixLen: number; IPv6Gateway: string; MacAddress: string; Networks: { [type: string]: { IPAMConfig?: any; Links?: any; Aliases?: any; NetworkID: string; EndpointID: string; Gateway: string; IPAddress: string; IPPrefixLen: number; IPv6Gateway: string; GlobalIPv6Address: string; GlobalIPv6PrefixLen: number; MacAddress: string; } }; Node?: { ID: string; IP: string; Addr: string; Name: string; Cpus: number; Memory: number; Labels: any; } }; } interface HostConfig { AutoRemove: boolean; Binds: string[]; ContainerIDFile: string; LogConfig: { Type: string; Config: any; }; NetworkMode: string; PortBindings?: any; RestartPolicy: { Name: string; MaximumRetryCount: number; }; VolumeDriver: string; VolumesFrom?: any; CapAdd?: any; CapDrop?: any; Dns: any[]; DnsOptions: any[]; DnsSearch: any[]; ExtraHosts?: any; IpcMode: string; Links?: any; OomScoreAdj: number; PidMode: string; Privileged: boolean; PublishAllPorts: boolean; ReadonlyRootfs: boolean; SecurityOpt?: any; UTSMode: string; ShmSize: number; ConsoleSize: number[]; Isolation: string; CpuShares: number; CgroupParent: string; BlkioWeight: number; BlkioWeightDevice?: any; BlkioDeviceReadBps?: any; BlkioDeviceWriteBps?: any; BlkioDeviceReadIOps?: any; BlkioDeviceWriteIOps?: any; CpuPeriod: number; CpuQuota: number; CpusetCpus: string; CpusetMems: string; Devices?: any; DiskQuota: number; KernelMemory: number; Memory: number; MemoryReservation: number; MemorySwap: number; MemorySwappiness: number; OomKillDisable: boolean; PidsLimit: number; Ulimits?: any; } interface ImageInspectInfo { Id: string; RepoTags: string[]; RepoDigests: string[]; Parent: string; Comment: string; Created: string; Container: string; ContainerConfig: { Hostname: string; Domainname: string; User: string; AttachStdin: boolean; AttachStdout: boolean; AttachStderr: boolean; ExposedPorts: { [portAndProtocol: string]: {} }; Tty: boolean; OpenStdin: boolean; StdinOnce: boolean; Env: string[]; Cmd: string[]; ArgsEscaped: boolean; Image: string; Volumes: { [path: string]: {} }, WorkingDir: string; Entrypoint?: any; OnBuild?: any[]; Labels: { [label: string]: string } }; DockerVersion: string; Author: string; Config: { Hostname: string; Domainname: string; User: string; AttachStdin: boolean; AttachStdout: boolean; AttachStderr: boolean; ExposedPorts: { [portAndProtocol: string]: {} } Tty: boolean; OpenStdin: boolean; StdinOnce: boolean; Env: string[]; Cmd: string[]; ArgsEscaped: boolean; Image: string; Volumes: { [path: string]: {} }, WorkingDir: string; Entrypoint?: any; OnBuild: any[]; Labels: { [label: string]: string } }; Architecture: string; Os: string; Size: number; VirtualSize: number; GraphDriver: { Name: string; Data: { DeviceId: string; DeviceName: string; DeviceSize: string; } }; } interface ContainerCreateOptions { name?: string; Hostname?: string; Domainname?: string; User?: string; AttachStdin?: boolean; AttachStdout?: boolean; AttachStderr?: boolean; Tty?: boolean; OpenStdin?: boolean; StdinOnce?: boolean; Env?: string[]; Cmd?: string[]; Entrypoint?: string; Image?: string; Labels?: { [label: string]: string }; Volumes?: { [volume: string]: {} }; WorkingDir?: string; NetworkDisabled?: boolean; MacAddress?: boolean; ExposedPorts?: { [port: string]: {} }; StopSignal?: string; HostConfig?: { AutoRemove?: boolean; Binds?: string[]; Links?: string[]; Memory?: number; MemorySwap?: number; MemoryReservation?: number; KernelMemory?: number; CpuPercent?: number; CpuShares?: number; CpuPeriod?: number; CpuQuota?: number; CpusetMems?: string; MaximumIOps?: number; MaxmimumIOBps?: number; BlkioWeightDevice?: Array<{}>; BlkioDeviceReadBps?: Array<{}>; BlkioDeviceReadIOps?: Array<{}>; BlkioDeviceWriteBps?: Array<{}>; BlkioDeviceWriteIOps?: Array<{}>; MemorySwappiness?: number; OomKillDisable?: boolean; OomScoreAdj?: number; PidMode?: string; PidsLimit?: number; PortBindings?: { [portAndProtocol: string]: Array<{ [index: string]: string }> }; PublishAllPorts?: boolean; Privileged?: boolean; ReadonlyRootfs?: boolean; Dns?: string[]; DnsOptions?: string[]; DnsSearch?: string[]; ExtraHosts?: any; VolumesFrom?: string[]; CapAdd?: string[]; CapDrop?: string[]; GroupAdd?: string[]; RestartPolicy?: { [index: string]: number | string }; NetworkMode?: string; Devices?: any[]; Sysctls?: { [index: string]: string }; Ulimits?: Array<{}>; LogConfig?: { [index: string]: string | {} }; SecurityOpt?: { [index: string]: any }; CgroupParent?: string; VolumeDriver?: string; ShmSize?: number; }; NetworkingConfig?: { EndpointsConfig?: { [index: string]: any; isolated_nw?: { [index: string]: any; IPAMConfig?: { IPv4Address?: string; IPv6Adress?: string; LinkLocalIPs?: string[]; } Links?: string[]; Aliases?: string[]; } } }; } interface KeyObject { pem: string | Buffer; passphrase?: string; } interface DockerOptions { socketPath?: string; host?: string; port?: number | string; ca?: string | string[] | Buffer | Buffer[]; cert?: string | string[] | Buffer | Buffer[]; key?: string | string[] | Buffer | Buffer[] | KeyObject[]; protocol?: "https" | "http"; timeout?: number; version?: string; Promise?: typeof Promise; } interface SecretVersion { Index: number; } interface ServiceSpec { Name: string; } interface SecretInfo { ID: string; Version: SecretVersion; CreatedAt: string; UpdatedAt?: string; Spec?: ServiceSpec; } interface PluginInfo { Id?: string; Name: string; Enabled: boolean; Settings: PluginSettings; PluginReference?: string; Config: PluginConfig; } type PluginInspectInfo = PluginInfo; interface PluginSettings { Mounts: PluginMount[]; Env: string[]; Args: string[]; Devices: PluginDevice[]; } interface PluginConfig { Description: string; Documentation: string; Interface: any; Entrypoint: string[]; WorkDir: string; User?: User; Network: Network; Linux: Linux; PropagatedMount: string; Mounts: PluginMount[]; Env: PluginEnv[]; Args: Args; rootfs: any; } interface Interface { Types: PluginInterfaceType[]; Socket: string; } interface PluginInterfaceType { Prefix: string; Capability: string; Version: string; } interface PluginMount { Name: string; Description: string; Settable: string[]; Source: string; Destination: string; Type: string; Options: string[]; } interface Linux { Capabilities: string[]; AllowAllDevices: boolean; Devices: PluginDevice[]; } interface PluginDevice { Name: string; Description: string; Settable: string[]; Path: string; } interface Network { Type: string; } interface PluginEnv { Name: string; Description: string; Settable: string[]; Value: string; } interface Args { Name: string; Description: string; Settable: string[]; Value: string; } interface User { UID: number; GID: number; } interface ImageRemoveInfo { Untagged: string; Deleted: string; } interface PruneImagesInfo { ImagesDeleted: ImageRemoveInfo[]; SpaceReclaimed: number; } interface PruneVolumesInfo { VolumesDeleted: string[]; SpaceReclaimed: number; } interface PruneContainersInfo { ContainersDeleted: string[]; SpaceReclaimed: number; } interface PruneNetworksInfo { NetworksDeleted: string[]; } interface ContainerLogsOptions { stdout?: boolean; stderr?: boolean; follow?: boolean; since?: number; details?: boolean; tail?: number; timestamps?: boolean; } interface ImageBuildContext { context: string; src: string[]; } } type Callback = (error?: any, result?: T) => void; declare class Dockerode { constructor(options?: Dockerode.DockerOptions); createContainer(options: Dockerode.ContainerCreateOptions, callback: Callback): void; createContainer(options: Dockerode.ContainerCreateOptions): Promise; createImage(options: {}, callback: Callback): void; createImage(auth: any, options: {}, callback: Callback): void; createImage(options: {}): Promise; createImage(auth: any, options: {}): Promise; loadImage(file: string | NodeJS.ReadableStream, options: {}, callback: Callback): void; loadImage(file: string | NodeJS.ReadableStream, callback: Callback): void; loadImage(file: string | NodeJS.ReadableStream, options?: {}): Promise; importImage(file: string | NodeJS.ReadableStream, options: {}, callback: Callback): void; importImage(file: string | NodeJS.ReadableStream, callback: Callback): void; importImage(file: string | NodeJS.ReadableStream, options?: {}): Promise; checkAuth(options: any, callback: Callback): void; checkAuth(options: any): Promise; buildImage(file: string | NodeJS.ReadableStream | Dockerode.ImageBuildContext, options: {}, callback: Callback): void; buildImage(file: string | NodeJS.ReadableStream | Dockerode.ImageBuildContext, callback: Callback): void; buildImage(file: string | NodeJS.ReadableStream | Dockerode.ImageBuildContext, options?: {}): Promise; getContainer(id: string): Dockerode.Container; getImage(name: string): Dockerode.Image; getVolume(name: string): Dockerode.Volume; getPlugin(name: string, remote: any): Dockerode.Plugin; getService(id: string): Dockerode.Service; getTask(id: string): Dockerode.Task; getNode(id: string): Dockerode.Node; getNetwork(id: string): Dockerode.Network; getSecret(id: string): Dockerode.Secret; getExec(id: string): Dockerode.Exec; listContainers(options: {}, callback: Callback): void; listContainers(callback: Callback): void; listContainers(options?: {}): Promise; listImages(options: {}, callback: Callback): void; listImages(callback: Callback): void; listImages(options?: {}): Promise; listServices(options: {}, callback: Callback): void; listServices(callback: Callback): void; listServices(options?: {}): Promise; listNodes(options: {}, callback: Callback): void; listNodes(callback: Callback): void; listNodes(options?: {}): Promise; listTasks(options: {}, callback: Callback): void; listTasks(callback: Callback): void; listTasks(options?: {}): Promise; listSecrets(options: {}, callback: Callback): void; listSecrets(callback: Callback): void; listSecrets(options?: {}): Promise; listPlugins(options: {}, callback: Callback): void; listPlugins(callback: Callback): void; listPlugins(options?: {}): Promise; listVolumes(options: {}, callback: Callback): void; listVolumes(callback: Callback): void; listVolumes(options?: {}): Promise; listNetworks(options: {}, callback: Callback): void; listNetworks(callback: Callback): void; listNetworks(options?: {}): Promise; createSecret(options: {}, callback: Callback): void; createSecret(options: {}): Promise; createPlugin(options: {}, callback: Callback): void; createPlugin(options: {}): Promise; createVolume(options: {}, callback: Callback): void; createVolume(options: {}): Promise; createService(options: {}, callback: Callback): void; createService(options: {}): Promise; createNetwork(options: {}, callback: Callback): void; createNetwork(options: {}): Promise; searchImages(options: {}, callback: Callback): void; searchImages(options: {}): Promise; pruneImages(options: {}, callback: Callback): void; pruneImages(callback: Callback): void; pruneImages(options?: {}): Promise; pruneContainers(options: {}, callback: Callback): void; pruneContainers(callback: Callback): void; pruneContainers(options?: {}): Promise; pruneVolumes(options: {}, callback: Callback): void; pruneVolumes(callback: Callback): void; pruneVolumes(options?: {}): Promise; pruneNetworks(options: {}, callback: Callback): void; pruneNetworks(callback: Callback): void; pruneNetworks(options?: {}): Promise; info(callback: Callback): void; info(): Promise; df(callback: Callback): void; df(): Promise; version(callback: Callback): void; version(): Promise; ping(callback: Callback): void; ping(): Promise; getEvents(options: {}, callback: Callback): void; getEvents(callback: Callback): void; getEvents(options?: {}): Promise; pull(repoTag: string, options: {}, callback: Callback, auth?: {}): Dockerode.Image; pull(repoTag: string, options: {}, auth?: {}): Promise; run(image: string, cmd: string[], outputStream: NodeJS.WritableStream, createOptions: {}, startOptions: {}, callback: Callback): events.EventEmitter; run(image: string, cmd: string[], outputStream: NodeJS.WritableStream, startOptions: {}, callback: Callback): events.EventEmitter; run(image: string, cmd: string[], outputStream: NodeJS.WritableStream, callback: Callback): events.EventEmitter; run(image: string, cmd: string[], outputStream: NodeJS.WritableStream, createOptions: {}, callback: Callback): events.EventEmitter; run(image: string, cmd: string[], outputStream: NodeJS.WritableStream, createOptions?: {}, startOptions?: {}): Promise; swarmInit(options: {}, callback: Callback): void; swarmInit(options: {}): Promise; swarmJoin(options: {}, callback: Callback): void; swarmJoin(options: {}): Promise; swarmLeave(options: {}, callback: Callback): void; swarmLeave(options: {}): Promise; swarmUpdate(options: {}, callback: Callback): void; swarmUpdate(options: {}): Promise; swarmInspect(callback: Callback): void; swarmInspect(): Promise; modem: any; } export = Dockerode;