// Type definitions for dockerode 3.2 // Project: https://github.com/apocas/dockerode // Definitions by: Carl Winkler // Nicolas Laplante // ByeongHun Yoo // Ray Fang // Marius Meisenzahl // Rob Moran // Cameron Diver // Pascal Sthamer // Stuart Thomson // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 /// import * as stream from 'stream'; import * as events from 'events'; // The modem parameter is an instance of docker-modem, which is missing type declarations. // https://github.com/apocas/docker-modem declare namespace Dockerode { class Container { constructor(modem: any, id: string); modem: any; id: string; 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: ExecCreateOptions, callback: Callback): void; exec(options: ExecCreateOptions): 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(options: ContainerWaitOptions, callback: Callback): void; wait(callback: Callback): void; wait(options?: ContainerWaitOptions): 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; } class Image { constructor(modem: any, name: string); modem: any; id: string; 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; } class Volume { constructor(modem: any, name: string); modem: any; name: string; inspect(callback: Callback): void; inspect(): Promise; remove(options: {}, callback: Callback): void; remove(callback: Callback): void; remove(options?: {}): Promise; } class Service { constructor(modem: any, id: string); modem: any; id: string; 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; logs(options: ContainerLogsOptions, callback: Callback): void; logs(callback: Callback): void; logs(options?: ContainerLogsOptions): Promise; } class Task { constructor(modem: any, id: string); modem: any; id: string; inspect(callback: Callback): void; inspect(): Promise; } class Node { constructor(modem: any, id: string); modem: any; id: string; 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; } class Plugin { constructor(modem: any, name: string, remote?: any); 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; } class Secret { constructor(modem: any, id: string); modem: any; id: string; 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; } class Network { constructor(modem: any, id: string); modem: any; id: string; 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; } class Exec { constructor(modem: any, id: string); modem: any; id: string; inspect(callback: Callback): void; inspect(): Promise; start(options: ExecStartOptions, callback: Callback): void; start(options: ExecStartOptions): Promise; resize(options: {}, callback: Callback): void; resize(options: {}): Promise; } class Config { constructor(modem: any, id: string); modem: any; id: string; 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; } type Duration = number; 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 }; }; Mounts: Array<{ Name?: string; Type: string; Source: string; Destination: string; Driver?: string; Mode: string; RW: boolean; Propagation: string; }>; } 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; } // Information returned from inspecting a network interface NetworkInspectInfo { Name: string; Id: string; Created: string; Scope: string; Driver: string; EnableIPv6: boolean; IPAM?: IPAM; Internal: boolean; Attachable: boolean; Ingress: boolean; ConfigFrom?: { Network: string; }; ConfigOnly: boolean; Containers?: { [id: string]: NetworkContainer }; Options?: { [key: string]: string }; Labels?: { [key: string]: string }; } interface NetworkCreateOptions { Name: string; CheckDuplicate?: boolean; Driver?: string; Internal?: boolean; Attachable?: boolean; Ingress?: boolean; IPAM?: IPAM; EnableIPv6?: boolean; Options?: { [option: string]: string }; Labels?: { [label: string]: string }; } interface NetworkContainer { Name: string; EndpointID: string; MacAddress: string; IPv4Address: string; IPv6Address: string; } /* tslint:disable:interface-name */ interface IPAM { Driver: string; Config?: Array<{ [key: string]: string }>; Options?: { [key: string]: string }; } /* tslint:enable:interface-name */ interface VolumeInspectInfo { Name: string; Driver: string; Mountpoint: string; Status?: { [key: string]: string }; Labels: { [key: string]: string }; Scope: 'local' | 'global'; // Field is always present, but sometimes is null Options: { [key: string]: string } | null; // Field is sometimes present, and sometimes null UsageData?: { Size: number; RefCount: number; } | null; } 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; Health?: { Status: string; FailingStreak: number; Log: Array<{ Start: string; End: string; ExitCode: number; Output: string; }>; }; }; Image: string; ResolvConfPath: string; HostnamePath: string; HostsPath: string; LogPath: string; Name: string; RestartCount: number; Driver: string; Platform: string; MountLabel: string; ProcessLabel: string; AppArmorProfile: string; ExecIDs?: string[]; HostConfig: HostConfig; GraphDriver: { Name: string; Data: { DeviceId: string; DeviceName: string; DeviceSize: string; }; }; Mounts: Array<{ Name?: string; 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?: string | string[]; 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 NetworkStats { [name: string]: { rx_bytes: number; rx_dropped: number; rx_errors: number; rx_packets: number; tx_bytes: number; tx_dropped: number; tx_errors: number; tx_packets: number; }; } interface CPUStats { cpu_usage: { percpu_usage: number[]; usage_in_usermode: number; total_usage: number; usage_in_kernelmode: number; }; system_cpu_usage: number; online_cpus: number; throttling_data: { periods: number; throttled_periods: number; throttled_time: number; }; } interface MemoryStats { stats: { total_pgmajfault: number; cache: number; mapped_file: number; total_inactive_file: number; pgpgout: number; rss: number; total_mapped_file: number; writeback: number; unevictable: number; pgpgin: number; total_unevictable: number; pgmajfault: number; total_rss: number; total_rss_huge: number; total_writeback: number; total_inactive_anon: number; rss_huge: number; hierarchical_memory_limit: number; total_pgfault: number; total_active_file: number; active_anon: number; total_active_anon: number; total_pgpgout: number; total_cache: number; inactive_anon: number; active_file: number; pgfault: number; inactive_file: number; total_pgpgin: number; }; max_usage: number; usage: number; failcnt: number; limit: number; } interface ContainerStats { read: string; pid_stats: { current: number; }; networks: NetworkStats; memory_stats: MemoryStats; blkio_stats: {}; cpu_stats: CPUStats; precpu_stats: CPUStats; } interface HostConfig { AutoRemove?: boolean; Binds?: string[]; ContainerIDFile?: string; LogConfig?: { Type: string; Config: any; }; NetworkMode?: string; PortBindings?: any; RestartPolicy?: RestartPolicy; VolumeDriver?: string; VolumesFrom?: any; Mounts?: MountConfig; CapAdd?: any; CapDrop?: any; Dns?: any[]; DnsOptions?: any[]; DnsSearch?: any[]; ExtraHosts?: any; GroupAdd?: string[]; IpcMode?: string; Cgroup?: string; Links?: any; OomScoreAdj?: number; PidMode?: string; Privileged?: boolean; PublishAllPorts?: boolean; ReadonlyRootfs?: boolean; SecurityOpt?: any; StorageOpt?: { [option: string]: string }; Tmpfs?: { [dir: string]: string }; UTSMode?: string; UsernsMode?: string; ShmSize?: number; Sysctls?: { [index: string]: string }; Runtime?: string; ConsoleSize?: number[]; Isolation?: string; MaskedPaths?: string[]; ReadonlyPaths?: 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; DeviceCgroupRules?: string[]; DeviceRequests?: DeviceRequest[]; 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?: string | string[]; 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?: string | string[]; OnBuild: any[]; Labels: { [label: string]: string }; }; Architecture: string; Os: string; Size: number; VirtualSize: number; GraphDriver: { Name: string; Data: { DeviceId: string; DeviceName: string; DeviceSize: string; }; }; RootFS: { Type: string; Layers?: string[]; BaseLayer?: string; }; } interface AuthConfig { username: string; password: string; serveraddress: string; email?: string; } interface PortBinding { HostIp?: string; HostPort?: string; } interface PortMap { [key: string]: PortBinding[]; } interface RestartPolicy { Name: string; MaximumRetryCount?: number; } type LoggingDriverType = | 'json-file' | 'syslog' | 'journald' | 'gelf' | 'fluentd' | 'awslogs' | 'splunk' | 'etwlogs' | 'none'; interface LogConfig { Type: LoggingDriverType; Config?: { [key: string]: string }; } interface DeviceMapping { PathOnHost: string; PathInContainer: string; CgroupPermissions: string; } interface DeviceRequest { Driver?: string; Count?: number; DeviceIDs?: string[]; Capabilities?: string[][]; Options?: { [key: string]: string }; } /* tslint:disable:interface-name */ interface IPAMConfig { IPv4Address?: string; IPv6Address?: string; LinkLocalIPs?: string[]; } /* tslint:enable:interface-name */ interface EndpointSettings { IPAMConfig?: IPAMConfig; Links?: string[]; Aliases?: string[]; NetworkID?: string; EndpointID?: string; Gateway?: string; IPAddress?: string; IPPrefixLen?: number; IPv6Gateway?: string; GlobalIPv6Address?: string; GlobalIPV6PrefixLen?: number; MacAddress?: string; DriverOpts?: { [key: string]: string }; } interface EndpointsConfig { [key: string]: EndpointSettings; } interface ExecCreateOptions { AttachStdin?: boolean; AttachStdout?: boolean; AttachStderr?: boolean; DetachKeys?: string; Tty?: boolean; Env?: string[]; Cmd?: string[]; Privileged?: boolean; User?: string; WorkingDir?: string; } interface ExecInspectInfo { CanRemove: boolean; DetachKeys: string; ID: string; Running: boolean; ExitCode: number | null; ProcessConfig: { privileged: boolean; user: string; tty: boolean; entrypoint: string; arguments: string[]; }; OpenStdin: boolean; OpenStderr: boolean; OpenStdout: boolean; ContainerID: string; Pid: number; } interface ExecStartOptions { // hijack and stdin are used by docker-modem hijack?: boolean; stdin?: boolean; // Detach and Tty are used by Docker's API Detach?: boolean; Tty?: boolean; } type MountType = 'bind' | 'volume' | 'tmpfs'; type MountConsistency = 'default' | 'consistent' | 'cached' | 'delegated'; type MountPropagation = 'private' | 'rprivate' | 'shared' | 'rshared' | 'slave' | 'rslave'; interface MountSettings { Target: string; Source: string; Type: MountType; ReadOnly?: boolean; Consistency?: MountConsistency; BindOptions?: { Propagation: MountPropagation; }; VolumeOptions?: { NoCopy: boolean; Labels: { [label: string]: string }; DriverConfig: { Name: string; Options: { [option: string]: string }; }; }; TmpfsOptions?: { SizeBytes: number; Mode: number; }; } type MountConfig = MountSettings[]; 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 | string[]; Image?: string; Labels?: { [label: string]: string }; Volumes?: { [volume: string]: {} }; WorkingDir?: string; NetworkDisabled?: boolean; MacAddress?: boolean; ExposedPorts?: { [port: string]: {} }; StopSignal?: string; StopTimeout?: number; HostConfig?: HostConfig; NetworkingConfig?: { EndpointsConfig?: EndpointsConfig; }; } interface KeyObject { pem: string | Buffer; passphrase?: string; } interface DockerOptions { socketPath?: string; host?: string; port?: number | string; username?: string; ca?: string | string[] | Buffer | Buffer[]; cert?: string | string[] | Buffer | Buffer[]; key?: string | string[] | Buffer | Buffer[] | KeyObject[]; protocol?: 'https' | 'http' | 'ssh'; timeout?: number; version?: string; sshAuthAgent?: string; Promise?: typeof Promise; } interface GetEventsOptions { since?: number; until?: number; filters?: | string | { config?: string; container?: string[]; daemon?: string[]; event?: string[]; image?: string[]; label?: string[]; network?: string[]; node?: string[]; plugin?: string[]; scope?: Array<'local' | 'swarm'>; secret?: string[]; service?: string[]; type?: Array< | 'container' | 'image' | 'volume' | 'network' | 'daemon' | 'plugin' | 'service' | 'node' | 'secret' | 'config' >; volume?: string[]; }; } interface SecretVersion { Index: number; } interface Annotations { Name?: string; Labels?: { [name: string]: string }; } interface ResourceLimits { NanoCPUs?: number; MemoryBytes?: number; Pids?: number; } interface NamedGenericResource { Kind?: string; Value?: string; } interface DiscreteGenericResource { Kind?: string; Value?: number; } type GenericResource = NamedGenericResource | DiscreteGenericResource; interface RestartPolicy { Condition?: string; Delay?: number; MaxAttempts?: number; Window?: number; } interface Resources { NanoCPUs?: number; MemoryBytes?: number; GenericResources?: GenericResource[]; } interface ResourceRequirements { Limits?: ResourceLimits; Reservations?: Resources; } interface Placement { Constraints?: string[]; Preferences?: Array<{ Spread: { SpreadDescriptor: string } }>; MaxReplicas?: number; Platforms?: Array<{ Architecture: string; OS: string; }>; } interface NetworkAttachmentConfig { Target?: string; Aliases?: string[]; DriverOpts?: { [key: string]: string }; } interface Privileges { CredentialSpec?: { Config?: string; File?: string; Registry?: string; }; SELinuxContext?: { Disable?: boolean; User?: string; Role?: string; Type?: string; Level?: string; }; } interface HealthConfig { Test?: string[]; Interval?: number; Timeout?: number; StartPeriod?: number; Retries?: number; } interface DNSConfig { Nameservers?: string[]; Search?: string[]; Options?: string[]; } interface SecretReference { File?: { Name?: string; UID?: string; GID?: string; Mode?: number; }; SecretID?: string; SecretName?: string; } interface Ulimit { Name?: string; Hard?: number; Soft?: number; } interface ContainerSpec { Image?: string; Labels?: { [label: string]: string }; Command?: string[]; Args?: string[]; Hostname?: string; Env?: string[]; Dir?: string; User?: string; Groups?: string[]; Privileges?: Privileges; Init?: boolean; TTY?: boolean; OpenStdin?: boolean; ReadOnly?: boolean; Mounts?: MountSettings[]; StopSignal?: string; StopGracePeriod?: number; HealthCheck?: HealthConfig; Hosts?: string[]; DNSConfig?: DNSConfig; Secrets?: SecretReference[]; Isolation?: string; Sysctls?: { [key: string]: string }; CapabilityAdd?: string[]; CapabilityDrop?: string[]; Ulimits?: Ulimit[]; } interface PluginSpec { Name?: string; Remote?: string; Privileges?: { Name?: string; Description?: string; Value?: string[]; }; Disabled?: boolean; Env?: string[]; } interface TaskSpecBase { Resources?: ResourceRequirements; RestartPolicy?: RestartPolicy; Placement?: Placement; Networks?: NetworkAttachmentConfig[]; LogDriver?: { Name?: string; Options?: { [key: string]: string }; }; ForceUpdate?: number; Runtime?: string; } interface ContainerTaskSpec extends TaskSpecBase { ContainerSpec?: ContainerSpec; } interface PluginTaskSpec extends TaskSpecBase { Runtime: 'plugin'; PluginSpec: PluginSpec; } interface NetworkAttachmentTaskSpec extends TaskSpecBase { Runtime: 'attachment'; NetworkAttachmentSpec: { ContainerID: string; }; } type TaskSpec = ContainerTaskSpec | PluginTaskSpec | NetworkAttachmentTaskSpec; interface ServiceMode { Replicated?: { Replicas?: number }; Global?: {}; ReplicatedJob?: { MaxConcurrent?: number; TotalCompletions?: number; }; GlobalJob?: {}; } interface UpdateConfig { Parallelism: number; Delay?: number; FailureAction?: string; Monitor?: number; MaxFailureRatio?: number; Order: string; } interface PortConfig { Name?: string; Protocol?: 'tcp' | 'udp' | 'sctp'; TargetPort?: number; PublishedPort?: number; PublishMode?: 'ingress' | 'host'; } interface EndpointSpec { Mode?: string; Ports?: PortConfig[]; } interface EndpointVirtualIP { NetworkID?: string; Addr?: string; } interface Endpoint { Spec?: EndpointSpec; Ports?: PortConfig[]; VirtualIPs?: EndpointVirtualIP[]; } interface ServiceSpec extends Annotations { TaskTemplate?: TaskSpec; Mode?: ServiceMode; UpdateConfig?: UpdateConfig; RollbackConfig?: UpdateConfig; Networks?: NetworkAttachmentConfig[]; EndpointSpec?: EndpointSpec; } interface ServiceCreateResponse { ID: string; Warnings?: string[]; } interface ServiceListOptions { Filters: { id?: string[]; label?: string[]; mode?: Array<'replicated' | 'global'>; name?: string[]; }; } interface Version { Index?: number; } interface Meta { Version?: Version; CreatedAt?: string; UpdatedAt?: string; } type UpdateState = 'updating' | 'paused' | 'completed' | 'rollback_started' | 'rollback_paused' | 'rollback_completed'; interface UpdateStatus { State?: UpdateState; StartedAt?: string; CompletedAt?: string; Message?: string; } interface ServiceStatus { RunningTasks: number; DesiredTasks: number; CompletedTasks: number; } interface JobStatus { JobIteration: Version; LastExecution?: string; } interface Service extends Meta { ID: string; Spec?: ServiceSpec; PreviousSpec?: ServiceSpec; Endpoint?: Endpoint; UpdateStatus?: UpdateStatus; ServiceStatus?: ServiceStatus; JobStatus?: JobStatus; } interface OrchestrationConfig { TaskHistoryRetentionLimit?: number; } interface RaftConfig { SnapshotInterval?: number; KeepOldSnapshots?: number; LogEntriesForSlowFollowers?: number; ElectionTick?: number; HeartbeatTick?: number; } interface DispatcherConfig { HeartbeatPeriod?: Duration; } type ExternalCAProtocol = 'cfssl' | string; interface ExternalCA { Protocol: ExternalCAProtocol; URL: string; Options?: { [key: string]: string }; CACert: string; } interface CAConfig { NodeCertExpiry?: Duration; ExternalCAs?: ExternalCA[]; SigningCACert?: string; SigningCAKey?: string; ForceRotate?: number; } interface TaskDefaults { LogDriver?: Driver; } interface EncryptionConfig { AutoLockManagers: boolean; } interface Spec extends Annotations { Orchestration?: OrchestrationConfig; Raft: RaftConfig; Dispatcher?: DispatcherConfig; CAConfig?: CAConfig; TaskDefaults?: TaskDefaults; EncryptionConfig?: EncryptionConfig; } interface TLSInfo { TrustRoot?: string; CertIssuerSubject?: string; CertIssuerPublicKey?: string; } interface ClusterInfo extends Meta { ID: string; Spec: Spec; TLSInfo: TLSInfo; RootRotationInProgress: boolean; DefaultAddrPool: string[]; SubnetSize: number; DataPathPort: number; } interface JoinTokens { Worker: string; Manager: string; } interface Swarm extends ClusterInfo { JoinTokens: JoinTokens; } interface Driver { Name: string; Options?: { [key: string]: string }; } interface SecretSpec extends Annotations { Data?: string; Driver?: Driver; Templating?: Driver; } interface Secret extends Meta { ID: string; Spec?: SecretSpec; } interface ConfigInfo { ID: string; Version: SecretVersion; CreatedAt: string; UpdatedAt?: string; Spec?: ConfigSpec; } interface ConfigSpec { Name: string; Labels: { [label: string]: string }; Data: string; } interface ConfigVersion { Index: number; } 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 ContainerWaitOptions { /** Since v1.30 */ condition?: 'not-running' | 'next-exit' | 'removed'; } interface ContainerLogsOptions { stdout?: boolean; stderr?: boolean; follow?: boolean; since?: number; details?: boolean; tail?: number; timestamps?: boolean; } interface ImageBuildContext { context: string; src: string[]; } interface DockerVersion { ApiVersion: string; Arch: string; BuildTime: Date; Components: Array<{ Details: { ApiVersion: string; Arch: string; BuildTime: Date; Experimental: string; GitCommit: string; GoVersion: string; KernelVersion: string; Os: string; }; Name: string; Version: string; }>; GitCommit: string; GoVersion: string; KernelVersion: string; MinAPIVersion: string; Os: string; Platform: { Name: string; }; Version: 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; getConfig(id: string): Dockerode.Config; 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: Dockerode.ServiceListOptions, callback: Callback): void; listServices(callback: Callback): void; listServices(options?: Dockerode.ServiceListOptions): 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<{ Volumes: Dockerode.VolumeInspectInfo[]; Warnings: string[]; }>, ): void; listVolumes( callback: Callback<{ Volumes: Dockerode.VolumeInspectInfo[]; Warnings: string[]; }>, ): void; listVolumes(options?: {}): Promise<{ Volumes: Dockerode.VolumeInspectInfo[]; Warnings: string[]; }>; listNetworks(options: {}, callback: Callback): void; listNetworks(callback: Callback): void; listNetworks(options?: {}): Promise; listConfigs(options: {}, callback: Callback): void; listConfigs(callback: Callback): void; listConfigs(options?: {}): Promise; createSecret(options: {}, callback: Callback): void; createSecret(options: {}): Promise; createConfig(options: {}, callback: Callback): void; createConfig(options: {}): Promise; createPlugin(options: {}, callback: Callback): void; createPlugin(options: {}): Promise; createVolume(options: {}, callback: Callback): void; createVolume(options: {}): Promise; createService(options: Dockerode.ServiceSpec, callback: Callback): void; createService(options: Dockerode.ServiceSpec): Promise; createNetwork(options: Dockerode.NetworkCreateOptions, callback: Callback): void; createNetwork(options: Dockerode.NetworkCreateOptions): 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: Dockerode.GetEventsOptions, callback: Callback): void; getEvents(callback: Callback): void; getEvents(options?: Dockerode.GetEventsOptions): Promise; pull(repoTag: string, options: {}, callback: Callback, auth?: {}): Dockerode.Image; pull(repoTag: string, options?: {}): Promise; run( image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], createOptions: {}, startOptions: {}, callback: Callback, ): events.EventEmitter; run( image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], startOptions: {}, callback: Callback, ): events.EventEmitter; run( image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], callback: Callback, ): events.EventEmitter; run( image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], createOptions: {}, callback: Callback, ): events.EventEmitter; run( image: string, cmd: string[], outputStream: NodeJS.WritableStream | 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;