UNPKG

35.2 kBTypeScriptView Raw
1// Type definitions for dockerode 2.5
2// Project: https://github.com/apocas/dockerode
3// Definitions by: Carl Winkler <https://github.com/seikho>
4// Nicolas Laplante <https://github.com/nlaplante>
5// ByeongHun Yoo <https://github.com/isac322>
6// Ray Fang <https://github.com/lazarusx>
7// Marius Meisenzahl <https://github.com/meisenzahl>
8// Rob Moran <https://github.com/thegecko>
9// Cameron Diver <https://github.com/CameronDiver>
10// Pascal Sthamer <https://github.com/p4sca1>
11// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
12// TypeScript Version: 2.2
13
14/// <reference types="node" />
15
16import * as stream from 'stream';
17import * as events from 'events';
18
19// The modem parameter is an instance of docker-modem, which is missing type declarations.
20// https://github.com/apocas/docker-modem
21
22declare namespace Dockerode {
23 class Container {
24 constructor(modem: any, id: string);
25
26 modem: any;
27 id: string;
28
29 inspect(options: {}, callback: Callback<ContainerInspectInfo>): void;
30 inspect(callback: Callback<ContainerInspectInfo>): void;
31 inspect(options?: {}): Promise<ContainerInspectInfo>;
32
33 rename(options: {}, callback: Callback<any>): void;
34 rename(options: {}): Promise<any>;
35
36 update(options: {}, callback: Callback<any>): void;
37 update(options: {}): Promise<any>;
38
39 top(options: {}, callback: Callback<any>): void;
40 top(callback: Callback<any>): void;
41 top(options?: {}): Promise<any>;
42
43 changes(callback: Callback<any>): void;
44 changes(): Promise<any>;
45
46 export(callback: Callback<NodeJS.ReadableStream>): void;
47 export(): Promise<NodeJS.ReadableStream>;
48
49 start(options: {}, callback: Callback<any>): void;
50 start(callback: Callback<any>): void;
51 start(options?: {}): Promise<any>;
52
53 pause(options: {}, callback: Callback<any>): void;
54 pause(callback: Callback<any>): void;
55 pause(options?: {}): Promise<any>;
56
57 unpause(options: {}, callback: Callback<any>): void;
58 unpause(callback: Callback<any>): void;
59 unpause(options?: {}): Promise<any>;
60
61 exec(options: {}, callback: Callback<any>): void;
62 exec(options: {}): Promise<any>;
63
64 commit(options: {}, callback: Callback<any>): void;
65 commit(callback: Callback<any>): void;
66 commit(options?: {}): Promise<any>;
67
68 stop(options: {}, callback: Callback<any>): void;
69 stop(callback: Callback<any>): void;
70 stop(options?: {}): Promise<any>;
71
72 restart(options: {}, callback: Callback<any>): void;
73 restart(callback: Callback<any>): void;
74 restart(options?: {}): Promise<any>;
75
76 kill(options: {}, callback: Callback<any>): void;
77 kill(callback: Callback<any>): void;
78 kill(options?: {}): Promise<any>;
79
80 resize(options: {}, callback: Callback<any>): void;
81 resize(callback: Callback<any>): void;
82 resize(options?: {}): Promise<any>;
83
84 wait(callback: Callback<any>): void;
85 wait(): Promise<any>;
86
87 remove(options: {}, callback: Callback<any>): void;
88 remove(callback: Callback<any>): void;
89 remove(options?: {}): Promise<any>;
90
91 /** Deprecated since RAPI v1.20 */
92 copy(options: {}, callback: Callback<any>): void;
93 /** Deprecated since RAPI v1.20 */
94 copy(callback: Callback<any>): void;
95 /** Deprecated since RAPI v1.20 */
96 copy(options?: {}): Promise<any>;
97
98 getArchive(options: {}, callback: Callback<NodeJS.ReadableStream>): void;
99 getArchive(options: {}): Promise<NodeJS.ReadableStream>;
100
101 infoArchive(options: {}, callback: Callback<any>): void;
102 infoArchive(options: {}): Promise<any>;
103
104 /** @param file Filename (will read synchronously), Buffer or stream */
105 putArchive(file: string | Buffer | NodeJS.ReadableStream, options: {}, callback: Callback<NodeJS.WritableStream>): void;
106 putArchive(file: string | Buffer | NodeJS.ReadableStream, options: {}): Promise<NodeJS.ReadWriteStream>;
107
108 logs(options: ContainerLogsOptions, callback: Callback<NodeJS.ReadableStream>): void;
109 logs(callback: Callback<NodeJS.ReadableStream>): void;
110 logs(options?: ContainerLogsOptions): Promise<NodeJS.ReadableStream>;
111
112 stats(options: {}, callback: Callback<ContainerStats>): void;
113 stats(callback: Callback<ContainerStats>): void;
114 stats(options?: {}): Promise<ContainerStats>;
115
116 attach(options: {}, callback: Callback<NodeJS.ReadWriteStream>): void;
117 attach(options: {}): Promise<NodeJS.ReadWriteStream>;
118 }
119
120 class Image {
121 constructor(modem: any, name: string);
122
123 modem: any;
124 id: string;
125
126 inspect(callback: Callback<ImageInspectInfo>): void;
127 inspect(): Promise<ImageInspectInfo>;
128
129 history(callback: Callback<any>): void;
130 history(): Promise<any>;
131
132 get(callback: Callback<NodeJS.ReadableStream>): void;
133 get(): Promise<NodeJS.ReadableStream>;
134
135 push(options: {}, callback: Callback<NodeJS.ReadableStream>): void;
136 push(callback: Callback<NodeJS.ReadableStream>): void;
137 push(options?: {}): Promise<NodeJS.ReadableStream>;
138
139 tag(options: {}, callback: Callback<any>): void;
140 tag(callback: Callback<any>): void;
141 tag(options?: {}): Promise<any>;
142
143 remove(options: {}, callback: Callback<ImageRemoveInfo>): void;
144 remove(callback: Callback<ImageRemoveInfo>): void;
145 remove(options?: {}): Promise<any>;
146 }
147
148 class Volume {
149 constructor(modem: any, name: string);
150
151 modem: any;
152 name: string;
153
154 inspect(callback: Callback<VolumeInspectInfo>): void;
155 inspect(): Promise<VolumeInspectInfo>;
156
157 remove(options: {}, callback: Callback<any>): void;
158 remove(callback: Callback<any>): void;
159 remove(options?: {}): Promise<any>;
160 }
161
162 class Service {
163 constructor(modem: any, id: string);
164
165 modem: any;
166 id: string;
167
168 inspect(callback: Callback<any>): void;
169 inspect(): Promise<any>;
170
171 remove(options: {}, callback: Callback<any>): void;
172 remove(callback: Callback<any>): void;
173 remove(options?: {}): Promise<any>;
174
175 update(options: {}, callback: Callback<any>): void;
176 update(options: {}): Promise<any>;
177
178 logs(options: ContainerLogsOptions, callback: Callback<NodeJS.ReadableStream>): void;
179 logs(callback: Callback<NodeJS.ReadableStream>): void;
180 logs(options?: ContainerLogsOptions): Promise<NodeJS.ReadableStream>;
181 }
182
183 class Task {
184 constructor(modem: any, id: string);
185
186 modem: any;
187 id: string;
188
189 inspect(callback: Callback<any>): void;
190 inspect(): Promise<any>;
191 }
192
193 class Node {
194 constructor(modem: any, id: string);
195
196 modem: any;
197 id: string;
198
199 inspect(callback: Callback<any>): void;
200 inspect(): Promise<any>;
201
202 update(options: {}, callback: Callback<any>): void;
203 update(callback: Callback<any>): void;
204 update(options?: {}): Promise<any>;
205
206 remove(options: {}, callback: Callback<any>): void;
207 remove(callback: Callback<any>): void;
208 remove(options?: {}): Promise<any>;
209 }
210
211 class Plugin {
212 constructor(modem: any, name: string, remote?: any);
213
214 modem: any;
215 name: string;
216 remote: any;
217
218 inspect(callback: Callback<PluginInspectInfo>): void;
219 inspect(): Promise<PluginInspectInfo>;
220
221 remove(options: {}, callback: Callback<any>): void;
222 remove(callback: Callback<any>): void;
223 remove(options?: {}): Promise<any>;
224
225 privileges(callback: Callback<any>): void;
226 privileges(): Promise<any>;
227
228 pull(options: {}, callback: Callback<any>): void;
229 pull(options: {}): Promise<any>;
230
231 enable(options: {}, callback: Callback<any>): void;
232 enable(callback: Callback<any>): void;
233 enable(options?: {}): Promise<any>;
234
235 disable(options: {}, callback: Callback<any>): void;
236 disable(callback: Callback<any>): void;
237 disable(options?: {}): Promise<any>;
238
239 push(options: {}, callback: Callback<any>): void;
240 push(callback: Callback<any>): void;
241 push(options?: {}): Promise<any>;
242
243 configure(options: {}, callback: Callback<any>): void;
244 configure(callback: Callback<any>): void;
245 configure(options?: {}): Promise<any>;
246
247 upgrade(auth: any, options: {}, callback: Callback<any>): void;
248 upgrade(auth: any, callback: Callback<any>): void;
249 upgrade(auth: any, options?: {}): Promise<any>;
250 }
251
252 class Secret {
253 constructor(modem: any, id: string);
254
255 modem: any;
256 id: string;
257
258 inspect(callback: Callback<SecretInfo>): void;
259 inspect(): Promise<SecretInfo>;
260
261 update(options: {}, callback: Callback<any>): void;
262 update(callback: Callback<any>): void;
263 update(options?: {}): Promise<any>;
264
265 remove(options: {}, callback: Callback<any>): void;
266 remove(callback: Callback<any>): void;
267 remove(options?: {}): Promise<any>;
268 }
269
270 class Network {
271 constructor(modem: any, id: string);
272
273 modem: any;
274 id: string;
275
276 inspect(callback: Callback<any>): void;
277 inspect(): Promise<any>;
278
279 remove(options: {}, callback: Callback<any>): void;
280 remove(callback: Callback<any>): void;
281 remove(options?: {}): Promise<any>;
282
283 connect(options: {}, callback: Callback<any>): void;
284 connect(callback: Callback<any>): void;
285 connect(options?: {}): Promise<any>;
286
287 disconnect(options: {}, callback: Callback<any>): void;
288 disconnect(callback: Callback<any>): void;
289 disconnect(options?: {}): Promise<any>;
290 }
291
292 class Exec {
293 constructor(modem: any, id: string);
294
295 modem: any;
296 id: string;
297
298 inspect(callback: Callback<any>): void;
299 inspect(): Promise<any>;
300
301 start(options: {}, callback: Callback<any>): void;
302 start(options: {}): Promise<any>;
303
304 resize(options: {}, callback: Callback<any>): void;
305 resize(options: {}): Promise<any>;
306 }
307
308 class Config {
309 constructor(modem: any, id: string);
310
311 modem: any;
312 id: string;
313
314 inspect(callback: Callback<ConfigInfo>): void;
315 inspect(): Promise<ConfigInfo>;
316
317 update(options: {}, callback: Callback<any>): void;
318 update(callback: Callback<any>): void;
319 update(options?: {}): Promise<any>;
320
321 remove(options: {}, callback: Callback<any>): void;
322 remove(callback: Callback<any>): void;
323 remove(options?: {}): Promise<any>;
324 }
325
326 interface ImageInfo {
327 Id: string;
328 ParentId: string;
329 RepoTags: string[];
330 RepoDigests?: string[];
331 Created: number;
332 Size: number;
333 VirtualSize: number;
334 Labels: { [label: string]: string };
335 }
336
337 interface ContainerInfo {
338 Id: string;
339 Names: string[];
340 Image: string;
341 ImageID: string;
342 Command: string;
343 Created: number;
344 Ports: Port[];
345 Labels: { [label: string]: string };
346 State: string;
347 Status: string;
348 HostConfig: {
349 NetworkMode: string;
350 };
351 NetworkSettings: {
352 Networks: { [networkType: string]: NetworkInfo }
353 };
354 Mounts: Array<{
355 Name?: string;
356 Type: string;
357 Source: string;
358 Destination: string;
359 Driver?: string;
360 Mode: string;
361 RW: boolean;
362 Propagation: string;
363 }>;
364 }
365
366 interface Port {
367 IP: string;
368 PrivatePort: number;
369 PublicPort: number;
370 Type: string;
371 }
372
373 interface NetworkInfo {
374 IPAMConfig?: any;
375 Links?: any;
376 Aliases?: any;
377 NetworkID: string;
378 EndpointID: string;
379 Gateway: string;
380 IPAddress: string;
381 IPPrefixLen: number;
382 IPv6Gateway: string;
383 GlobalIPv6Address: string;
384 GlobalIPv6PrefixLen: number;
385 MacAddress: string;
386 }
387
388 // Information returned from inspecting a network
389 interface NetworkInspectInfo {
390 Name: string;
391 Id: string;
392 Created: string;
393 Scope: string;
394 Driver: string;
395 EnableIPv6: boolean;
396 IPAM?: IPAM;
397 Internal: boolean;
398 Attachable: boolean;
399 Ingress: boolean;
400 Containers?: { [id: string]: NetworkContainer };
401 Options?: { [key: string]: string };
402 Labels?: { [key: string]: string };
403 }
404
405 interface NetworkContainer {
406 Name: string;
407 EndpointID: string;
408 MacAddress: string;
409 Ipv4Address: string;
410 IPv6Address: string;
411 }
412
413 /* tslint:disable:interface-name */
414 interface IPAM {
415 Driver: string;
416 Config?: { [key: string]: string };
417 Options?: Array<{ [key: string]: string }>;
418 }
419 /* tslint:enable:interface-name */
420
421 interface VolumeInspectInfo {
422 Name: string;
423 Driver: string;
424 Mountpoint: string;
425 Status?: { [key: string]: string };
426 Labels: { [key: string]: string };
427 Scope: 'local' | 'global';
428 // Field is always present, but sometimes is null
429 Options: { [key: string]: string } | null;
430 // Field is sometimes present, and sometimes null
431 UsageData?: {
432 Size: number;
433 RefCount: number;
434 } | null;
435 }
436
437 interface ContainerInspectInfo {
438 Id: string;
439 Created: string;
440 Path: string;
441 Args: string[];
442 State: {
443 Status: string;
444 Running: boolean;
445 Paused: boolean;
446 Restarting: boolean;
447 OOMKilled: boolean;
448 Dead: boolean;
449 Pid: number;
450 ExitCode: number;
451 Error: string;
452 StartedAt: string;
453 FinishedAt: string;
454 };
455 Image: string;
456 ResolvConfPath: string;
457 HostnamePath: string;
458 HostsPath: string;
459 LogPath: string;
460 Name: string;
461 RestartCount: number;
462 Driver: string;
463 MountLabel: string;
464 ProcessLabel: string;
465 AppArmorProfile: string;
466 ExecIDs?: any;
467 HostConfig: HostConfig;
468 GraphDriver: {
469 Name: string;
470 Data: {
471 DeviceId: string;
472 DeviceName: string;
473 DeviceSize: string;
474 }
475 };
476 Mounts: Array<{
477 Name?: string;
478 Source: string;
479 Destination: string;
480 Mode: string;
481 RW: boolean;
482 Propagation: string;
483 }>;
484 Config: {
485 Hostname: string;
486 Domainname: string;
487 User: string;
488 AttachStdin: boolean;
489 AttachStdout: boolean;
490 AttachStderr: boolean;
491 ExposedPorts: { [portAndProtocol: string]: {} };
492 Tty: boolean;
493 OpenStdin: boolean;
494 StdinOnce: boolean;
495 Env: string[];
496 Cmd: string[];
497 Image: string;
498 Volumes: { [volume: string]: {} };
499 WorkingDir: string;
500 Entrypoint?: string | string[];
501 OnBuild?: any;
502 Labels: { [label: string]: string }
503 };
504 NetworkSettings: {
505 Bridge: string;
506 SandboxID: string;
507 HairpinMode: boolean;
508 LinkLocalIPv6Address: string;
509 LinkLocalIPv6PrefixLen: number;
510 Ports: {
511 [portAndProtocol: string]: Array<{
512 HostIp: string;
513 HostPort: string;
514 }>;
515 };
516 SandboxKey: string;
517 SecondaryIPAddresses?: any;
518 SecondaryIPv6Addresses?: any;
519 EndpointID: string;
520 Gateway: string;
521 GlobalIPv6Address: string;
522 GlobalIPv6PrefixLen: number;
523 IPAddress: string;
524 IPPrefixLen: number;
525 IPv6Gateway: string;
526 MacAddress: string;
527 Networks: {
528 [type: string]: {
529 IPAMConfig?: any;
530 Links?: any;
531 Aliases?: any;
532 NetworkID: string;
533 EndpointID: string;
534 Gateway: string;
535 IPAddress: string;
536 IPPrefixLen: number;
537 IPv6Gateway: string;
538 GlobalIPv6Address: string;
539 GlobalIPv6PrefixLen: number;
540 MacAddress: string;
541 };
542 };
543 Node?: {
544 ID: string;
545 IP: string;
546 Addr: string;
547 Name: string;
548 Cpus: number;
549 Memory: number;
550 Labels: any;
551 };
552 };
553 }
554
555 interface NetworkStats {
556 [name: string]: {
557 rx_bytes: number;
558 rx_dropped: number;
559 rx_errors: number;
560 rx_packets: number;
561 tx_bytes: number;
562 tx_dropped: number;
563 tx_errors: number;
564 tx_packets: number;
565 };
566 }
567
568 interface CPUStats {
569 cpu_usage: {
570 percpu_usage: number[];
571 usage_in_usermode: number;
572 total_usage: number;
573 usage_in_kernelmode: number;
574 };
575 system_cpu_usage: number;
576 online_cpus: number;
577 throttling_data: {
578 periods: number;
579 throttled_periods: number;
580 throttled_time: number;
581 };
582 }
583
584 interface MemoryStats {
585 stats: {
586 total_pgmajfault: number;
587 cache: number;
588 mapped_file: number;
589 total_inactive_file: number;
590 pgpgout: number;
591 rss: number;
592 total_mapped_file: number;
593 writeback: number;
594 unevictable: number;
595 pgpgin: number;
596 total_unevictable: number;
597 pgmajfault: number;
598 total_rss: number;
599 total_rss_huge: number;
600 total_writeback: number;
601 total_inactive_anon: number;
602 rss_huge: number;
603 hierarchical_memory_limit: number;
604 total_pgfault: number;
605 total_active_file: number;
606 active_anon: number;
607 total_active_anon: number;
608 total_pgpgout: number;
609 total_cache: number;
610 inactive_anon: number;
611 active_file: number;
612 pgfault: number;
613 inactive_file: number;
614 total_pgpgin: number;
615 };
616 max_usage: number;
617 usage: number;
618 failcnt: number;
619 limit: number;
620 }
621
622 interface ContainerStats {
623 read: string;
624 pid_stats: {
625 current: number;
626 };
627 networks: NetworkStats;
628 memory_stats: MemoryStats;
629 blkio_stats: {};
630 cpu_stats: CPUStats;
631 precpu_stats: CPUStats;
632 }
633
634 interface HostConfig {
635 AutoRemove?: boolean;
636 Binds?: string[];
637 ContainerIDFile?: string;
638 LogConfig?: {
639 Type: string;
640 Config: any;
641 };
642 NetworkMode?: string;
643 PortBindings?: any;
644 RestartPolicy?: RestartPolicy;
645 VolumeDriver?: string;
646 VolumesFrom?: any;
647 Mounts?: MountConfig;
648 CapAdd?: any;
649 CapDrop?: any;
650 Dns?: any[];
651 DnsOptions?: any[];
652 DnsSearch?: any[];
653 ExtraHosts?: any;
654 GroupAdd?: string[];
655 IpcMode?: string;
656 Cgroup?: string;
657 Links?: any;
658 OomScoreAdj?: number;
659 PidMode?: string;
660 Privileged?: boolean;
661 PublishAllPorts?: boolean;
662 ReadonlyRootfs?: boolean;
663 SecurityOpt?: any;
664 StorageOpt?: { [option: string]: string };
665 Tmpfs?: { [dir: string]: string };
666 UTSMode?: string;
667 UsernsMode?: string;
668 ShmSize?: number;
669 Sysctls?: { [index: string]: string };
670 Runtime?: string;
671 ConsoleSize?: number[];
672 Isolation?: string;
673 MaskedPaths?: string[];
674 ReadonlyPaths?: string[];
675 CpuShares?: number;
676 CgroupParent?: string;
677 BlkioWeight?: number;
678 BlkioWeightDevice?: any;
679 BlkioDeviceReadBps?: any;
680 BlkioDeviceWriteBps?: any;
681 BlkioDeviceReadIOps?: any;
682 BlkioDeviceWriteIOps?: any;
683 CpuPeriod?: number;
684 CpuQuota?: number;
685 CpusetCpus?: string;
686 CpusetMems?: string;
687 Devices?: any;
688 DiskQuota?: number;
689 KernelMemory?: number;
690 Memory?: number;
691 MemoryReservation?: number;
692 MemorySwap?: number;
693 MemorySwappiness?: number;
694 OomKillDisable?: boolean;
695 PidsLimit?: number;
696 Ulimits?: any;
697 }
698
699 interface ImageInspectInfo {
700 Id: string;
701 RepoTags: string[];
702 RepoDigests: string[];
703 Parent: string;
704 Comment: string;
705 Created: string;
706 Container: string;
707 ContainerConfig:
708 {
709 Hostname: string;
710 Domainname: string;
711 User: string;
712 AttachStdin: boolean;
713 AttachStdout: boolean;
714 AttachStderr: boolean;
715 ExposedPorts: { [portAndProtocol: string]: {} };
716 Tty: boolean;
717 OpenStdin: boolean;
718 StdinOnce: boolean;
719 Env: string[];
720 Cmd: string[];
721 ArgsEscaped: boolean;
722 Image: string;
723 Volumes: { [path: string]: {} },
724 WorkingDir: string;
725 Entrypoint?: string | string[];
726 OnBuild?: any[];
727 Labels: { [label: string]: string }
728 };
729 DockerVersion: string;
730 Author: string;
731 Config:
732 {
733 Hostname: string;
734 Domainname: string;
735 User: string;
736 AttachStdin: boolean;
737 AttachStdout: boolean;
738 AttachStderr: boolean;
739 ExposedPorts: { [portAndProtocol: string]: {} }
740 Tty: boolean;
741 OpenStdin: boolean;
742 StdinOnce: boolean;
743 Env: string[];
744 Cmd: string[];
745 ArgsEscaped: boolean;
746 Image: string;
747 Volumes: { [path: string]: {} },
748 WorkingDir: string;
749 Entrypoint?: string | string[];
750 OnBuild: any[];
751 Labels: { [label: string]: string }
752 };
753 Architecture: string;
754 Os: string;
755 Size: number;
756 VirtualSize: number;
757 GraphDriver:
758 {
759 Name: string;
760 Data:
761 {
762 DeviceId: string;
763 DeviceName: string;
764 DeviceSize: string;
765 }
766 };
767 RootFS: {
768 Type: string;
769 Layers?: string[];
770 BaseLayer?: string;
771 };
772 }
773
774 interface AuthConfig {
775 username: string;
776 password: string;
777 serveraddress: string;
778 email?: string;
779 }
780
781 interface PortBinding {
782 HostIp?: string;
783 HostPort?: string;
784 }
785
786 interface PortMap {
787 [key: string]: PortBinding[];
788 }
789
790 interface RestartPolicy {
791 Name: string;
792 MaximumRetryCount?: number;
793 }
794
795 type LoggingDriverType =
796 | "json-file"
797 | "syslog"
798 | "journald"
799 | "gelf"
800 | "fluentd"
801 | "awslogs"
802 | "splunk"
803 | "etwlogs"
804 | "none";
805
806 interface LogConfig {
807 Type: LoggingDriverType;
808 Config?: { [key: string]: string };
809 }
810
811 interface DeviceMapping {
812 PathOnHost: string;
813 PathInContainer: string;
814 CgroupPermissions: string;
815 }
816
817 /* tslint:disable:interface-name */
818 interface IPAMConfig {
819 IPv4Address?: string;
820 IPv6Address?: string;
821 LinkLocalIPs?: string[];
822 }
823 /* tslint:enable:interface-name */
824
825 interface EndpointSettings {
826 IPAMConfig?: IPAMConfig;
827 Links?: string[];
828 Aliases?: string[];
829 NetworkID?: string;
830 EndpointID?: string;
831 Gateway?: string;
832 IPAddress?: string;
833 IPPrefixLen?: number;
834 IPv6Gateway?: string;
835 GlobalIPv6Address?: string;
836 GlobalIPV6PrefixLen?: number;
837 MacAddress?: string;
838 DriverOpts?: { [key: string]: string };
839 }
840
841 interface EndpointsConfig {
842 [key: string]: EndpointSettings;
843 }
844
845 type MountType =
846 | "bind"
847 | "volume"
848 | "tmpfs";
849
850 type MountConsistency =
851 | "default"
852 | "consistent"
853 | "cached"
854 | "delegated";
855
856 type MountPropagation =
857 | "private"
858 | "rprivate"
859 | "shared"
860 | "rshared"
861 | "slave"
862 | "rslave";
863
864 interface MountSettings {
865 Target: string;
866 Source: string;
867 Type: MountType;
868 ReadOnly ?: boolean;
869 Consistency ?: MountConsistency;
870 BindOptions ?: {
871 Propagation: MountPropagation;
872 };
873 VolumeOptions ?: {
874 NoCopy: boolean;
875 Labels: { [label: string]: string };
876 DriverConfig: {
877 Name: string;
878 Options: { [option: string]: string};
879 };
880 };
881 TmpfsOptions ?: {
882 SizeBytes: number;
883 Mode: number;
884 };
885 }
886
887 type MountConfig = MountSettings[];
888
889 interface ContainerCreateOptions {
890 name?: string;
891 Hostname?: string;
892 Domainname?: string;
893 User?: string;
894 AttachStdin?: boolean;
895 AttachStdout?: boolean;
896 AttachStderr?: boolean;
897 Tty?: boolean;
898 OpenStdin?: boolean;
899 StdinOnce?: boolean;
900 Env?: string[];
901 Cmd?: string[];
902 Entrypoint?: string | string[];
903 Image?: string;
904 Labels?: { [label: string]: string };
905 Volumes?: { [volume: string]: {} };
906 WorkingDir?: string;
907 NetworkDisabled?: boolean;
908 MacAddress?: boolean;
909 ExposedPorts?: { [port: string]: {} };
910 StopSignal?: string;
911 HostConfig?: HostConfig;
912 NetworkingConfig?: {
913 EndpointsConfig?: EndpointsConfig;
914 };
915 }
916
917 interface KeyObject {
918 pem: string | Buffer;
919 passphrase?: string;
920 }
921
922 interface DockerOptions {
923 socketPath?: string;
924 host?: string;
925 port?: number | string;
926 ca?: string | string[] | Buffer | Buffer[];
927 cert?: string | string[] | Buffer | Buffer[];
928 key?: string | string[] | Buffer | Buffer[] | KeyObject[];
929 protocol?: "https" | "http";
930 timeout?: number;
931 version?: string;
932 Promise?: typeof Promise;
933 }
934
935 interface SecretVersion {
936 Index: number;
937 }
938
939 interface ServiceSpec {
940 Name: string;
941 }
942
943 interface SecretInfo {
944 ID: string;
945 Version: SecretVersion;
946 CreatedAt: string;
947 UpdatedAt?: string;
948 Spec?: ServiceSpec;
949 }
950
951 interface ConfigInfo {
952 ID: string;
953 Version: SecretVersion;
954 CreatedAt: string;
955 UpdatedAt?: string;
956 Spec?: ConfigSpec;
957 }
958
959 interface ConfigSpec {
960 Name: string;
961 Labels: { [label: string]: string };
962 Data: string;
963 }
964
965 interface ConfigVersion {
966 Index: number;
967 }
968
969 interface PluginInfo {
970 Id?: string;
971 Name: string;
972 Enabled: boolean;
973 Settings: PluginSettings;
974 PluginReference?: string;
975 Config: PluginConfig;
976 }
977
978 type PluginInspectInfo = PluginInfo;
979
980 interface PluginSettings {
981 Mounts: PluginMount[];
982 Env: string[];
983 Args: string[];
984 Devices: PluginDevice[];
985 }
986
987 interface PluginConfig {
988 Description: string;
989 Documentation: string;
990 Interface: any;
991 Entrypoint: string[];
992 WorkDir: string;
993 User?: User;
994 Network: Network;
995 Linux: Linux;
996 PropagatedMount: string;
997 Mounts: PluginMount[];
998 Env: PluginEnv[];
999 Args: Args;
1000 rootfs: any;
1001 }
1002
1003 interface Interface {
1004 Types: PluginInterfaceType[];
1005 Socket: string;
1006 }
1007
1008 interface PluginInterfaceType {
1009 Prefix: string;
1010 Capability: string;
1011 Version: string;
1012 }
1013
1014 interface PluginMount {
1015 Name: string;
1016 Description: string;
1017 Settable: string[];
1018 Source: string;
1019 Destination: string;
1020 Type: string;
1021 Options: string[];
1022 }
1023
1024 interface Linux {
1025 Capabilities: string[];
1026 AllowAllDevices: boolean;
1027 Devices: PluginDevice[];
1028 }
1029
1030 interface PluginDevice {
1031 Name: string;
1032 Description: string;
1033 Settable: string[];
1034 Path: string;
1035 }
1036
1037 interface Network {
1038 Type: string;
1039 }
1040
1041 interface PluginEnv {
1042 Name: string;
1043 Description: string;
1044 Settable: string[];
1045 Value: string;
1046 }
1047
1048 interface Args {
1049 Name: string;
1050 Description: string;
1051 Settable: string[];
1052 Value: string;
1053 }
1054
1055 interface User {
1056 UID: number;
1057 GID: number;
1058 }
1059
1060 interface ImageRemoveInfo {
1061 Untagged: string;
1062 Deleted: string;
1063 }
1064
1065 interface PruneImagesInfo {
1066 ImagesDeleted: ImageRemoveInfo[];
1067 SpaceReclaimed: number;
1068 }
1069
1070 interface PruneVolumesInfo {
1071 VolumesDeleted: string[];
1072 SpaceReclaimed: number;
1073 }
1074
1075 interface PruneContainersInfo {
1076 ContainersDeleted: string[];
1077 SpaceReclaimed: number;
1078 }
1079
1080 interface PruneNetworksInfo {
1081 NetworksDeleted: string[];
1082 }
1083
1084 interface ContainerLogsOptions {
1085 stdout?: boolean;
1086 stderr?: boolean;
1087 follow?: boolean;
1088 since?: number;
1089 details?: boolean;
1090 tail?: number;
1091 timestamps?: boolean;
1092 }
1093
1094 interface ImageBuildContext {
1095 context: string;
1096 src: string[];
1097 }
1098
1099 interface DockerVersion {
1100 ApiVersion: string;
1101 Arch: string;
1102 BuildTime: Date;
1103 Components: Array<{
1104 Details: {
1105 ApiVersion: string;
1106 Arch: string;
1107 BuildTime: Date;
1108 Experimental: string;
1109 GitCommit: string;
1110 GoVersion: string;
1111 KernelVersion: string;
1112 Os: string;
1113 };
1114 Name: string;
1115 Version: string;
1116 }>;
1117 GitCommit: string;
1118 GoVersion: string;
1119 KernelVersion: string;
1120 MinAPIVersion: string;
1121 Os: string;
1122 Platform: {
1123 Name: string;
1124 };
1125 Version: string;
1126 }
1127}
1128
1129type Callback<T> = (error?: any, result?: T) => void;
1130
1131declare class Dockerode {
1132 constructor(options?: Dockerode.DockerOptions);
1133
1134 createContainer(options: Dockerode.ContainerCreateOptions, callback: Callback<Dockerode.Container>): void;
1135 createContainer(options: Dockerode.ContainerCreateOptions): Promise<Dockerode.Container>;
1136
1137 createImage(options: {}, callback: Callback<NodeJS.ReadableStream>): void;
1138 createImage(auth: any, options: {}, callback: Callback<NodeJS.ReadableStream>): void;
1139 createImage(options: {}): Promise<NodeJS.ReadableStream>;
1140 createImage(auth: any, options: {}): Promise<NodeJS.ReadableStream>;
1141
1142 loadImage(file: string | NodeJS.ReadableStream, options: {}, callback: Callback<NodeJS.ReadableStream>): void;
1143 loadImage(file: string | NodeJS.ReadableStream, callback: Callback<NodeJS.ReadableStream>): void;
1144 loadImage(file: string | NodeJS.ReadableStream, options?: {}): Promise<NodeJS.ReadableStream>;
1145
1146 importImage(file: string | NodeJS.ReadableStream, options: {}, callback: Callback<NodeJS.ReadableStream>): void;
1147 importImage(file: string | NodeJS.ReadableStream, callback: Callback<NodeJS.ReadableStream>): void;
1148 importImage(file: string | NodeJS.ReadableStream, options?: {}): Promise<NodeJS.ReadableStream>;
1149
1150 checkAuth(options: any, callback: Callback<any>): void;
1151 checkAuth(options: any): Promise<any>;
1152
1153 buildImage(file: string | NodeJS.ReadableStream | Dockerode.ImageBuildContext, options: {}, callback: Callback<NodeJS.ReadableStream>): void;
1154 buildImage(file: string | NodeJS.ReadableStream | Dockerode.ImageBuildContext, callback: Callback<NodeJS.ReadableStream>): void;
1155 buildImage(file: string | NodeJS.ReadableStream | Dockerode.ImageBuildContext, options?: {}): Promise<NodeJS.ReadableStream>;
1156
1157 getContainer(id: string): Dockerode.Container;
1158
1159 getImage(name: string): Dockerode.Image;
1160
1161 getVolume(name: string): Dockerode.Volume;
1162
1163 getPlugin(name: string, remote: any): Dockerode.Plugin;
1164
1165 getService(id: string): Dockerode.Service;
1166
1167 getTask(id: string): Dockerode.Task;
1168
1169 getNode(id: string): Dockerode.Node;
1170
1171 getNetwork(id: string): Dockerode.Network;
1172
1173 getSecret(id: string): Dockerode.Secret;
1174
1175 getExec(id: string): Dockerode.Exec;
1176
1177 getConfig(id: string): Dockerode.Config;
1178
1179 listContainers(options: {}, callback: Callback<Dockerode.ContainerInfo[]>): void;
1180 listContainers(callback: Callback<Dockerode.ContainerInfo[]>): void;
1181 listContainers(options?: {}): Promise<Dockerode.ContainerInfo[]>;
1182
1183 listImages(options: {}, callback: Callback<Dockerode.ImageInfo[]>): void;
1184 listImages(callback: Callback<Dockerode.ImageInfo[]>): void;
1185 listImages(options?: {}): Promise<Dockerode.ImageInfo[]>;
1186
1187 listServices(options: {}, callback: Callback<any[]>): void;
1188 listServices(callback: Callback<any[]>): void;
1189 listServices(options?: {}): Promise<any[]>;
1190
1191 listNodes(options: {}, callback: Callback<any[]>): void;
1192 listNodes(callback: Callback<any[]>): void;
1193 listNodes(options?: {}): Promise<any[]>;
1194
1195 listTasks(options: {}, callback: Callback<any[]>): void;
1196 listTasks(callback: Callback<any[]>): void;
1197 listTasks(options?: {}): Promise<any[]>;
1198
1199 listSecrets(options: {}, callback: Callback<Dockerode.SecretInfo[]>): void;
1200 listSecrets(callback: Callback<Dockerode.SecretInfo[]>): void;
1201 listSecrets(options?: {}): Promise<Dockerode.SecretInfo[]>;
1202
1203 listPlugins(options: {}, callback: Callback<Dockerode.PluginInfo[]>): void;
1204 listPlugins(callback: Callback<Dockerode.PluginInfo[]>): void;
1205 listPlugins(options?: {}): Promise<Dockerode.PluginInfo[]>;
1206
1207 listVolumes(options: {}, callback: Callback<{
1208 Volumes: Dockerode.VolumeInspectInfo[];
1209 Warnings: string[];
1210 }>): void;
1211 listVolumes(callback: Callback<{
1212 Volumes: Dockerode.VolumeInspectInfo[];
1213 Warnings: string[];
1214 }>): void;
1215 listVolumes(options?: {}): Promise<{
1216 Volumes: Dockerode.VolumeInspectInfo[];
1217 Warnings: string[];
1218 }>;
1219
1220 listNetworks(options: {}, callback: Callback<any[]>): void;
1221 listNetworks(callback: Callback<any[]>): void;
1222 listNetworks(options?: {}): Promise<any[]>;
1223
1224 listConfigs(options: {}, callback: Callback<Dockerode.ConfigInfo[]>): void;
1225 listConfigs(callback: Callback<Dockerode.ConfigInfo[]>): void;
1226 listConfigs(options?: {}): Promise<Dockerode.ConfigInfo[]>;
1227
1228 createSecret(options: {}, callback: Callback<any>): void;
1229 createSecret(options: {}): Promise<any>;
1230
1231 createConfig(options: {}, callback: Callback<any>): void;
1232 createConfig(options: {}): Promise<any>;
1233
1234 createPlugin(options: {}, callback: Callback<any>): void;
1235 createPlugin(options: {}): Promise<any>;
1236
1237 createVolume(options: {}, callback: Callback<any>): void;
1238 createVolume(options: {}): Promise<any>;
1239
1240 createService(options: {}, callback: Callback<any>): void;
1241 createService(options: {}): Promise<any>;
1242
1243 createNetwork(options: {}, callback: Callback<any>): void;
1244 createNetwork(options: {}): Promise<any>;
1245
1246 searchImages(options: {}, callback: Callback<any>): void;
1247 searchImages(options: {}): Promise<any>;
1248
1249 pruneImages(options: {}, callback: Callback<Dockerode.PruneImagesInfo>): void;
1250 pruneImages(callback: Callback<Dockerode.PruneImagesInfo>): void;
1251 pruneImages(options?: {}): Promise<Dockerode.PruneImagesInfo>;
1252
1253 pruneContainers(options: {}, callback: Callback<Dockerode.PruneContainersInfo>): void;
1254 pruneContainers(callback: Callback<Dockerode.PruneContainersInfo>): void;
1255 pruneContainers(options?: {}): Promise<Dockerode.PruneContainersInfo>;
1256
1257 pruneVolumes(options: {}, callback: Callback<Dockerode.PruneVolumesInfo>): void;
1258 pruneVolumes(callback: Callback<Dockerode.PruneVolumesInfo>): void;
1259 pruneVolumes(options?: {}): Promise<Dockerode.PruneVolumesInfo>;
1260
1261 pruneNetworks(options: {}, callback: Callback<Dockerode.PruneNetworksInfo>): void;
1262 pruneNetworks(callback: Callback<Dockerode.PruneNetworksInfo>): void;
1263 pruneNetworks(options?: {}): Promise<Dockerode.PruneNetworksInfo>;
1264
1265 info(callback: Callback<any>): void;
1266 info(): Promise<any>;
1267
1268 df(callback: Callback<any>): void;
1269 df(): Promise<any>;
1270
1271 version(callback: Callback<Dockerode.DockerVersion>): void;
1272 version(): Promise<Dockerode.DockerVersion>;
1273
1274 ping(callback: Callback<any>): void;
1275 ping(): Promise<any>;
1276
1277 getEvents(options: {}, callback: Callback<NodeJS.ReadableStream>): void;
1278 getEvents(callback: Callback<NodeJS.ReadableStream>): void;
1279 getEvents(options?: {}): Promise<NodeJS.ReadableStream>;
1280
1281 pull(repoTag: string, options: {}, callback: Callback<any>, auth?: {}): Dockerode.Image;
1282 pull(repoTag: string, options: {}, auth?: {}): Promise<any>;
1283
1284 run(image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], createOptions: {}, startOptions: {}, callback: Callback<any>): events.EventEmitter;
1285 run(image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], startOptions: {}, callback: Callback<any>): events.EventEmitter;
1286 run(image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], callback: Callback<any>): events.EventEmitter;
1287 run(image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], createOptions: {}, callback: Callback<any>): events.EventEmitter;
1288 run(image: string, cmd: string[], outputStream: NodeJS.WritableStream | NodeJS.WritableStream[], createOptions?: {}, startOptions?: {}): Promise<any>;
1289
1290 swarmInit(options: {}, callback: Callback<any>): void;
1291 swarmInit(options: {}): Promise<any>;
1292
1293 swarmJoin(options: {}, callback: Callback<any>): void;
1294 swarmJoin(options: {}): Promise<any>;
1295
1296 swarmLeave(options: {}, callback: Callback<any>): void;
1297 swarmLeave(options: {}): Promise<any>;
1298
1299 swarmUpdate(options: {}, callback: Callback<any>): void;
1300 swarmUpdate(options: {}): Promise<any>;
1301
1302 swarmInspect(callback: Callback<any>): void;
1303 swarmInspect(): Promise<any>;
1304
1305 modem: any;
1306}
1307
1308export = Dockerode;