export type ContainerConfig = { /** * The hostname to use for the container, as a valid RFC 1123 hostname. */ Hostname: string; /** * The domain name to use for the container. */ Domainname: string; /** * The user that commands are run as inside the container. */ User: string; /** * Whether to attach to `stdin`. */ AttachStdin: boolean; /** * Whether to attach to `stdout`. */ AttachStdout: boolean; /** * Whether to attach to `stderr`. */ AttachStderr: boolean; /** * An object mapping ports to an empty object in the form: * `{"/": {}}`. * ```ts * { * ExposedPorts: { * "22/tcp": {}, * } * } * ``` */ ExposedPorts: Record; /** * Attach standard streams to a TTY, including `stdin` if it is not closed. */ Tty: boolean; /** * Open `stdin`. */ OpenStdin: boolean; /** * Close `stdin` after one attached client disconnects. */ StdinOnce: boolean; /** * A list of environment variables to set inside the container in the form: * `["VAR=value", ...]`. A variable without `=` is removed from the environment, * rather than to have an empty value. */ Env: string[]; /** * Command to run specified as a string or an array of strings. */ Cmd: string[]; /** * A test to perform to check that the container is healthy. */ Healthcheck: HealthConfig; /** * The name (or reference) of the image to use when creating the container, or * which was used when the container was created. */ Image: string; /** * An object mapping mount point paths inside the container to empty objects. * ```ts * { * Volumes: { * "/volumes/data": {} * } * } * ``` */ Volumes: Record; /** * The working directory for commands to run in. */ WorkingDir: string; /** * The entry point for the container as a string or an array of strings. * * If the array consists of exactly one empty string (`[""]`) then the entry * point is reset to system default (i.e., the entry point used by docker * when there is no `ENTRYPOINT` instruction in the `Dockerfile`). */ Entrypoint: string[]; /** * Disable networking for the container. */ NetworkDisabled: boolean | null; /** * `ONBUILD` metadata that were defined in the image's `Dockerfile`. */ OnBuild: string[] | null; /** * User-defined key/value metadata. * ```ts * { * Labels: { * "com.example.vendor": "Acme", * "com.example.license": "GPL", * "com.example.version": "1.0" * } * } * ``` */ Labels: Record; /** * Signal to stop a container as a string or unsigned integer. */ StopSignal: string; /** * Timeout to stop a container in seconds. * Default: `10` */ StopTimeout: number; /** * Shell for when `RUN`, `CMD`, and `ENTRYPOINT` uses a shell. */ Shell: string[]; /** * Container configuration that depends on the host we are running on */ HostConfig: Partial; /** * NetworkingConfig represents the container's networking configuration for * each of its interfaces. It is used for the networking configs specified * in the docker create and docker network connect commands. */ NetworkingConfig: Partial; }; type HealthConfig = { /** * The test to perform. Possible values are: * - `[]` inherit healthcheck from image or parent image * - `["NONE"]` disable healthcheck * - `["CMD", args...]` exec arguments directly * - `["CMD-SHELL", command]` run command with system's default shell */ Test: string[]; /** * The time to wait between checks in nanoseconds. It should be 0 or at least * 1_000_000 (1 ms). 0 means inherit */ Interval: number; /** * The time to wait before considering the check to have hung. It should be 0 * or at least 1_000_000 (1 ms). 0 means inherit. */ Timeout: number; /** * The number of consecutive failures needed to consider a container as * unhealthy. 0 means inherit. */ Retries: number; /** * Start period for the container to initialize before starting health-retries * countdown in nanoseconds. It should be 0 or at least 1_000_000 (1 ms). 0 * means inherit. */ StartPeriod: number; /** * The time to wait between checks in nanoseconds during the start period. * It should be 0 or at least 1_000_000 (1 ms). 0 means inherit. */ StartInterval: number; }; type HostConfig = { CpuShares: number; Memory: number; CgroupParent: string; BlkioWeight: number; BlkioWeightDevice: { Path: string; Integer: number; }[]; BlkioDeviceReadBps: { Path: string; Rate: number; }[]; BlkioDeviceWriteBps: { Path: string; Rate: number; }[]; BlkioDeviceReadIOps: { Path: string; Rate: number; }[]; BlkioDeviceWriteIOps: { Path: string; Rate: number; }[]; CpuPeriod: number; CpuQuota: number; CpuRealtimePeriod: number; CpuRealtimeRuntime: number; CpusetCpus: string; CpusetMems: string; Devices: { PathOnHost: string; PathInContainer: string; CgroupPermissions: string; }[]; DeviceCgroupRules: string[]; DeviceRequests: { Driver: string; Count: number; DeviceIDs: string[]; Capabilities: string[]; Options: { Name: string; Value: string; }[]; }[]; KernelMemoryTCP: number; MemoryReservation: number; MemorySwap: number; MemorySwappiness: number; NanoCPUs: number; OomKillDisable: boolean; Init: boolean | null; PidsLimit: number; Ulimits: { Name: string; Soft: number; Hard: number; }[]; CpuCount: number; CpuPercent: number; IOMaximumIOps: number; IOMaximumBandwidth: number; Binds: string[]; ContainerIDFile: string; LogConfig: { Type: "json-file" | "syslog" | "journald" | "gelf" | "fluentd" | "awslogs" | "splunk" | "etwlogs" | "none"; Config: Record; }; NetworkMode: string; PortBindings: Record; RestartPolicy: { Name: "" | "no" | "always" | "unless-stopped" | "on-failure"; MaximumRetryCount: number; }; AutoRemove: boolean; VolumeDriver: string; VolumesFrom: string[]; Mounts: { Target: string; Source: string; Type: "bind" | "volume" | "tmpfs" | "npipe" | "cluster"; ReadOnly: boolean; Consistency: "default" | "consistent" | "cached" | "delegated"; BindOptions: { Propagation: "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave"; NonRecursive: boolean; CreateMountPoint: boolean; ReadOnlyNonRecursive: boolean; ReadOnlyForcedRecursive: boolean; }; VolumeOptions: { NoCopy: boolean; Labels: Record; DriverConfig: { Name: string; Options: Record; }; Subpath: string; }; TmpfsOptions: { SizeBytes: number; Mode: number; }; }[]; ConsoleSize: number[]; Annotations: Record; CapAdd: string[]; CapDrop: string[]; CgroupnsMode: "host" | "private"; Dns: string[]; DnsOptions: string[]; DnsSearch: string[]; ExtraHosts: string[]; GroupAdd: string[]; IpcMode: "none" | "private" | "shareable" | "container:" | "host"; Cgroup: string; Links: string[]; OomScoreAdj: number; PidMode: "host" | "container:"; Privileged: boolean; PublishAllPorts: boolean; ReadonlyRootfs: boolean; SecurityOpt: string[]; StorageOpt: Record; Tmpfs: Record; UTSMode: string; UsernsMode: string; ShmSize: number; Sysctls: Record; Runtime: string; MaskedPaths: string[]; ReadonlyPaths: string[]; }; type NetworkingConfig = { EndpointsConfig: Record; }; type EndpointSettings = { IPAMConfig: { IPv4Address: string; IPv6Address: string; LinkLocalIPs: string[]; }; Links: string[]; Aliases: string[]; NetworkID: string; EndpointID: string; Gateway: string; IPAddress: string; IPPrefixLen: number; IPv6Gateway: string; GlobalIPv6Address: string; GlobalIPv6PrefixLen: number; MacAddress: string; };