diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..55371e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +.vscode \ No newline at end of file diff --git a/.jsdoc.json b/.jsdoc.json new file mode 100644 index 0000000..44e1f24 --- /dev/null +++ b/.jsdoc.json @@ -0,0 +1,23 @@ +{ + "tags": { + "allowUnknownTags": true, + "dictionaries": [ + "jsdoc" + ] + }, + "source": { + "include": [ + "lib", + "package.json", + "README.md" + ], + "includePattern": ".js$", + "excludePattern": "(node_modules/|docs|test)" + }, + "opts": { + "destination": "./docs/", + "encoding": "utf8", + "recurse": true, + "template": "node_modules/docdash/" + } +} \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..b377ffd --- /dev/null +++ b/.npmignore @@ -0,0 +1,3 @@ +node_modules +samples +docs diff --git a/README.md b/README.md new file mode 100644 index 0000000..3c5c1bc --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Docker client for fibjs + +## Installation + +```bash +fibjs --install fib-docker +``` + +## Example Code + +```JavaScript +var Docker = require('fib-docker').Docker; + +var docker = new Docker({ + domain: "http://%2Fvar%2Frun%2Fdocker.sock/v1.39", + headers: { + host: "localhost" + } +}); + +console.log(docker.SystemInfo()); +``` \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/Docker.html b/docs/fib-docker/1.0.0/Docker.html new file mode 100644 index 0000000..3b7c29b --- /dev/null +++ b/docs/fib-docker/1.0.0/Docker.html @@ -0,0 +1,24592 @@ + + + + + + Docker - Documentation + + + + + + + + + + + + + + + + + + + +
+ +

Docker

+ + + + + + + +
+ +
+ +

+ Docker +

+ + +
+ +
+ +
+ + + + + +

new Docker(domainOrOptionsopt)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributesDescription
domainOrOptions + + +string +| + +object + + + + + + <optional>
+ + + + + +
The project domain or options object. If object, see the object's optional properties. +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributesDescription
domain + + +string + + + + + + <optional>
+ + + + + +
The project domain
token + + +object + + + + + + <optional>
+ + + + + +
auth token - object with value property and optional headerOrQueryName and isQuery properties
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +

Methods

+ + + + + + +

BuildPrune(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete builder cache +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
keepStorage + + +integer + + + + Amount of disk space in bytes to keep for cache
all + + +boolean + + + + Remove all types of build cache
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to +process on the list of build cache objects. + +Available filters: + +- `until=`: duration relative to daemon's time, during which build cache was not used, in Go's duration format (e.g., '24h') +- `id=` +- `parent=` +- `type=` +- `description=` +- `inuse` +- `shared` +- `private`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ConfigCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a config +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ConfigDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete a config +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID of the config
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ConfigInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a config +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID of the config
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ConfigList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ List configs +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to +process on the configs list. + +Available filters: + +- `id=` +- `label= or label==value` +- `name=` +- `names=`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ConfigUpdate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Update a Config +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + The ID or name of the config
body + + The spec of the config to update. Currently, only the Labels field +can be updated. All other fields must remain unchanged from the +[ConfigInspect endpoint](#operation/ConfigInspect) response values.
version + + +integer + + + + The version number of the config object being updated. This is +required to avoid conflicting writes.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerArchive(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get a tar archive of a resource in the filesystem of container id. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
path + + +string + + + + Resource in the container’s filesystem to archive.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerArchiveInfo(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ A response header `X-Docker-Container-Path-Stat` is returned, containing +a base64 - encoded JSON object with some filesystem header information +about the path. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
path + + +string + + + + Resource in the container’s filesystem to archive.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerAttach(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Attach to a container to read its output or send it input. You can attach +to the same container multiple times and you can reattach to containers +that have been detached. + +Either the `stream` or `logs` parameter must be `true` for this endpoint +to do anything. + +See the [documentation for the `docker attach` command](https://docs.docker.com/engine/reference/commandline/attach/) +for more details. + +### Hijacking + +This endpoint hijacks the HTTP connection to transport `stdin`, `stdout`, +and `stderr` on the same socket. + +This is the response from the daemon for an attach request: + +``` +HTTP/1.1 200 OK +Content-Type: application/vnd.docker.raw-stream + +[STREAM] +``` + +After the headers and two new lines, the TCP connection can now be used +for raw, bidirectional communication between the client and server. + +To hint potential proxies about connection hijacking, the Docker client +can also optionally send connection upgrade headers. + +For example, the client sends this request to upgrade the connection: + +``` +POST /containers/16253994b7c4/attach?stream=1&stdout=1 HTTP/1.1 +Upgrade: tcp +Connection: Upgrade +``` + +The Docker daemon will respond with a `101 UPGRADED` response, and will +similarly follow with the raw stream: + +``` +HTTP/1.1 101 UPGRADED +Content-Type: application/vnd.docker.raw-stream +Connection: Upgrade +Upgrade: tcp + +[STREAM] +``` + +### Stream format + +When the TTY setting is disabled in [`POST /containers/create`](#operation/ContainerCreate), +the stream over the hijacked connected is multiplexed to separate out +`stdout` and `stderr`. The stream consists of a series of frames, each +containing a header and a payload. + +The header contains the information which the stream writes (`stdout` or +`stderr`). It also contains the size of the associated frame encoded in +the last four bytes (`uint32`). + +It is encoded on the first eight bytes like this: + +```go +header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4} +``` + +`STREAM_TYPE` can be: + +- 0: `stdin` (is written on `stdout`) +- 1: `stdout` +- 2: `stderr` + +`SIZE1, SIZE2, SIZE3, SIZE4` are the four bytes of the `uint32` size +encoded as big endian. + +Following the header is the payload, which is the specified number of +bytes of `STREAM_TYPE`. + +The simplest way to implement this protocol is the following: + +1. Read 8 bytes. +2. Choose `stdout` or `stderr` depending on the first byte. +3. Extract the frame size from the last four bytes. +4. Read the extracted size and output it on the correct output. +5. Goto 1. + +### Stream format when using a TTY + +When the TTY setting is enabled in [`POST /containers/create`](#operation/ContainerCreate), +the stream is not multiplexed. The data exchanged over the hijacked +connection is simply the raw data from the process PTY and client's +`stdin`. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
detachKeys + + +string + + + + Override the key sequence for detaching a container.Format is a single +character `[a-Z]` or `ctrl-` where `` is one of: `a-z`, +`@`, `^`, `[`, `,` or `_`.
logs + + +boolean + + + + Replay previous logs from the container. + +This is useful for attaching to a container that has started and you +want to output everything since the container started. + +If `stream` is also enabled, once all the previous output has been +returned, it will seamlessly transition into streaming current +output.
stream + + +boolean + + + + Stream attached streams from the time the request was made onwards.
stdin + + +boolean + + + + Attach to `stdin`
stdout + + +boolean + + + + Attach to `stdout`
stderr + + +boolean + + + + Attach to `stderr`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerAttachWebsocket(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Attach to a container via a websocket +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
detachKeys + + +string + + + + Override the key sequence for detaching a container.Format is a single +character `[a-Z]` or `ctrl-` where `` is one of: `a-z`, +`@`, `^`, `[`, `,`, or `_`.
logs + + +boolean + + + + Return logs
stream + + +boolean + + + + Return stream
stdin + + +boolean + + + + Attach to `stdin`
stdout + + +boolean + + + + Attach to `stdout`
stderr + + +boolean + + + + Attach to `stderr`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerChanges(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Returns which files in a container's filesystem have been added, deleted, +or modified. The `Kind` of modification can be one of: + +- `0`: Modified +- `1`: Added +- `2`: Deleted +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a container +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Assign the specified name to the container. Must match +`/?[a-zA-Z0-9][a-zA-Z0-9_.-]+`.
body + + Container to create
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Remove a container +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
v + + +boolean + + + + Remove anonymous volumes associated with the container.
force + + +boolean + + + + If the container is running, kill it before removing it.
link + + +boolean + + + + Remove the specified link associated with the container.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerExec(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Run a command inside a running container. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
execConfig + + Exec configuration
id + + +string + + + + ID or name of container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerExport(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Export the contents of a container as a tarball. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Return low-level information about a container. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
size + + +boolean + + + + Return the size of container as fields `SizeRw` and `SizeRootFs`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerKill(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Send a POSIX signal to a container, defaulting to killing to the +container. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
signal + + +string + + + + Signal to send to the container as an integer or string (e.g. `SIGINT`)
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Returns a list of containers. For details on the format, see the +[inspect endpoint](#operation/ContainerInspect). + +Note that it uses a different, smaller representation of a container +than inspecting a single container. For example, the list of linked +containers is not propagated . +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
all + + +boolean + + + + Return all containers. By default, only running containers are shown.
limit + + +integer + + + + Return this number of most recently created containers, including +non-running ones.
size + + +boolean + + + + Return the size of container as fields `SizeRw` and `SizeRootFs`.
filters + + +string + + + + Filters to process on the container list, encoded as JSON (a +`map[string][]string`). For example, `{"status": ["paused"]}` will +only return paused containers. + +Available filters: + +- `ancestor`=(`[:]`, ``, or ``) +- `before`=(`` or ``) +- `expose`=(`[/]`|`/[]`) +- `exited=` containers with exit code of `` +- `health`=(`starting`|`healthy`|`unhealthy`|`none`) +- `id=` a container's ID +- `isolation=`(`default`|`process`|`hyperv`) (Windows daemon only) +- `is-task=`(`true`|`false`) +- `label=key` or `label="key=value"` of a container label +- `name=` a container's name +- `network`=(`` or ``) +- `publish`=(`[/]`|`/[]`) +- `since`=(`` or ``) +- `status=`(`created`|`restarting`|`running`|`removing`|`paused`|`exited`|`dead`) +- `volume`=(`` or ``)
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerLogs(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get `stdout` and `stderr` logs from a container. + +Note: This endpoint works only for containers with the `json-file` or +`journald` logging driver. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
follow + + +boolean + + + + Keep connection after returning logs.
stdout + + +boolean + + + + Return logs from `stdout`
stderr + + +boolean + + + + Return logs from `stderr`
since + + +integer + + + + Only return logs since this time, as a UNIX timestamp
until + + +integer + + + + Only return logs before this time, as a UNIX timestamp
timestamps + + +boolean + + + + Add timestamps to every log line
tail + + +string + + + + Only return this number of log lines from the end of the logs. +Specify as an integer or `all` to output all log lines.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerPause(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Use the freezer cgroup to suspend all processes in a container. + +Traditionally, when suspending a process the `SIGSTOP` signal is used, +which is observable by the process being suspended. With the freezer +cgroup the process is unaware, and unable to capture, that it is being +suspended, and subsequently resumed. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerPrune(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete stopped containers +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `until=` Prune containers created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune containers with (or without, in case `label!=...` is used) the specified labels.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerRename(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Rename a container +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
name + + +string + + + + New name for the container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerResize(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Resize the TTY for a container. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
h + + +integer + + + + Height of the TTY session in characters
w + + +integer + + + + Width of the TTY session in characters
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerRestart(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Restart a container +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
t + + +integer + + + + Number of seconds to wait before killing the container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerStart(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Start a container +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
detachKeys + + +string + + + + Override the key sequence for detaching a container. Format is a +single character `[a-Z]` or `ctrl-` where `` is one +of: `a-z`, `@`, `^`, `[`, `,` or `_`.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerStats(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ This endpoint returns a live stream of a container’s resource usage +statistics. + +The `precpu_stats` is the CPU statistic of the *previous* read, and is +used to calculate the CPU usage percentage. It is not an exact copy +of the `cpu_stats` field. + +If either `precpu_stats.online_cpus` or `cpu_stats.online_cpus` is +nil then for compatibility with older daemons the length of the +corresponding `cpu_usage.percpu_usage` array should be used. + +On a cgroup v2 host, the following fields are not set +`blkio_stats`: all fields other than `io_service_bytes_recursive` +`cpu_stats`: `cpu_usage.percpu_usage` +`memory_stats`: `max_usage` and `failcnt` +Also, `memory_stats.stats` fields are incompatible with cgroup v1. + +To calculate the values shown by the `stats` command of the docker cli tool +the following formulas can be used: +used_memory = `memory_stats.usage - memory_stats.stats.cache` +available_memory = `memory_stats.limit` +Memory usage % = `(used_memory / available_memory) * 100.0` +cpu_delta = `cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage` +system_cpu_delta = `cpu_stats.system_cpu_usage - precpu_stats.system_cpu_usage` +number_cpus = `lenght(cpu_stats.cpu_usage.percpu_usage)` or `cpu_stats.online_cpus` +CPU usage % = `(cpu_delta / system_cpu_delta) * number_cpus * 100.0` +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
stream + + +boolean + + + + Stream the output. If false, the stats will be output once and then +it will disconnect.
oneShot + + +boolean + + + + Only get a single stat instead of waiting for 2 cycles. Must be used +with `stream=false`.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerStop(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Stop a container +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
t + + +integer + + + + Number of seconds to wait before killing the container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerTop(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ On Unix systems, this is done by running the `ps` command. This endpoint +is not supported on Windows. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
psArgs + + +string + + + + The arguments to pass to `ps`. For example, `aux`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerUnpause(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Resume a container which has been paused. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerUpdate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Change various configuration options of a container without having to +recreate it. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
update + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ContainerWait(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Block until a container stops, then returns the exit code. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
condition + + +string + + + + Wait until a container state reaches the given condition, either +'not-running' (default), 'next-exit', or 'removed'.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

DistributionInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Return image digest and platform information by contacting the registry. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Image name or id
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ExecInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Return low-level information about an exec instance. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + Exec instance ID
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ExecResize(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Resize the TTY session used by an exec instance. This endpoint only works +if `tty` was specified as part of creating and starting the exec instance. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + Exec instance ID
h + + +integer + + + + Height of the TTY session in characters
w + + +integer + + + + Width of the TTY session in characters
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ExecStart(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Starts a previously set up exec instance. If detach is true, this endpoint +returns immediately after starting the command. Otherwise, it sets up an +interactive session with the command. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
execStartConfig + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
id + + +string + + + + Exec instance ID
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

GetPluginPrivileges(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get plugin privileges +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
remote + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageBuild(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Build an image from a tar archive with a `Dockerfile` in it. + +The `Dockerfile` specifies how the image is built from the tar archive. It is typically in the archive's root, but can be at a different path or have a different name by specifying the `dockerfile` parameter. [See the `Dockerfile` reference for more information](https://docs.docker.com/engine/reference/builder/). + +The Docker daemon performs a preliminary validation of the `Dockerfile` before starting the build, and returns an error if the syntax is incorrect. After that, each instruction is run one-by-one until the ID of the new image is output. + +The build is canceled if the client drops the connection by quitting or being killed. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
inputStream + + A tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz.
dockerfile + + +string + + + + Path within the build context to the `Dockerfile`. This is ignored if `remote` is specified and points to an external `Dockerfile`.
t + + +string + + + + A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default `latest` value is assumed. You can provide several `t` parameters.
extrahosts + + +string + + + + Extra hosts to add to /etc/hosts
remote + + +string + + + + A Git repository URI or HTTP/HTTPS context URI. If the URI points to a single text file, the file’s contents are placed into a file called `Dockerfile` and the image is built from that file. If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build. If the URI points to a tarball and the `dockerfile` parameter is also specified, there must be a file with the corresponding path inside the tarball.
q + + +boolean + + + + Suppress verbose build output.
nocache + + +boolean + + + + Do not use the cache when building the image.
cachefrom + + +string + + + + JSON array of images used for build cache resolution.
pull + + +string + + + + Attempt to pull the image even if an older image exists locally.
rm + + +boolean + + + + Remove intermediate containers after a successful build.
forcerm + + +boolean + + + + Always remove intermediate containers, even upon failure.
memory + + +integer + + + + Set memory limit for build.
memswap + + +integer + + + + Total memory (memory + swap). Set as `-1` to disable swap.
cpushares + + +integer + + + + CPU shares (relative weight).
cpusetcpus + + +string + + + + CPUs in which to allow execution (e.g., `0-3`, `0,1`).
cpuperiod + + +integer + + + + The length of a CPU period in microseconds.
cpuquota + + +integer + + + + Microseconds of CPU time that the container can get in a CPU period.
buildargs + + +string + + + + JSON map of string pairs for build-time variables. Users pass these values at build-time. Docker uses the buildargs as the environment context for commands run via the `Dockerfile` RUN instruction, or for variable expansion in other `Dockerfile` instructions. This is not meant for passing secret values. + +For example, the build arg `FOO=bar` would become `{"FOO":"bar"}` in JSON. This would result in the query parameter `buildargs={"FOO":"bar"}`. Note that `{"FOO":"bar"}` should be URI component encoded. + +[Read more about the buildargs instruction.](https://docs.docker.com/engine/reference/builder/#arg)
shmsize + + +integer + + + + Size of `/dev/shm` in bytes. The size must be greater than 0. If omitted the system uses 64MB.
squash + + +boolean + + + + Squash the resulting images layers into a single layer. *(Experimental release only.)*
labels + + +string + + + + Arbitrary key/value labels to set on the image, as a JSON map of string pairs.
networkmode + + +string + + + + Sets the networking mode for the run commands during build. Supported +standard values are: `bridge`, `host`, `none`, and `container:`. +Any other value is taken as a custom network's name or ID to which this +container should connect to.
xRegistryConfig + + +string + + + + This is a base64-encoded JSON object with auth configurations for multiple registries that a build may refer to. + +The key is a registry URL, and the value is an auth configuration object, [as described in the authentication section](#section/Authentication). For example: + +``` +{ + "docker.example.com": { + "username": "janedoe", + "password": "hunter2" + }, + "https://index.docker.io/v1/": { + "username": "mobydock", + "password": "conta1n3rize14" + } +} +``` + +Only the registry domain name (and port if not the default 443) are required. However, for legacy reasons, the Docker Hub registry must be specified with both a `https://` prefix and a `/v1/` suffix even though Docker will prefer to use the v2 registry API.
platform + + +string + + + + Platform in the format os[/arch[/variant]]
target + + +string + + + + Target build stage
outputs + + +string + + + + BuildKit output configuration
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageCommit(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a new image from a container +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
containerConfig + + The container configuration
container + + +string + + + + The ID or name of the container to commit
repo + + +string + + + + Repository name for the created image
tag + + +string + + + + Tag name for the create image
comment + + +string + + + + Commit message
author + + +string + + + + Author of the image (e.g., `John Hannibal Smith `)
pause + + +boolean + + + + Whether to pause the container before committing
changes + + +string + + + + `Dockerfile` instructions to apply while committing
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create an image by either pulling it from a registry or importing it. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
fromImage + + +string + + + + Name of the image to pull. The name may include a tag or digest. This parameter may only be used when pulling an image. The pull is cancelled if the HTTP connection is closed.
fromSrc + + +string + + + + Source to import. The value may be a URL from which the image can be retrieved or `-` to read the image from the request body. This parameter may only be used when importing an image.
repo + + +string + + + + Repository name given to an image when it is imported. The repo may include a tag. This parameter may only be used when importing an image.
tag + + +string + + + + Tag or digest. If empty when pulling an image, this causes all tags for the given image to be pulled.
message + + +string + + + + Set commit message for imported image.
inputImage + + Image content if the value `-` has been specified in fromSrc query parameter
xRegistryAuth + + +string + + + + A base64url-encoded auth configuration. + +Refer to the [authentication section](#section/Authentication) for +details.
platform + + +string + + + + Platform in the format os[/arch[/variant]]
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Remove an image, along with any untagged parent images that were +referenced by that image. + +Images can't be removed if they have descendant images, are being +used by a running container or are being used by a build. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Image name or ID
force + + +boolean + + + + Remove the image even if it is being used by stopped containers or has other tags
noprune + + +boolean + + + + Do not delete untagged parent images
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageGet(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get a tarball containing all images and metadata for a repository. + +If `name` is a specific name and tag (e.g. `ubuntu:latest`), then only that image (and its parents) are returned. If `name` is an image ID, similarly only that image (and its parents) are returned, but with the exclusion of the `repositories` file in the tarball, as there were no image names referenced. + +### Image tarball format + +An image tarball contains one directory per image layer (named using its long ID), each containing these files: + +- `VERSION`: currently `1.0` - the file format version +- `json`: detailed layer information, similar to `docker inspect layer_id` +- `layer.tar`: A tarfile containing the filesystem changes in this layer + +The `layer.tar` file contains `aufs` style `.wh..wh.aufs` files and directories for storing attribute changes and deletions. + +If the tarball defines a repository, the tarball should also include a `repositories` file at the root that contains a list of repository and tag names mapped to layer IDs. + +```json +{ + "hello-world": { + "latest": "565a9d68a73f6706862bfe8409a7f659776d4d60a8d096eb4a3cbce6999cc2a1" + } +} +``` +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Image name or ID
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageGetAll(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get a tarball containing all images and metadata for several image +repositories. + +For each value of the `names` parameter: if it is a specific name and +tag (e.g. `ubuntu:latest`), then only that image (and its parents) are +returned; if it is an image ID, similarly only that image (and its parents) +are returned and there would be no names referenced in the 'repositories' +file for this image ID. + +For details on the format, see the [export image endpoint](#operation/ImageGet). +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
names + + +array + + + + Image names to filter by
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageHistory(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Return parent layers of an image. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Image name or ID
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Return low-level information about an image. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Image name or id
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Returns a list of images on the server. Note that it uses a different, smaller representation of an image than inspecting a single image. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
all + + +boolean + + + + Show all images. Only images from a final layer (no children) are shown by default.
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to +process on the images list. + +Available filters: + +- `before`=(`[:]`, `` or ``) +- `dangling=true` +- `label=key` or `label="key=value"` of an image label +- `reference`=(`[:]`) +- `since`=(`[:]`, `` or ``)
digests + + +boolean + + + + Show digest information as a `RepoDigests` field on each image.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageLoad(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Load a set of images and tags into a repository. + +For details on the format, see the [export image endpoint](#operation/ImageGet). +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
imagesTarball + + Tar archive containing images
quiet + + +boolean + + + + Suppress progress details during load.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImagePrune(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete unused images +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). Available filters: + +- `dangling=` When set to `true` (or `1`), prune only + unused *and* untagged images. When set to `false` + (or `0`), all unused images are pruned. +- `until=` Prune images created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune images with (or without, in case `label!=...` is used) the specified labels.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImagePush(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Push an image to a registry. + +If you wish to push an image on to a private registry, that image must +already have a tag which references the registry. For example, +`registry.example.com/myimage:latest`. + +The push is cancelled if the HTTP connection is closed. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Image name or ID.
tag + + +string + + + + The tag to associate with the image on the registry.
xRegistryAuth + + +string + + + + A base64url-encoded auth configuration. + +Refer to the [authentication section](#section/Authentication) for +details.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageSearch(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Search for an image on Docker Hub. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
term + + +string + + + + Term to search
limit + + +integer + + + + Maximum number of results to return
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to process on the images list. Available filters: + +- `is-automated=(true|false)` +- `is-official=(true|false)` +- `stars=` Matches images that has at least 'number' stars.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ImageTag(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Tag an image so that it becomes part of a repository. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Image name or ID to tag.
repo + + +string + + + + The repository to tag in. For example, `someuser/someimage`.
tag + + +string + + + + The name of the new tag.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NetworkConnect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Connect a container to a network +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + Network ID or name
container + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NetworkCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a network +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
networkConfig + + Network configuration
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NetworkDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Remove a network +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + Network ID or name
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NetworkDisconnect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Disconnect a container from a network +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + Network ID or name
container + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NetworkInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a network +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + Network ID or name
verbose + + +boolean + + + + Detailed inspect output for troubleshooting
scope + + +string + + + + Filter the network by scope (swarm, global, or local)
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NetworkList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Returns a list of networks. For details on the format, see the +[network inspect endpoint](#operation/NetworkInspect). + +Note that it uses a different, smaller representation of a network than +inspecting a single network. For example, the list of containers attached +to the network is not propagated in API versions 1.28 and up. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + JSON encoded value of the filters (a `map[string][]string`) to process +on the networks list. + +Available filters: + +- `dangling=` When set to `true` (or `1`), returns all + networks that are not in use by a container. When set to `false` + (or `0`), only networks that are in use by one or more + containers are returned. +- `driver=` Matches a network's driver. +- `id=` Matches all or part of a network ID. +- `label=` or `label==` of a network label. +- `name=` Matches all or part of a network name. +- `scope=["swarm"|"global"|"local"]` Filters networks by scope (`swarm`, `global`, or `local`). +- `type=["custom"|"builtin"]` Filters networks by type. The `custom` keyword returns all user-defined networks.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NetworkPrune(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete unused networks +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `until=` Prune networks created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune networks with (or without, in case `label!=...` is used) the specified labels.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NodeDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete a node +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + The ID or name of the node
force + + +boolean + + + + Force remove a node from the swarm
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NodeInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a node +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + The ID or name of the node
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NodeList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ List nodes +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + Filters to process on the nodes list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `id=` +- `label=` +- `membership=`(`accepted`|`pending`)` +- `name=` +- `node.label=` +- `role=`(`manager`|`worker`)`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

NodeUpdate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Update a node +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + The ID of the node
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
version + + +integer + + + + The version number of the node object being updated. This is required +to avoid conflicting writes.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a plugin +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
tarContext + + Path to tar containing plugin rootfs and manifest
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Remove a plugin +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
force + + +boolean + + + + Disable the plugin before removing. This may result in issues if the +plugin is in use by a container.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginDisable(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Disable a plugin +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginEnable(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Enable a plugin +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
timeout + + +integer + + + + Set the HTTP client timeout (in seconds)
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a plugin +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Returns information about installed plugins. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to +process on the plugin list. + +Available filters: + +- `capability=` +- `enable=|`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginPull(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Pulls and installs a plugin. After the plugin is installed, it can be +enabled using the [`POST /plugins/{name}/enable` endpoint](#operation/PostPluginsEnable). +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
remote + + +string + + + + Remote reference for plugin to install. + +The `:latest` tag is optional, and is used as the default if omitted.
name + + +string + + + + Local name for the pulled plugin. + +The `:latest` tag is optional, and is used as the default if omitted.
xRegistryAuth + + +string + + + + A base64url-encoded auth configuration to use when pulling a plugin +from a registry. + +Refer to the [authentication section](#section/Authentication) for +details.
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginPush(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Push a plugin to the registry. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginSet(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Configure a plugin +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PluginUpgrade(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Upgrade a plugin +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + The name of the plugin. The `:latest` tag is optional, and is the +default if omitted.
remote + + +string + + + + Remote reference to upgrade to. + +The `:latest` tag is optional, and is used as the default if omitted.
xRegistryAuth + + +string + + + + A base64url-encoded auth configuration to use when pulling a plugin +from a registry. + +Refer to the [authentication section](#section/Authentication) for +details.
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

PutContainerArchive(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Upload a tar archive to be extracted to a path in the filesystem of container id. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the container
path + + +string + + + + Path to a directory in the container to extract the archive’s contents into.
noOverwriteDirNonDir + + +string + + + + If `1`, `true`, or `True` then it will be an error if unpacking the +given content would cause an existing directory to be replaced with +a non-directory and vice versa.
copyUidgid + + +string + + + + If `1`, `true`, then it will copy UID/GID maps to the dest file or +dir
inputStream + + The input stream must be a tar archive compressed with one of the +following algorithms: `identity` (no compression), `gzip`, `bzip2`, +or `xz`.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SecretCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a secret +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SecretDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete a secret +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID of the secret
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SecretInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a secret +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID of the secret
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SecretList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ List secrets +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to +process on the secrets list. + +Available filters: + +- `id=` +- `label= or label==value` +- `name=` +- `names=`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SecretUpdate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Update a Secret +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + The ID or name of the secret
body + + The spec of the secret to update. Currently, only the Labels field +can be updated. All other fields must remain unchanged from the +[SecretInspect endpoint](#operation/SecretInspect) response values.
version + + +integer + + + + The version number of the secret object being updated. This is +required to avoid conflicting writes.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ServiceCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a service +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
xRegistryAuth + + +string + + + + A base64url-encoded auth configuration for pulling from private +registries. + +Refer to the [authentication section](#section/Authentication) for +details.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ServiceDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete a service +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of service.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ServiceInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a service +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of service.
insertDefaults + + +boolean + + + + Fill empty fields with default values.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ServiceList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ List services +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to +process on the services list. + +Available filters: + +- `id=` +- `label=` +- `mode=["replicated"|"global"]` +- `name=`
status + + +boolean + + + + Include service status, with count of running and desired tasks.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ServiceLogs(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get `stdout` and `stderr` logs from a service. See also +[`/containers/{id}/logs`](#operation/ContainerLogs). +*Note**: This endpoint works only for services with the `local`, +`json-file` or `journald` logging drivers. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of the service
details + + +boolean + + + + Show service context and extra details provided to logs.
follow + + +boolean + + + + Keep connection after returning logs.
stdout + + +boolean + + + + Return logs from `stdout`
stderr + + +boolean + + + + Return logs from `stderr`
since + + +integer + + + + Only return logs since this time, as a UNIX timestamp
timestamps + + +boolean + + + + Add timestamps to every log line
tail + + +string + + + + Only return this number of log lines from the end of the logs. +Specify as an integer or `all` to output all log lines.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

ServiceUpdate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Update a service +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID or name of service.
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
version + + +integer + + + + The version number of the service object being updated. This is +required to avoid conflicting writes. +This version number should be the value as currently set on the +service *before* the update. You can find the current version by +calling `GET /services/{id}`
registryAuthFrom + + +string + + + + If the `X-Registry-Auth` header is not specified, this parameter +indicates where to find registry authorization credentials.
rollback + + +string + + + + Set to this parameter to `previous` to cause a server-side rollback +to the previous service spec. The supplied spec will be ignored in +this case.
xRegistryAuth + + +string + + + + A base64url-encoded auth configuration for pulling from private +registries. + +Refer to the [authentication section](#section/Authentication) for +details.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

Session(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Start a new interactive session with a server. Session allows server to +call back to the client for advanced capabilities. + +### Hijacking + +This endpoint hijacks the HTTP connection to HTTP2 transport that allows +the client to expose gPRC services on that connection. + +For example, the client sends this request to upgrade the connection: + +``` +POST /session HTTP/1.1 +Upgrade: h2c +Connection: Upgrade +``` + +The Docker daemon responds with a `101 UPGRADED` response follow with +the raw stream: + +``` +HTTP/1.1 101 UPGRADED +Connection: Upgrade +Upgrade: h2c +``` +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

SwarmInit(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Initialize a new swarm +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SwarmInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect swarm +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

SwarmJoin(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Join an existing swarm +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SwarmLeave(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Leave a swarm +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
force + + +boolean + + + + Force leave swarm, even if this is the last manager or that it will +break the cluster.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SwarmUnlock(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Unlock a locked manager +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SwarmUnlockkey(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get the unlock key +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

SwarmUpdate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Update a swarm +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
body + + The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +```
version + + +integer + + + + The version number of the swarm object being updated. This is +required to avoid conflicting writes.
rotateWorkerToken + + +boolean + + + + Rotate the worker join token.
rotateManagerToken + + +boolean + + + + Rotate the manager join token.
rotateManagerUnlockKey + + +boolean + + + + Rotate the manager unlock key.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SystemAuth(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Validate credentials for a registry and, if available, get an identity +token for accessing the registry without password. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
authConfig + + Authentication to check
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SystemDataUsage(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get data usage information +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

SystemEvents(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Stream real-time events from the server. + +Various objects within Docker report events when something happens to them. + +Containers report these events: `attach`, `commit`, `copy`, `create`, `destroy`, `detach`, `die`, `exec_create`, `exec_detach`, `exec_start`, `exec_die`, `export`, `health_status`, `kill`, `oom`, `pause`, `rename`, `resize`, `restart`, `start`, `stop`, `top`, `unpause`, `update`, and `prune` + +Images report these events: `delete`, `import`, `load`, `pull`, `push`, `save`, `tag`, `untag`, and `prune` + +Volumes report these events: `create`, `mount`, `unmount`, `destroy`, and `prune` + +Networks report these events: `create`, `connect`, `disconnect`, `destroy`, `update`, `remove`, and `prune` + +The Docker daemon reports these events: `reload` + +Services report these events: `create`, `update`, and `remove` + +Nodes report these events: `create`, `update`, and `remove` + +Secrets report these events: `create`, `update`, and `remove` + +Configs report these events: `create`, `update`, and `remove` + +The Builder reports `prune` events +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
since + + +string + + + + Show events created since this timestamp then stream new events.
until + + +string + + + + Show events created until this timestamp then stop streaming.
filters + + +string + + + + A JSON encoded value of filters (a `map[string][]string`) to process on the event list. Available filters: + +- `config=` config name or ID +- `container=` container name or ID +- `daemon=` daemon name or ID +- `event=` event type +- `image=` image name or ID +- `label=` image or container label +- `network=` network name or ID +- `node=` node ID +- `plugin`= plugin name or ID +- `scope`= local or swarm +- `secret=` secret name or ID +- `service=` service name or ID +- `type=` object to filter by, one of `container`, `image`, `volume`, `network`, `daemon`, `plugin`, `node`, `service`, `secret` or `config` +- `volume=` volume name
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

SystemInfo(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get system information +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

SystemPing(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ This is a dummy endpoint you can use to test if the server is accessible. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

SystemPingHead(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ This is a dummy endpoint you can use to test if the server is accessible. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

SystemVersion(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Returns the version of Docker that is running and various information about the system that Docker is running on. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters
+ + + + + + + + + + + + + + + + + + + + + + + + +

TaskInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a task +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID of the task
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

TaskList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ List tasks +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + A JSON encoded value of the filters (a `map[string][]string`) to +process on the tasks list. + +Available filters: + +- `desired-state=(running | shutdown | accepted)` +- `id=` +- `label=key` or `label="key=value"` +- `name=` +- `node=` +- `service=`
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

TaskLogs(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Get `stdout` and `stderr` logs from a task. +See also [`/containers/{id}/logs`](#operation/ContainerLogs). +*Note**: This endpoint works only for services with the `local`, +`json-file` or `journald` logging drivers. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
id + + +string + + + + ID of the task
details + + +boolean + + + + Show task context and extra details provided to logs.
follow + + +boolean + + + + Keep connection after returning logs.
stdout + + +boolean + + + + Return logs from `stdout`
stderr + + +boolean + + + + Return logs from `stderr`
since + + +integer + + + + Only return logs since this time, as a UNIX timestamp
timestamps + + +boolean + + + + Add timestamps to every log line
tail + + +string + + + + Only return this number of log lines from the end of the logs. +Specify as an integer or `all` to output all log lines.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

VolumeCreate(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Create a volume +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
volumeConfig + + Volume configuration
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

VolumeDelete(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Instruct the driver to remove the volume. +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Volume name or ID
force + + +boolean + + + + Force the removal of the volume
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

VolumeInspect(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Inspect a volume +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
name + + +string + + + + Volume name or ID
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

VolumeList(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ List volumes +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + JSON encoded value of the filters (a `map[string][]string`) to +process on the volumes list. Available filters: + +- `dangling=` When set to `true` (or `1`), returns all + volumes that are not in use by a container. When set to `false` + (or `0`), only volumes that are in use by one or more + containers are returned. +- `driver=` Matches volumes based on their driver. +- `label=` or `label=:` Matches volumes based on + the presence of a `label` alone or a `label` and a value. +- `name=` Matches all or part of a volume name.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +

VolumePrune(parameters)

+ + + + + + +
+ + +
Source:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ Delete unused volumes +
+ + + + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
parameters + + +object + + + + method options and parameters +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
filters + + +string + + + + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune volumes with (or without, in case `label!=...` is used) the specified labels.
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.eot b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.eot new file mode 100644 index 0000000..f2970bb Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.eot differ diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.ttf b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.ttf new file mode 100644 index 0000000..3bfd79b Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.ttf differ diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.woff b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.woff new file mode 100644 index 0000000..9260765 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.woff differ diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.woff2 b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.woff2 new file mode 100644 index 0000000..d9940cd Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Bold.woff2 differ diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.eot b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.eot new file mode 100644 index 0000000..735d12b Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.eot differ diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.ttf b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.ttf new file mode 100644 index 0000000..5da852a Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.ttf differ diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.woff b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.woff new file mode 100644 index 0000000..bf91832 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.woff differ diff --git a/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.woff2 b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.woff2 new file mode 100644 index 0000000..72d13c6 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Montserrat/Montserrat-Regular.woff2 differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot new file mode 100644 index 0000000..0f24510 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg new file mode 100644 index 0000000..5384f98 --- /dev/null +++ b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg @@ -0,0 +1,978 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf new file mode 100644 index 0000000..e6c158c Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff new file mode 100644 index 0000000..d0a1c29 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 new file mode 100644 index 0000000..d286974 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot new file mode 100644 index 0000000..b420448 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg new file mode 100644 index 0000000..dee0949 --- /dev/null +++ b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg @@ -0,0 +1,1049 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf new file mode 100644 index 0000000..4d56c33 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff new file mode 100644 index 0000000..4681019 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff differ diff --git a/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 new file mode 100644 index 0000000..8ddcae3 Binary files /dev/null and b/docs/fib-docker/1.0.0/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 differ diff --git a/docs/fib-docker/1.0.0/index.html b/docs/fib-docker/1.0.0/index.html new file mode 100644 index 0000000..909016b --- /dev/null +++ b/docs/fib-docker/1.0.0/index.html @@ -0,0 +1,100 @@ + + + + + + Home - Documentation + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+

fib-docker 1.0.0

+
+ + + + + + + + + + + + + +
+

Docker client for fibjs

+

Installation

+
fibjs --install fib-docker
+
+

Example Code

+
var Docker = require('fib-docker').Docker;
+
+var docker = new Docker({
+    domain: "http://%2Fvar%2Frun%2Fdocker.sock/v1.39",
+    headers: {
+        host: "localhost"
+    }
+});
+
+console.log(docker.SystemInfo());
+
+
+ + + + + + + + +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/index.js.html b/docs/fib-docker/1.0.0/index.js.html new file mode 100644 index 0000000..f2b7715 --- /dev/null +++ b/docs/fib-docker/1.0.0/index.js.html @@ -0,0 +1,6901 @@ + + + + + + index.js - Documentation + + + + + + + + + + + + + + + + + + + +
+ +

index.js

+ + + + + + + +
+
+
/*jshint -W069 */
+/**
+ * The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+ * @class Docker
+ * @param {(string|object)} [domainOrOptions] - The project domain or options object. If object, see the object's optional properties.
+ * @param {string} [domainOrOptions.domain] - The project domain
+ * @param {object} [domainOrOptions.token] - auth token - object with value property and optional headerOrQueryName and isQuery properties
+ */
+var Docker = (function(){
+    'use strict';
+
+    var http = require('http');
+    var util = require('util');
+
+    function Docker(options){
+        var domain = (typeof options === 'object') ? options.domain : options;
+        this.domain = domain ? domain : '';
+        if(this.domain.length === 0) {
+            throw new Error('Domain parameter must be specified as a string.');
+        }
+        this.headers = options.headers || {};
+    }
+
+    function mergeQueryParams(parameters, queryParameters) {
+        if (parameters.$queryParameters) {
+            Object.keys(parameters.$queryParameters)
+                  .forEach(function(parameterName) {
+                      var parameter = parameters.$queryParameters[parameterName];
+                      queryParameters[parameterName] = parameter;
+            });
+        }
+        return queryParameters;
+    }
+
+    function request(method, url, parameters, body, headers, queryParameters, form) {
+        var req = {};
+
+        if(Object.keys(queryParameters).length > 0) {
+            req.query = queryParameters;
+        }
+        if(Object.keys(headers).length > 0) {
+            req.headers = headers;
+        }
+
+        if(Object.keys(form).length > 0) {
+            req.body = form;
+        }else if(typeof(body) === 'object' && !(body instanceof Buffer)) {
+            if(Object.keys(body).length > 0) {
+                req.json = body;
+            }
+        } else if(body) {
+            req.body = body;
+        }
+
+        var response = http.request(method, url, req);
+
+        if (response.statusCode >= 200 && response.statusCode <= 299) {
+            return response.data;
+        }
+
+        throw new Error(response.data);
+    }
+
+
+        /**
+         * Returns a list of containers. For details on the format, see the
+[inspect endpoint](#operation/ContainerInspect).
+
+Note that it uses a different, smaller representation of a container
+than inspecting a single container. For example, the list of linked
+containers is not propagated .
+
+         * @method
+         * @name Docker#ContainerList
+         * @param {object} parameters - method options and parameters
+             * @param {boolean} parameters.all - Return all containers. By default, only running containers are shown.
+
+             * @param {integer} parameters.limit - Return this number of most recently created containers, including
+non-running ones.
+
+             * @param {boolean} parameters.size - Return the size of container as fields `SizeRw` and `SizeRootFs`.
+
+             * @param {string} parameters.filters - Filters to process on the container list, encoded as JSON (a
+`map[string][]string`). For example, `{"status": ["paused"]}` will
+only return paused containers.
+
+Available filters:
+
+- `ancestor`=(`<image-name>[:<tag>]`, `<image id>`, or `<image@digest>`)
+- `before`=(`<container id>` or `<container name>`)
+- `expose`=(`<port>[/<proto>]`|`<startport-endport>/[<proto>]`)
+- `exited=<int>` containers with exit code of `<int>`
+- `health`=(`starting`|`healthy`|`unhealthy`|`none`)
+- `id=<ID>` a container's ID
+- `isolation=`(`default`|`process`|`hyperv`) (Windows daemon only)
+- `is-task=`(`true`|`false`)
+- `label=key` or `label="key=value"` of a container label
+- `name=<name>` a container's name
+- `network`=(`<network id>` or `<network name>`)
+- `publish`=(`<port>[/<proto>]`|`<startport-endport>/[<proto>]`)
+- `since`=(`<container id>` or `<container name>`)
+- `status=`(`created`|`restarting`|`running`|`removing`|`paused`|`exited`|`dead`)
+- `volume`=(`<volume name>` or `<mount point destination>`)
+
+         */
+         Docker.prototype.ContainerList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/json';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['all'] !== undefined){
+                            queryParameters['all'] = parameters['all'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['limit'] !== undefined){
+                            queryParameters['limit'] = parameters['limit'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['size'] !== undefined){
+                            queryParameters['size'] = parameters['size'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a container
+         * @method
+         * @name Docker#ContainerCreate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Assign the specified name to the container. Must match
+`/?[a-zA-Z0-9][a-zA-Z0-9_.-]+`.
+
+             * @param {} parameters.body - Container to create
+         */
+         Docker.prototype.ContainerCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['name'] !== undefined){
+                            queryParameters['name'] = parameters['name'];
+                        }
+                
+                
+                
+
+
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+                if(parameters['body'] === undefined)
+                    throw new Error('Missing required  parameter: body');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Return low-level information about a container.
+         * @method
+         * @name Docker#ContainerInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {boolean} parameters.size - Return the size of container as fields `SizeRw` and `SizeRootFs`
+         */
+         Docker.prototype.ContainerInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/json';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['size'] !== undefined){
+                            queryParameters['size'] = parameters['size'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * On Unix systems, this is done by running the `ps` command. This endpoint
+is not supported on Windows.
+
+         * @method
+         * @name Docker#ContainerTop
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.psArgs - The arguments to pass to `ps`. For example, `aux`
+         */
+         Docker.prototype.ContainerTop = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/top';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                            /** set default value **/
+                            queryParameters['ps_args'] = -ef;
+
+                        if(parameters['psArgs'] !== undefined){
+                            queryParameters['ps_args'] = parameters['psArgs'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get `stdout` and `stderr` logs from a container.
+
+Note: This endpoint works only for containers with the `json-file` or
+`journald` logging driver.
+
+         * @method
+         * @name Docker#ContainerLogs
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {boolean} parameters.follow - Keep connection after returning logs.
+             * @param {boolean} parameters.stdout - Return logs from `stdout`
+             * @param {boolean} parameters.stderr - Return logs from `stderr`
+             * @param {integer} parameters.since - Only return logs since this time, as a UNIX timestamp
+             * @param {integer} parameters.until - Only return logs before this time, as a UNIX timestamp
+             * @param {boolean} parameters.timestamps - Add timestamps to every log line
+             * @param {string} parameters.tail - Only return this number of log lines from the end of the logs.
+Specify as an integer or `all` to output all log lines.
+
+         */
+         Docker.prototype.ContainerLogs = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/logs';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['follow'] !== undefined){
+                            queryParameters['follow'] = parameters['follow'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stdout'] !== undefined){
+                            queryParameters['stdout'] = parameters['stdout'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stderr'] !== undefined){
+                            queryParameters['stderr'] = parameters['stderr'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['since'] !== undefined){
+                            queryParameters['since'] = parameters['since'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['until'] !== undefined){
+                            queryParameters['until'] = parameters['until'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['timestamps'] !== undefined){
+                            queryParameters['timestamps'] = parameters['timestamps'];
+                        }
+                
+                
+                
+
+
+         
+                            /** set default value **/
+                            queryParameters['tail'] = all;
+
+                        if(parameters['tail'] !== undefined){
+                            queryParameters['tail'] = parameters['tail'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Returns which files in a container's filesystem have been added, deleted,
+or modified. The `Kind` of modification can be one of:
+
+- `0`: Modified
+- `1`: Added
+- `2`: Deleted
+
+         * @method
+         * @name Docker#ContainerChanges
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+         */
+         Docker.prototype.ContainerChanges = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/changes';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Export the contents of a container as a tarball.
+         * @method
+         * @name Docker#ContainerExport
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+         */
+         Docker.prototype.ContainerExport = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/export';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/octet-stream'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * This endpoint returns a live stream of a container’s resource usage
+statistics.
+
+The `precpu_stats` is the CPU statistic of the *previous* read, and is
+used to calculate the CPU usage percentage. It is not an exact copy
+of the `cpu_stats` field.
+
+If either `precpu_stats.online_cpus` or `cpu_stats.online_cpus` is
+nil then for compatibility with older daemons the length of the
+corresponding `cpu_usage.percpu_usage` array should be used.
+
+On a cgroup v2 host, the following fields are not set
+* `blkio_stats`: all fields other than `io_service_bytes_recursive`
+* `cpu_stats`: `cpu_usage.percpu_usage`
+* `memory_stats`: `max_usage` and `failcnt`
+Also, `memory_stats.stats` fields are incompatible with cgroup v1.
+
+To calculate the values shown by the `stats` command of the docker cli tool
+the following formulas can be used:
+* used_memory = `memory_stats.usage - memory_stats.stats.cache`
+* available_memory = `memory_stats.limit`
+* Memory usage % = `(used_memory / available_memory) * 100.0`
+* cpu_delta = `cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage`
+* system_cpu_delta = `cpu_stats.system_cpu_usage - precpu_stats.system_cpu_usage`
+* number_cpus = `lenght(cpu_stats.cpu_usage.percpu_usage)` or `cpu_stats.online_cpus`
+* CPU usage % = `(cpu_delta / system_cpu_delta) * number_cpus * 100.0`
+
+         * @method
+         * @name Docker#ContainerStats
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {boolean} parameters.stream - Stream the output. If false, the stats will be output once and then
+it will disconnect.
+
+             * @param {boolean} parameters.oneShot - Only get a single stat instead of waiting for 2 cycles. Must be used
+with `stream=false`.
+
+         */
+         Docker.prototype.ContainerStats = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/stats';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                            /** set default value **/
+                            queryParameters['stream'] = true;
+
+                        if(parameters['stream'] !== undefined){
+                            queryParameters['stream'] = parameters['stream'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['oneShot'] !== undefined){
+                            queryParameters['one-shot'] = parameters['oneShot'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Resize the TTY for a container.
+         * @method
+         * @name Docker#ContainerResize
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {integer} parameters.h - Height of the TTY session in characters
+             * @param {integer} parameters.w - Width of the TTY session in characters
+         */
+         Docker.prototype.ContainerResize = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/resize';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['text/plain'];
+                headers['content-type'] = ['application/octet-stream'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['h'] !== undefined){
+                            queryParameters['h'] = parameters['h'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['w'] !== undefined){
+                            queryParameters['w'] = parameters['w'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Start a container
+         * @method
+         * @name Docker#ContainerStart
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.detachKeys - Override the key sequence for detaching a container. Format is a
+single character `[a-Z]` or `ctrl-<value>` where `<value>` is one
+of: `a-z`, `@`, `^`, `[`, `,` or `_`.
+
+         */
+         Docker.prototype.ContainerStart = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/start';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['detachKeys'] !== undefined){
+                            queryParameters['detachKeys'] = parameters['detachKeys'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Stop a container
+         * @method
+         * @name Docker#ContainerStop
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {integer} parameters.t - Number of seconds to wait before killing the container
+         */
+         Docker.prototype.ContainerStop = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/stop';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['t'] !== undefined){
+                            queryParameters['t'] = parameters['t'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Restart a container
+         * @method
+         * @name Docker#ContainerRestart
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {integer} parameters.t - Number of seconds to wait before killing the container
+         */
+         Docker.prototype.ContainerRestart = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/restart';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['t'] !== undefined){
+                            queryParameters['t'] = parameters['t'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Send a POSIX signal to a container, defaulting to killing to the
+container.
+
+         * @method
+         * @name Docker#ContainerKill
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.signal - Signal to send to the container as an integer or string (e.g. `SIGINT`)
+         */
+         Docker.prototype.ContainerKill = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/kill';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                            /** set default value **/
+                            queryParameters['signal'] = SIGKILL;
+
+                        if(parameters['signal'] !== undefined){
+                            queryParameters['signal'] = parameters['signal'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Change various configuration options of a container without having to
+recreate it.
+
+         * @method
+         * @name Docker#ContainerUpdate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {} parameters.update - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.ContainerUpdate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/update';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                
+                
+                
+                    if(parameters['update'] !== undefined){
+                        body = parameters['update'];
+                    }
+
+
+                if(parameters['update'] === undefined)
+                    throw new Error('Missing required  parameter: update');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Rename a container
+         * @method
+         * @name Docker#ContainerRename
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.name - New name for the container
+         */
+         Docker.prototype.ContainerRename = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/rename';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['name'] !== undefined){
+                            queryParameters['name'] = parameters['name'];
+                        }
+                
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Use the freezer cgroup to suspend all processes in a container.
+
+Traditionally, when suspending a process the `SIGSTOP` signal is used,
+which is observable by the process being suspended. With the freezer
+cgroup the process is unaware, and unable to capture, that it is being
+suspended, and subsequently resumed.
+
+         * @method
+         * @name Docker#ContainerPause
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+         */
+         Docker.prototype.ContainerPause = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/pause';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Resume a container which has been paused.
+         * @method
+         * @name Docker#ContainerUnpause
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+         */
+         Docker.prototype.ContainerUnpause = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/unpause';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Attach to a container to read its output or send it input. You can attach
+to the same container multiple times and you can reattach to containers
+that have been detached.
+
+Either the `stream` or `logs` parameter must be `true` for this endpoint
+to do anything.
+
+See the [documentation for the `docker attach` command](https://docs.docker.com/engine/reference/commandline/attach/)
+for more details.
+
+### Hijacking
+
+This endpoint hijacks the HTTP connection to transport `stdin`, `stdout`,
+and `stderr` on the same socket.
+
+This is the response from the daemon for an attach request:
+
+```
+HTTP/1.1 200 OK
+Content-Type: application/vnd.docker.raw-stream
+
+[STREAM]
+```
+
+After the headers and two new lines, the TCP connection can now be used
+for raw, bidirectional communication between the client and server.
+
+To hint potential proxies about connection hijacking, the Docker client
+can also optionally send connection upgrade headers.
+
+For example, the client sends this request to upgrade the connection:
+
+```
+POST /containers/16253994b7c4/attach?stream=1&stdout=1 HTTP/1.1
+Upgrade: tcp
+Connection: Upgrade
+```
+
+The Docker daemon will respond with a `101 UPGRADED` response, and will
+similarly follow with the raw stream:
+
+```
+HTTP/1.1 101 UPGRADED
+Content-Type: application/vnd.docker.raw-stream
+Connection: Upgrade
+Upgrade: tcp
+
+[STREAM]
+```
+
+### Stream format
+
+When the TTY setting is disabled in [`POST /containers/create`](#operation/ContainerCreate),
+the stream over the hijacked connected is multiplexed to separate out
+`stdout` and `stderr`. The stream consists of a series of frames, each
+containing a header and a payload.
+
+The header contains the information which the stream writes (`stdout` or
+`stderr`). It also contains the size of the associated frame encoded in
+the last four bytes (`uint32`).
+
+It is encoded on the first eight bytes like this:
+
+```go
+header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4}
+```
+
+`STREAM_TYPE` can be:
+
+- 0: `stdin` (is written on `stdout`)
+- 1: `stdout`
+- 2: `stderr`
+
+`SIZE1, SIZE2, SIZE3, SIZE4` are the four bytes of the `uint32` size
+encoded as big endian.
+
+Following the header is the payload, which is the specified number of
+bytes of `STREAM_TYPE`.
+
+The simplest way to implement this protocol is the following:
+
+1. Read 8 bytes.
+2. Choose `stdout` or `stderr` depending on the first byte.
+3. Extract the frame size from the last four bytes.
+4. Read the extracted size and output it on the correct output.
+5. Goto 1.
+
+### Stream format when using a TTY
+
+When the TTY setting is enabled in [`POST /containers/create`](#operation/ContainerCreate),
+the stream is not multiplexed. The data exchanged over the hijacked
+connection is simply the raw data from the process PTY and client's
+`stdin`.
+
+         * @method
+         * @name Docker#ContainerAttach
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.detachKeys - Override the key sequence for detaching a container.Format is a single
+character `[a-Z]` or `ctrl-<value>` where `<value>` is one of: `a-z`,
+`@`, `^`, `[`, `,` or `_`.
+
+             * @param {boolean} parameters.logs - Replay previous logs from the container.
+
+This is useful for attaching to a container that has started and you
+want to output everything since the container started.
+
+If `stream` is also enabled, once all the previous output has been
+returned, it will seamlessly transition into streaming current
+output.
+
+             * @param {boolean} parameters.stream - Stream attached streams from the time the request was made onwards.
+
+             * @param {boolean} parameters.stdin - Attach to `stdin`
+             * @param {boolean} parameters.stdout - Attach to `stdout`
+             * @param {boolean} parameters.stderr - Attach to `stderr`
+         */
+         Docker.prototype.ContainerAttach = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/attach';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/vnd.docker.raw-stream'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['detachKeys'] !== undefined){
+                            queryParameters['detachKeys'] = parameters['detachKeys'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['logs'] !== undefined){
+                            queryParameters['logs'] = parameters['logs'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stream'] !== undefined){
+                            queryParameters['stream'] = parameters['stream'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stdin'] !== undefined){
+                            queryParameters['stdin'] = parameters['stdin'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stdout'] !== undefined){
+                            queryParameters['stdout'] = parameters['stdout'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stderr'] !== undefined){
+                            queryParameters['stderr'] = parameters['stderr'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Attach to a container via a websocket
+         * @method
+         * @name Docker#ContainerAttachWebsocket
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.detachKeys - Override the key sequence for detaching a container.Format is a single
+character `[a-Z]` or `ctrl-<value>` where `<value>` is one of: `a-z`,
+`@`, `^`, `[`, `,`, or `_`.
+
+             * @param {boolean} parameters.logs - Return logs
+             * @param {boolean} parameters.stream - Return stream
+             * @param {boolean} parameters.stdin - Attach to `stdin`
+             * @param {boolean} parameters.stdout - Attach to `stdout`
+             * @param {boolean} parameters.stderr - Attach to `stderr`
+         */
+         Docker.prototype.ContainerAttachWebsocket = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/attach/ws';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['detachKeys'] !== undefined){
+                            queryParameters['detachKeys'] = parameters['detachKeys'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['logs'] !== undefined){
+                            queryParameters['logs'] = parameters['logs'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stream'] !== undefined){
+                            queryParameters['stream'] = parameters['stream'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stdin'] !== undefined){
+                            queryParameters['stdin'] = parameters['stdin'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stdout'] !== undefined){
+                            queryParameters['stdout'] = parameters['stdout'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stderr'] !== undefined){
+                            queryParameters['stderr'] = parameters['stderr'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Block until a container stops, then returns the exit code.
+         * @method
+         * @name Docker#ContainerWait
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.condition - Wait until a container state reaches the given condition, either
+'not-running' (default), 'next-exit', or 'removed'.
+
+         */
+         Docker.prototype.ContainerWait = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/wait';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                            /** set default value **/
+                            queryParameters['condition'] = not-running;
+
+                        if(parameters['condition'] !== undefined){
+                            queryParameters['condition'] = parameters['condition'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Remove a container
+         * @method
+         * @name Docker#ContainerDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {boolean} parameters.v - Remove anonymous volumes associated with the container.
+             * @param {boolean} parameters.force - If the container is running, kill it before removing it.
+             * @param {boolean} parameters.link - Remove the specified link associated with the container.
+         */
+         Docker.prototype.ContainerDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['v'] !== undefined){
+                            queryParameters['v'] = parameters['v'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['force'] !== undefined){
+                            queryParameters['force'] = parameters['force'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['link'] !== undefined){
+                            queryParameters['link'] = parameters['link'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * A response header `X-Docker-Container-Path-Stat` is returned, containing
+a base64 - encoded JSON object with some filesystem header information
+about the path.
+
+         * @method
+         * @name Docker#ContainerArchiveInfo
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.path - Resource in the container’s filesystem to archive.
+         */
+         Docker.prototype.ContainerArchiveInfo = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/archive';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['path'] !== undefined){
+                            queryParameters['path'] = parameters['path'];
+                        }
+                
+                
+                
+
+
+                if(parameters['path'] === undefined)
+                    throw new Error('Missing required  parameter: path');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('HEAD', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get a tar archive of a resource in the filesystem of container id.
+         * @method
+         * @name Docker#ContainerArchive
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.path - Resource in the container’s filesystem to archive.
+         */
+         Docker.prototype.ContainerArchive = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/archive';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/x-tar'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['path'] !== undefined){
+                            queryParameters['path'] = parameters['path'];
+                        }
+                
+                
+                
+
+
+                if(parameters['path'] === undefined)
+                    throw new Error('Missing required  parameter: path');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Upload a tar archive to be extracted to a path in the filesystem of container id.
+         * @method
+         * @name Docker#PutContainerArchive
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the container
+             * @param {string} parameters.path - Path to a directory in the container to extract the archive’s contents into. 
+             * @param {string} parameters.noOverwriteDirNonDir - If `1`, `true`, or `True` then it will be an error if unpacking the
+given content would cause an existing directory to be replaced with
+a non-directory and vice versa.
+
+             * @param {string} parameters.copyUidgid - If `1`, `true`, then it will copy UID/GID maps to the dest file or
+dir
+
+             * @param {} parameters.inputStream - The input stream must be a tar archive compressed with one of the
+following algorithms: `identity` (no compression), `gzip`, `bzip2`,
+or `xz`.
+
+         */
+         Docker.prototype.PutContainerArchive = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/archive';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/x-tar'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['path'] !== undefined){
+                            queryParameters['path'] = parameters['path'];
+                        }
+                
+                
+                
+
+
+                if(parameters['path'] === undefined)
+                    throw new Error('Missing required  parameter: path');
+         
+
+                        if(parameters['noOverwriteDirNonDir'] !== undefined){
+                            queryParameters['noOverwriteDirNonDir'] = parameters['noOverwriteDirNonDir'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['copyUidgid'] !== undefined){
+                            queryParameters['copyUIDGID'] = parameters['copyUidgid'];
+                        }
+                
+                
+                
+
+
+         
+                
+                
+                
+                    if(parameters['inputStream'] !== undefined){
+                        body = parameters['inputStream'];
+                    }
+
+
+                if(parameters['inputStream'] === undefined)
+                    throw new Error('Missing required  parameter: inputStream');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('PUT', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete stopped containers
+         * @method
+         * @name Docker#ContainerPrune
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`).
+
+Available filters:
+- `until=<timestamp>` Prune containers created before this timestamp. The `<timestamp>` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time.
+- `label` (`label=<key>`, `label=<key>=<value>`, `label!=<key>`, or `label!=<key>=<value>`) Prune containers with (or without, in case `label!=...` is used) the specified labels.
+
+         */
+         Docker.prototype.ContainerPrune = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/prune';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Returns a list of images on the server. Note that it uses a different, smaller representation of an image than inspecting a single image.
+         * @method
+         * @name Docker#ImageList
+         * @param {object} parameters - method options and parameters
+             * @param {boolean} parameters.all - Show all images. Only images from a final layer (no children) are shown by default.
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to
+process on the images list.
+
+Available filters:
+
+- `before`=(`<image-name>[:<tag>]`,  `<image id>` or `<image@digest>`)
+- `dangling=true`
+- `label=key` or `label="key=value"` of an image label
+- `reference`=(`<image-name>[:<tag>]`)
+- `since`=(`<image-name>[:<tag>]`,  `<image id>` or `<image@digest>`)
+
+             * @param {boolean} parameters.digests - Show digest information as a `RepoDigests` field on each image.
+         */
+         Docker.prototype.ImageList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/json';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['all'] !== undefined){
+                            queryParameters['all'] = parameters['all'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['digests'] !== undefined){
+                            queryParameters['digests'] = parameters['digests'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Build an image from a tar archive with a `Dockerfile` in it.
+
+The `Dockerfile` specifies how the image is built from the tar archive. It is typically in the archive's root, but can be at a different path or have a different name by specifying the `dockerfile` parameter. [See the `Dockerfile` reference for more information](https://docs.docker.com/engine/reference/builder/).
+
+The Docker daemon performs a preliminary validation of the `Dockerfile` before starting the build, and returns an error if the syntax is incorrect. After that, each instruction is run one-by-one until the ID of the new image is output.
+
+The build is canceled if the client drops the connection by quitting or being killed.
+
+         * @method
+         * @name Docker#ImageBuild
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.inputStream - A tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz.
+             * @param {string} parameters.dockerfile - Path within the build context to the `Dockerfile`. This is ignored if `remote` is specified and points to an external `Dockerfile`.
+             * @param {string} parameters.t - A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default `latest` value is assumed. You can provide several `t` parameters.
+             * @param {string} parameters.extrahosts - Extra hosts to add to /etc/hosts
+             * @param {string} parameters.remote - A Git repository URI or HTTP/HTTPS context URI. If the URI points to a single text file, the file’s contents are placed into a file called `Dockerfile` and the image is built from that file. If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build. If the URI points to a tarball and the `dockerfile` parameter is also specified, there must be a file with the corresponding path inside the tarball.
+             * @param {boolean} parameters.q - Suppress verbose build output.
+             * @param {boolean} parameters.nocache - Do not use the cache when building the image.
+             * @param {string} parameters.cachefrom - JSON array of images used for build cache resolution.
+             * @param {string} parameters.pull - Attempt to pull the image even if an older image exists locally.
+             * @param {boolean} parameters.rm - Remove intermediate containers after a successful build.
+             * @param {boolean} parameters.forcerm - Always remove intermediate containers, even upon failure.
+             * @param {integer} parameters.memory - Set memory limit for build.
+             * @param {integer} parameters.memswap - Total memory (memory + swap). Set as `-1` to disable swap.
+             * @param {integer} parameters.cpushares - CPU shares (relative weight).
+             * @param {string} parameters.cpusetcpus - CPUs in which to allow execution (e.g., `0-3`, `0,1`).
+             * @param {integer} parameters.cpuperiod - The length of a CPU period in microseconds.
+             * @param {integer} parameters.cpuquota - Microseconds of CPU time that the container can get in a CPU period.
+             * @param {string} parameters.buildargs - JSON map of string pairs for build-time variables. Users pass these values at build-time. Docker uses the buildargs as the environment context for commands run via the `Dockerfile` RUN instruction, or for variable expansion in other `Dockerfile` instructions. This is not meant for passing secret values.
+
+For example, the build arg `FOO=bar` would become `{"FOO":"bar"}` in JSON. This would result in the query parameter `buildargs={"FOO":"bar"}`. Note that `{"FOO":"bar"}` should be URI component encoded.
+
+[Read more about the buildargs instruction.](https://docs.docker.com/engine/reference/builder/#arg)
+
+             * @param {integer} parameters.shmsize - Size of `/dev/shm` in bytes. The size must be greater than 0. If omitted the system uses 64MB.
+             * @param {boolean} parameters.squash - Squash the resulting images layers into a single layer. *(Experimental release only.)*
+             * @param {string} parameters.labels - Arbitrary key/value labels to set on the image, as a JSON map of string pairs.
+             * @param {string} parameters.networkmode - Sets the networking mode for the run commands during build. Supported
+standard values are: `bridge`, `host`, `none`, and `container:<name|id>`.
+Any other value is taken as a custom network's name or ID to which this
+container should connect to.
+
+            
+             * @param {string} parameters.xRegistryConfig - This is a base64-encoded JSON object with auth configurations for multiple registries that a build may refer to.
+
+The key is a registry URL, and the value is an auth configuration object, [as described in the authentication section](#section/Authentication). For example:
+
+```
+{
+  "docker.example.com": {
+    "username": "janedoe",
+    "password": "hunter2"
+  },
+  "https://index.docker.io/v1/": {
+    "username": "mobydock",
+    "password": "conta1n3rize14"
+  }
+}
+```
+
+Only the registry domain name (and port if not the default 443) are required. However, for legacy reasons, the Docker Hub registry must be specified with both a `https://` prefix and a `/v1/` suffix even though Docker will prefer to use the v2 registry API.
+
+             * @param {string} parameters.platform - Platform in the format os[/arch[/variant]]
+             * @param {string} parameters.target - Target build stage
+             * @param {string} parameters.outputs - BuildKit output configuration
+         */
+         Docker.prototype.ImageBuild = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/build';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/octet-stream'];
+
+                
+                
+                
+                    if(parameters['inputStream'] !== undefined){
+                        body = parameters['inputStream'];
+                    }
+
+
+         
+                            /** set default value **/
+                            queryParameters['dockerfile'] = Dockerfile;
+
+                        if(parameters['dockerfile'] !== undefined){
+                            queryParameters['dockerfile'] = parameters['dockerfile'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['t'] !== undefined){
+                            queryParameters['t'] = parameters['t'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['extrahosts'] !== undefined){
+                            queryParameters['extrahosts'] = parameters['extrahosts'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['remote'] !== undefined){
+                            queryParameters['remote'] = parameters['remote'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['q'] !== undefined){
+                            queryParameters['q'] = parameters['q'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['nocache'] !== undefined){
+                            queryParameters['nocache'] = parameters['nocache'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['cachefrom'] !== undefined){
+                            queryParameters['cachefrom'] = parameters['cachefrom'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['pull'] !== undefined){
+                            queryParameters['pull'] = parameters['pull'];
+                        }
+                
+                
+                
+
+
+         
+                            /** set default value **/
+                            queryParameters['rm'] = true;
+
+                        if(parameters['rm'] !== undefined){
+                            queryParameters['rm'] = parameters['rm'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['forcerm'] !== undefined){
+                            queryParameters['forcerm'] = parameters['forcerm'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['memory'] !== undefined){
+                            queryParameters['memory'] = parameters['memory'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['memswap'] !== undefined){
+                            queryParameters['memswap'] = parameters['memswap'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['cpushares'] !== undefined){
+                            queryParameters['cpushares'] = parameters['cpushares'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['cpusetcpus'] !== undefined){
+                            queryParameters['cpusetcpus'] = parameters['cpusetcpus'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['cpuperiod'] !== undefined){
+                            queryParameters['cpuperiod'] = parameters['cpuperiod'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['cpuquota'] !== undefined){
+                            queryParameters['cpuquota'] = parameters['cpuquota'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['buildargs'] !== undefined){
+                            queryParameters['buildargs'] = parameters['buildargs'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['shmsize'] !== undefined){
+                            queryParameters['shmsize'] = parameters['shmsize'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['squash'] !== undefined){
+                            queryParameters['squash'] = parameters['squash'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['labels'] !== undefined){
+                            queryParameters['labels'] = parameters['labels'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['networkmode'] !== undefined){
+                            queryParameters['networkmode'] = parameters['networkmode'];
+                        }
+                
+                
+                
+
+
+         
+                
+                
+                        headers['Content-type'] = 'application/x-tar';
+                
+
+
+         
+                
+                
+                        if(parameters['xRegistryConfig'] !== undefined){
+                            headers['X-Registry-Config'] = parameters['xRegistryConfig'];
+                        }
+                
+
+
+         
+
+                        if(parameters['platform'] !== undefined){
+                            queryParameters['platform'] = parameters['platform'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['target'] !== undefined){
+                            queryParameters['target'] = parameters['target'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['outputs'] !== undefined){
+                            queryParameters['outputs'] = parameters['outputs'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete builder cache
+         * @method
+         * @name Docker#BuildPrune
+         * @param {object} parameters - method options and parameters
+             * @param {integer} parameters.keepStorage - Amount of disk space in bytes to keep for cache
+             * @param {boolean} parameters.all - Remove all types of build cache
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to
+process on the list of build cache objects.
+
+Available filters:
+
+- `until=<duration>`: duration relative to daemon's time, during which build cache was not used, in Go's duration format (e.g., '24h')
+- `id=<id>`
+- `parent=<id>`
+- `type=<string>`
+- `description=<string>`
+- `inuse`
+- `shared`
+- `private`
+
+         */
+         Docker.prototype.BuildPrune = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/build/prune';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['keepStorage'] !== undefined){
+                            queryParameters['keep-storage'] = parameters['keepStorage'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['all'] !== undefined){
+                            queryParameters['all'] = parameters['all'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create an image by either pulling it from a registry or importing it.
+         * @method
+         * @name Docker#ImageCreate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.fromImage - Name of the image to pull. The name may include a tag or digest. This parameter may only be used when pulling an image. The pull is cancelled if the HTTP connection is closed.
+             * @param {string} parameters.fromSrc - Source to import. The value may be a URL from which the image can be retrieved or `-` to read the image from the request body. This parameter may only be used when importing an image.
+             * @param {string} parameters.repo - Repository name given to an image when it is imported. The repo may include a tag. This parameter may only be used when importing an image.
+             * @param {string} parameters.tag - Tag or digest. If empty when pulling an image, this causes all tags for the given image to be pulled.
+             * @param {string} parameters.message - Set commit message for imported image.
+             * @param {} parameters.inputImage - Image content if the value `-` has been specified in fromSrc query parameter
+             * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration.
+
+Refer to the [authentication section](#section/Authentication) for
+details.
+
+             * @param {string} parameters.platform - Platform in the format os[/arch[/variant]]
+         */
+         Docker.prototype.ImageCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['text/plain'];
+
+
+                        if(parameters['fromImage'] !== undefined){
+                            queryParameters['fromImage'] = parameters['fromImage'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['fromSrc'] !== undefined){
+                            queryParameters['fromSrc'] = parameters['fromSrc'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['repo'] !== undefined){
+                            queryParameters['repo'] = parameters['repo'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['tag'] !== undefined){
+                            queryParameters['tag'] = parameters['tag'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['message'] !== undefined){
+                            queryParameters['message'] = parameters['message'];
+                        }
+                
+                
+                
+
+
+         
+                
+                
+                
+                    if(parameters['inputImage'] !== undefined){
+                        body = parameters['inputImage'];
+                    }
+
+
+         
+                
+                
+                        if(parameters['xRegistryAuth'] !== undefined){
+                            headers['X-Registry-Auth'] = parameters['xRegistryAuth'];
+                        }
+                
+
+
+         
+
+                        if(parameters['platform'] !== undefined){
+                            queryParameters['platform'] = parameters['platform'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Return low-level information about an image.
+         * @method
+         * @name Docker#ImageInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Image name or id
+         */
+         Docker.prototype.ImageInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/{name}/json';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Return parent layers of an image.
+         * @method
+         * @name Docker#ImageHistory
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Image name or ID
+         */
+         Docker.prototype.ImageHistory = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/{name}/history';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Push an image to a registry.
+
+If you wish to push an image on to a private registry, that image must
+already have a tag which references the registry. For example,
+`registry.example.com/myimage:latest`.
+
+The push is cancelled if the HTTP connection is closed.
+
+         * @method
+         * @name Docker#ImagePush
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Image name or ID.
+             * @param {string} parameters.tag - The tag to associate with the image on the registry.
+             * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration.
+
+Refer to the [authentication section](#section/Authentication) for
+details.
+
+         */
+         Docker.prototype.ImagePush = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/{name}/push';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/octet-stream'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+
+                        if(parameters['tag'] !== undefined){
+                            queryParameters['tag'] = parameters['tag'];
+                        }
+                
+                
+                
+
+
+         
+                
+                
+                        if(parameters['xRegistryAuth'] !== undefined){
+                            headers['X-Registry-Auth'] = parameters['xRegistryAuth'];
+                        }
+                
+
+
+                if(parameters['xRegistryAuth'] === undefined)
+                    throw new Error('Missing required  parameter: xRegistryAuth');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Tag an image so that it becomes part of a repository.
+         * @method
+         * @name Docker#ImageTag
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Image name or ID to tag.
+             * @param {string} parameters.repo - The repository to tag in. For example, `someuser/someimage`.
+             * @param {string} parameters.tag - The name of the new tag.
+         */
+         Docker.prototype.ImageTag = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/{name}/tag';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+
+                        if(parameters['repo'] !== undefined){
+                            queryParameters['repo'] = parameters['repo'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['tag'] !== undefined){
+                            queryParameters['tag'] = parameters['tag'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Remove an image, along with any untagged parent images that were
+referenced by that image.
+
+Images can't be removed if they have descendant images, are being
+used by a running container or are being used by a build.
+
+         * @method
+         * @name Docker#ImageDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Image name or ID
+             * @param {boolean} parameters.force - Remove the image even if it is being used by stopped containers or has other tags
+             * @param {boolean} parameters.noprune - Do not delete untagged parent images
+         */
+         Docker.prototype.ImageDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/{name}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+
+                        if(parameters['force'] !== undefined){
+                            queryParameters['force'] = parameters['force'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['noprune'] !== undefined){
+                            queryParameters['noprune'] = parameters['noprune'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Search for an image on Docker Hub.
+         * @method
+         * @name Docker#ImageSearch
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.term - Term to search
+             * @param {integer} parameters.limit - Maximum number of results to return
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to process on the images list. Available filters:
+
+- `is-automated=(true|false)`
+- `is-official=(true|false)`
+- `stars=<number>` Matches images that has at least 'number' stars.
+
+         */
+         Docker.prototype.ImageSearch = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/search';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['term'] !== undefined){
+                            queryParameters['term'] = parameters['term'];
+                        }
+                
+                
+                
+
+
+                if(parameters['term'] === undefined)
+                    throw new Error('Missing required  parameter: term');
+         
+
+                        if(parameters['limit'] !== undefined){
+                            queryParameters['limit'] = parameters['limit'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete unused images
+         * @method
+         * @name Docker#ImagePrune
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`). Available filters:
+
+- `dangling=<boolean>` When set to `true` (or `1`), prune only
+   unused *and* untagged images. When set to `false`
+   (or `0`), all unused images are pruned.
+- `until=<string>` Prune images created before this timestamp. The `<timestamp>` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time.
+- `label` (`label=<key>`, `label=<key>=<value>`, `label!=<key>`, or `label!=<key>=<value>`) Prune images with (or without, in case `label!=...` is used) the specified labels.
+
+         */
+         Docker.prototype.ImagePrune = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/prune';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Validate credentials for a registry and, if available, get an identity
+token for accessing the registry without password.
+
+         * @method
+         * @name Docker#SystemAuth
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.authConfig - Authentication to check
+         */
+         Docker.prototype.SystemAuth = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/auth';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['authConfig'] !== undefined){
+                        body = parameters['authConfig'];
+                    }
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get system information
+         * @method
+         * @name Docker#SystemInfo
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.SystemInfo = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/info';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Returns the version of Docker that is running and various information about the system that Docker is running on.
+         * @method
+         * @name Docker#SystemVersion
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.SystemVersion = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/version';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * This is a dummy endpoint you can use to test if the server is accessible.
+         * @method
+         * @name Docker#SystemPing
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.SystemPing = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/_ping';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['text/plain'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * This is a dummy endpoint you can use to test if the server is accessible.
+         * @method
+         * @name Docker#SystemPingHead
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.SystemPingHead = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/_ping';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['text/plain'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('HEAD', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a new image from a container
+         * @method
+         * @name Docker#ImageCommit
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.containerConfig - The container configuration
+             * @param {string} parameters.container - The ID or name of the container to commit
+             * @param {string} parameters.repo - Repository name for the created image
+             * @param {string} parameters.tag - Tag name for the create image
+             * @param {string} parameters.comment - Commit message
+             * @param {string} parameters.author - Author of the image (e.g., `John Hannibal Smith <hannibal@a-team.com>`)
+             * @param {boolean} parameters.pause - Whether to pause the container before committing
+             * @param {string} parameters.changes - `Dockerfile` instructions to apply while committing
+         */
+         Docker.prototype.ImageCommit = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/commit';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['containerConfig'] !== undefined){
+                        body = parameters['containerConfig'];
+                    }
+
+
+         
+
+                        if(parameters['container'] !== undefined){
+                            queryParameters['container'] = parameters['container'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['repo'] !== undefined){
+                            queryParameters['repo'] = parameters['repo'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['tag'] !== undefined){
+                            queryParameters['tag'] = parameters['tag'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['comment'] !== undefined){
+                            queryParameters['comment'] = parameters['comment'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['author'] !== undefined){
+                            queryParameters['author'] = parameters['author'];
+                        }
+                
+                
+                
+
+
+         
+                            /** set default value **/
+                            queryParameters['pause'] = true;
+
+                        if(parameters['pause'] !== undefined){
+                            queryParameters['pause'] = parameters['pause'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['changes'] !== undefined){
+                            queryParameters['changes'] = parameters['changes'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Stream real-time events from the server.
+
+Various objects within Docker report events when something happens to them.
+
+Containers report these events: `attach`, `commit`, `copy`, `create`, `destroy`, `detach`, `die`, `exec_create`, `exec_detach`, `exec_start`, `exec_die`, `export`, `health_status`, `kill`, `oom`, `pause`, `rename`, `resize`, `restart`, `start`, `stop`, `top`, `unpause`, `update`, and `prune`
+
+Images report these events: `delete`, `import`, `load`, `pull`, `push`, `save`, `tag`, `untag`, and `prune`
+
+Volumes report these events: `create`, `mount`, `unmount`, `destroy`, and `prune`
+
+Networks report these events: `create`, `connect`, `disconnect`, `destroy`, `update`, `remove`, and `prune`
+
+The Docker daemon reports these events: `reload`
+
+Services report these events: `create`, `update`, and `remove`
+
+Nodes report these events: `create`, `update`, and `remove`
+
+Secrets report these events: `create`, `update`, and `remove`
+
+Configs report these events: `create`, `update`, and `remove`
+
+The Builder reports `prune` events
+
+         * @method
+         * @name Docker#SystemEvents
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.since - Show events created since this timestamp then stream new events.
+             * @param {string} parameters.until - Show events created until this timestamp then stop streaming.
+             * @param {string} parameters.filters - A JSON encoded value of filters (a `map[string][]string`) to process on the event list. Available filters:
+
+- `config=<string>` config name or ID
+- `container=<string>` container name or ID
+- `daemon=<string>` daemon name or ID
+- `event=<string>` event type
+- `image=<string>` image name or ID
+- `label=<string>` image or container label
+- `network=<string>` network name or ID
+- `node=<string>` node ID
+- `plugin`=<string> plugin name or ID
+- `scope`=<string> local or swarm
+- `secret=<string>` secret name or ID
+- `service=<string>` service name or ID
+- `type=<string>` object to filter by, one of `container`, `image`, `volume`, `network`, `daemon`, `plugin`, `node`, `service`, `secret` or `config`
+- `volume=<string>` volume name
+
+         */
+         Docker.prototype.SystemEvents = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/events';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['since'] !== undefined){
+                            queryParameters['since'] = parameters['since'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['until'] !== undefined){
+                            queryParameters['until'] = parameters['until'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get data usage information
+         * @method
+         * @name Docker#SystemDataUsage
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.SystemDataUsage = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/system/df';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get a tarball containing all images and metadata for a repository.
+
+If `name` is a specific name and tag (e.g. `ubuntu:latest`), then only that image (and its parents) are returned. If `name` is an image ID, similarly only that image (and its parents) are returned, but with the exclusion of the `repositories` file in the tarball, as there were no image names referenced.
+
+### Image tarball format
+
+An image tarball contains one directory per image layer (named using its long ID), each containing these files:
+
+- `VERSION`: currently `1.0` - the file format version
+- `json`: detailed layer information, similar to `docker inspect layer_id`
+- `layer.tar`: A tarfile containing the filesystem changes in this layer
+
+The `layer.tar` file contains `aufs` style `.wh..wh.aufs` files and directories for storing attribute changes and deletions.
+
+If the tarball defines a repository, the tarball should also include a `repositories` file at the root that contains a list of repository and tag names mapped to layer IDs.
+
+```json
+{
+  "hello-world": {
+    "latest": "565a9d68a73f6706862bfe8409a7f659776d4d60a8d096eb4a3cbce6999cc2a1"
+  }
+}
+```
+
+         * @method
+         * @name Docker#ImageGet
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Image name or ID
+         */
+         Docker.prototype.ImageGet = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/{name}/get';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/x-tar'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get a tarball containing all images and metadata for several image
+repositories.
+
+For each value of the `names` parameter: if it is a specific name and
+tag (e.g. `ubuntu:latest`), then only that image (and its parents) are
+returned; if it is an image ID, similarly only that image (and its parents)
+are returned and there would be no names referenced in the 'repositories'
+file for this image ID.
+
+For details on the format, see the [export image endpoint](#operation/ImageGet).
+
+         * @method
+         * @name Docker#ImageGetAll
+         * @param {object} parameters - method options and parameters
+             * @param {array} parameters.names - Image names to filter by
+         */
+         Docker.prototype.ImageGetAll = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/get';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/x-tar'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['names'] !== undefined){
+                            queryParameters['names'] = parameters['names'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Load a set of images and tags into a repository.
+
+For details on the format, see the [export image endpoint](#operation/ImageGet).
+
+         * @method
+         * @name Docker#ImageLoad
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.imagesTarball - Tar archive containing images
+             * @param {boolean} parameters.quiet - Suppress progress details during load.
+         */
+         Docker.prototype.ImageLoad = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/images/load';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/x-tar'];
+
+                
+                
+                
+                    if(parameters['imagesTarball'] !== undefined){
+                        body = parameters['imagesTarball'];
+                    }
+
+
+         
+
+                        if(parameters['quiet'] !== undefined){
+                            queryParameters['quiet'] = parameters['quiet'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Run a command inside a running container.
+         * @method
+         * @name Docker#ContainerExec
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.execConfig - Exec configuration
+             * @param {string} parameters.id - ID or name of container
+         */
+         Docker.prototype.ContainerExec = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/containers/{id}/exec';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['execConfig'] !== undefined){
+                        body = parameters['execConfig'];
+                    }
+
+
+                if(parameters['execConfig'] === undefined)
+                    throw new Error('Missing required  parameter: execConfig');
+         
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Starts a previously set up exec instance. If detach is true, this endpoint
+returns immediately after starting the command. Otherwise, it sets up an
+interactive session with the command.
+
+         * @method
+         * @name Docker#ExecStart
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.execStartConfig - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+             * @param {string} parameters.id - Exec instance ID
+         */
+         Docker.prototype.ExecStart = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/exec/{id}/start';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/vnd.docker.raw-stream'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['execStartConfig'] !== undefined){
+                        body = parameters['execStartConfig'];
+                    }
+
+
+         
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Resize the TTY session used by an exec instance. This endpoint only works
+if `tty` was specified as part of creating and starting the exec instance.
+
+         * @method
+         * @name Docker#ExecResize
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - Exec instance ID
+             * @param {integer} parameters.h - Height of the TTY session in characters
+             * @param {integer} parameters.w - Width of the TTY session in characters
+         */
+         Docker.prototype.ExecResize = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/exec/{id}/resize';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['h'] !== undefined){
+                            queryParameters['h'] = parameters['h'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['w'] !== undefined){
+                            queryParameters['w'] = parameters['w'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Return low-level information about an exec instance.
+         * @method
+         * @name Docker#ExecInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - Exec instance ID
+         */
+         Docker.prototype.ExecInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/exec/{id}/json';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * List volumes
+         * @method
+         * @name Docker#VolumeList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - JSON encoded value of the filters (a `map[string][]string`) to
+process on the volumes list. Available filters:
+
+- `dangling=<boolean>` When set to `true` (or `1`), returns all
+   volumes that are not in use by a container. When set to `false`
+   (or `0`), only volumes that are in use by one or more
+   containers are returned.
+- `driver=<volume-driver-name>` Matches volumes based on their driver.
+- `label=<key>` or `label=<key>:<value>` Matches volumes based on
+   the presence of a `label` alone or a `label` and a value.
+- `name=<volume-name>` Matches all or part of a volume name.
+
+         */
+         Docker.prototype.VolumeList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/volumes';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a volume
+         * @method
+         * @name Docker#VolumeCreate
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.volumeConfig - Volume configuration
+         */
+         Docker.prototype.VolumeCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/volumes/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['volumeConfig'] !== undefined){
+                        body = parameters['volumeConfig'];
+                    }
+
+
+                if(parameters['volumeConfig'] === undefined)
+                    throw new Error('Missing required  parameter: volumeConfig');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a volume
+         * @method
+         * @name Docker#VolumeInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Volume name or ID
+         */
+         Docker.prototype.VolumeInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/volumes/{name}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Instruct the driver to remove the volume.
+         * @method
+         * @name Docker#VolumeDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Volume name or ID
+             * @param {boolean} parameters.force - Force the removal of the volume
+         */
+         Docker.prototype.VolumeDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/volumes/{name}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+
+                        if(parameters['force'] !== undefined){
+                            queryParameters['force'] = parameters['force'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete unused volumes
+         * @method
+         * @name Docker#VolumePrune
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`).
+
+Available filters:
+- `label` (`label=<key>`, `label=<key>=<value>`, `label!=<key>`, or `label!=<key>=<value>`) Prune volumes with (or without, in case `label!=...` is used) the specified labels.
+
+         */
+         Docker.prototype.VolumePrune = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/volumes/prune';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Returns a list of networks. For details on the format, see the
+[network inspect endpoint](#operation/NetworkInspect).
+
+Note that it uses a different, smaller representation of a network than
+inspecting a single network. For example, the list of containers attached
+to the network is not propagated in API versions 1.28 and up.
+
+         * @method
+         * @name Docker#NetworkList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - JSON encoded value of the filters (a `map[string][]string`) to process
+on the networks list.
+
+Available filters:
+
+- `dangling=<boolean>` When set to `true` (or `1`), returns all
+   networks that are not in use by a container. When set to `false`
+   (or `0`), only networks that are in use by one or more
+   containers are returned.
+- `driver=<driver-name>` Matches a network's driver.
+- `id=<network-id>` Matches all or part of a network ID.
+- `label=<key>` or `label=<key>=<value>` of a network label.
+- `name=<network-name>` Matches all or part of a network name.
+- `scope=["swarm"|"global"|"local"]` Filters networks by scope (`swarm`, `global`, or `local`).
+- `type=["custom"|"builtin"]` Filters networks by type. The `custom` keyword returns all user-defined networks.
+
+         */
+         Docker.prototype.NetworkList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/networks';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a network
+         * @method
+         * @name Docker#NetworkInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - Network ID or name
+             * @param {boolean} parameters.verbose - Detailed inspect output for troubleshooting
+             * @param {string} parameters.scope - Filter the network by scope (swarm, global, or local)
+         */
+         Docker.prototype.NetworkInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/networks/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['verbose'] !== undefined){
+                            queryParameters['verbose'] = parameters['verbose'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['scope'] !== undefined){
+                            queryParameters['scope'] = parameters['scope'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Remove a network
+         * @method
+         * @name Docker#NetworkDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - Network ID or name
+         */
+         Docker.prototype.NetworkDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/networks/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a network
+         * @method
+         * @name Docker#NetworkCreate
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.networkConfig - Network configuration
+         */
+         Docker.prototype.NetworkCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/networks/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['networkConfig'] !== undefined){
+                        body = parameters['networkConfig'];
+                    }
+
+
+                if(parameters['networkConfig'] === undefined)
+                    throw new Error('Missing required  parameter: networkConfig');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Connect a container to a network
+         * @method
+         * @name Docker#NetworkConnect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - Network ID or name
+             * @param {} parameters.container - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.NetworkConnect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/networks/{id}/connect';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                
+                
+                
+                    if(parameters['container'] !== undefined){
+                        body = parameters['container'];
+                    }
+
+
+                if(parameters['container'] === undefined)
+                    throw new Error('Missing required  parameter: container');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Disconnect a container from a network
+         * @method
+         * @name Docker#NetworkDisconnect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - Network ID or name
+             * @param {} parameters.container - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.NetworkDisconnect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/networks/{id}/disconnect';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                
+                
+                
+                    if(parameters['container'] !== undefined){
+                        body = parameters['container'];
+                    }
+
+
+                if(parameters['container'] === undefined)
+                    throw new Error('Missing required  parameter: container');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete unused networks
+         * @method
+         * @name Docker#NetworkPrune
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`).
+
+Available filters:
+- `until=<timestamp>` Prune networks created before this timestamp. The `<timestamp>` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time.
+- `label` (`label=<key>`, `label=<key>=<value>`, `label!=<key>`, or `label!=<key>=<value>`) Prune networks with (or without, in case `label!=...` is used) the specified labels.
+
+         */
+         Docker.prototype.NetworkPrune = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/networks/prune';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Returns information about installed plugins.
+         * @method
+         * @name Docker#PluginList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to
+process on the plugin list.
+
+Available filters:
+
+- `capability=<capability name>`
+- `enable=<true>|<false>`
+
+         */
+         Docker.prototype.PluginList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get plugin privileges
+         * @method
+         * @name Docker#GetPluginPrivileges
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.remote - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+         */
+         Docker.prototype.GetPluginPrivileges = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/privileges';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['remote'] !== undefined){
+                            queryParameters['remote'] = parameters['remote'];
+                        }
+                
+                
+                
+
+
+                if(parameters['remote'] === undefined)
+                    throw new Error('Missing required  parameter: remote');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Pulls and installs a plugin. After the plugin is installed, it can be
+enabled using the [`POST /plugins/{name}/enable` endpoint](#operation/PostPluginsEnable).
+
+         * @method
+         * @name Docker#PluginPull
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.remote - Remote reference for plugin to install.
+
+The `:latest` tag is optional, and is used as the default if omitted.
+
+             * @param {string} parameters.name - Local name for the pulled plugin.
+
+The `:latest` tag is optional, and is used as the default if omitted.
+
+             * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration to use when pulling a plugin
+from a registry.
+
+Refer to the [authentication section](#section/Authentication) for
+details.
+
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.PluginPull = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/pull';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['remote'] !== undefined){
+                            queryParameters['remote'] = parameters['remote'];
+                        }
+                
+                
+                
+
+
+                if(parameters['remote'] === undefined)
+                    throw new Error('Missing required  parameter: remote');
+         
+
+                        if(parameters['name'] !== undefined){
+                            queryParameters['name'] = parameters['name'];
+                        }
+                
+                
+                
+
+
+         
+                
+                
+                        if(parameters['xRegistryAuth'] !== undefined){
+                            headers['X-Registry-Auth'] = parameters['xRegistryAuth'];
+                        }
+                
+
+
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a plugin
+         * @method
+         * @name Docker#PluginInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+         */
+         Docker.prototype.PluginInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/{name}/json';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Remove a plugin
+         * @method
+         * @name Docker#PluginDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+             * @param {boolean} parameters.force - Disable the plugin before removing. This may result in issues if the
+plugin is in use by a container.
+
+         */
+         Docker.prototype.PluginDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/{name}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+
+                        if(parameters['force'] !== undefined){
+                            queryParameters['force'] = parameters['force'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Enable a plugin
+         * @method
+         * @name Docker#PluginEnable
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+             * @param {integer} parameters.timeout - Set the HTTP client timeout (in seconds)
+         */
+         Docker.prototype.PluginEnable = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/{name}/enable';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+
+                        if(parameters['timeout'] !== undefined){
+                            queryParameters['timeout'] = parameters['timeout'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Disable a plugin
+         * @method
+         * @name Docker#PluginDisable
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+         */
+         Docker.prototype.PluginDisable = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/{name}/disable';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Upgrade a plugin
+         * @method
+         * @name Docker#PluginUpgrade
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+             * @param {string} parameters.remote - Remote reference to upgrade to.
+
+The `:latest` tag is optional, and is used as the default if omitted.
+
+             * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration to use when pulling a plugin
+from a registry.
+
+Refer to the [authentication section](#section/Authentication) for
+details.
+
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.PluginUpgrade = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/{name}/upgrade';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+
+                        if(parameters['remote'] !== undefined){
+                            queryParameters['remote'] = parameters['remote'];
+                        }
+                
+                
+                
+
+
+                if(parameters['remote'] === undefined)
+                    throw new Error('Missing required  parameter: remote');
+         
+                
+                
+                        if(parameters['xRegistryAuth'] !== undefined){
+                            headers['X-Registry-Auth'] = parameters['xRegistryAuth'];
+                        }
+                
+
+
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a plugin
+         * @method
+         * @name Docker#PluginCreate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+             * @param {} parameters.tarContext - Path to tar containing plugin rootfs and manifest
+         */
+         Docker.prototype.PluginCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/x-tar'];
+
+
+                        if(parameters['name'] !== undefined){
+                            queryParameters['name'] = parameters['name'];
+                        }
+                
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+                
+                
+                
+                    if(parameters['tarContext'] !== undefined){
+                        body = parameters['tarContext'];
+                    }
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Push a plugin to the registry.
+
+         * @method
+         * @name Docker#PluginPush
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+         */
+         Docker.prototype.PluginPush = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/{name}/push';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Configure a plugin
+         * @method
+         * @name Docker#PluginSet
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the
+default if omitted.
+
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.PluginSet = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/plugins/{name}/set';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * List nodes
+         * @method
+         * @name Docker#NodeList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - Filters to process on the nodes list, encoded as JSON (a `map[string][]string`).
+
+Available filters:
+- `id=<node id>`
+- `label=<engine label>`
+- `membership=`(`accepted`|`pending`)`
+- `name=<node name>`
+- `node.label=<node label>`
+- `role=`(`manager`|`worker`)`
+
+         */
+         Docker.prototype.NodeList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/nodes';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a node
+         * @method
+         * @name Docker#NodeInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - The ID or name of the node
+         */
+         Docker.prototype.NodeInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/nodes/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete a node
+         * @method
+         * @name Docker#NodeDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - The ID or name of the node
+             * @param {boolean} parameters.force - Force remove a node from the swarm
+         */
+         Docker.prototype.NodeDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/nodes/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['force'] !== undefined){
+                            queryParameters['force'] = parameters['force'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Update a node
+         * @method
+         * @name Docker#NodeUpdate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - The ID of the node
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+             * @param {integer} parameters.version - The version number of the node object being updated. This is required
+to avoid conflicting writes.
+
+         */
+         Docker.prototype.NodeUpdate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/nodes/{id}/update';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+
+                        if(parameters['version'] !== undefined){
+                            queryParameters['version'] = parameters['version'];
+                        }
+                
+                
+                
+
+
+                if(parameters['version'] === undefined)
+                    throw new Error('Missing required  parameter: version');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect swarm
+         * @method
+         * @name Docker#SwarmInspect
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.SwarmInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/swarm';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Initialize a new swarm
+         * @method
+         * @name Docker#SwarmInit
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.SwarmInit = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/swarm/init';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+                if(parameters['body'] === undefined)
+                    throw new Error('Missing required  parameter: body');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Join an existing swarm
+         * @method
+         * @name Docker#SwarmJoin
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.SwarmJoin = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/swarm/join';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+                if(parameters['body'] === undefined)
+                    throw new Error('Missing required  parameter: body');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Leave a swarm
+         * @method
+         * @name Docker#SwarmLeave
+         * @param {object} parameters - method options and parameters
+             * @param {boolean} parameters.force - Force leave swarm, even if this is the last manager or that it will
+break the cluster.
+
+         */
+         Docker.prototype.SwarmLeave = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/swarm/leave';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['force'] !== undefined){
+                            queryParameters['force'] = parameters['force'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Update a swarm
+         * @method
+         * @name Docker#SwarmUpdate
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+             * @param {integer} parameters.version - The version number of the swarm object being updated. This is
+required to avoid conflicting writes.
+
+             * @param {boolean} parameters.rotateWorkerToken - Rotate the worker join token.
+             * @param {boolean} parameters.rotateManagerToken - Rotate the manager join token.
+             * @param {boolean} parameters.rotateManagerUnlockKey - Rotate the manager unlock key.
+         */
+         Docker.prototype.SwarmUpdate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/swarm/update';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+                if(parameters['body'] === undefined)
+                    throw new Error('Missing required  parameter: body');
+         
+
+                        if(parameters['version'] !== undefined){
+                            queryParameters['version'] = parameters['version'];
+                        }
+                
+                
+                
+
+
+                if(parameters['version'] === undefined)
+                    throw new Error('Missing required  parameter: version');
+         
+
+                        if(parameters['rotateWorkerToken'] !== undefined){
+                            queryParameters['rotateWorkerToken'] = parameters['rotateWorkerToken'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['rotateManagerToken'] !== undefined){
+                            queryParameters['rotateManagerToken'] = parameters['rotateManagerToken'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['rotateManagerUnlockKey'] !== undefined){
+                            queryParameters['rotateManagerUnlockKey'] = parameters['rotateManagerUnlockKey'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get the unlock key
+         * @method
+         * @name Docker#SwarmUnlockkey
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.SwarmUnlockkey = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/swarm/unlockkey';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Unlock a locked manager
+         * @method
+         * @name Docker#SwarmUnlock
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.SwarmUnlock = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/swarm/unlock';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+                if(parameters['body'] === undefined)
+                    throw new Error('Missing required  parameter: body');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * List services
+         * @method
+         * @name Docker#ServiceList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to
+process on the services list.
+
+Available filters:
+
+- `id=<service id>`
+- `label=<service label>`
+- `mode=["replicated"|"global"]`
+- `name=<service name>`
+
+             * @param {boolean} parameters.status - Include service status, with count of running and desired tasks.
+
+         */
+         Docker.prototype.ServiceList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/services';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['status'] !== undefined){
+                            queryParameters['status'] = parameters['status'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a service
+         * @method
+         * @name Docker#ServiceCreate
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+             * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration for pulling from private
+registries.
+
+Refer to the [authentication section](#section/Authentication) for
+details.
+
+         */
+         Docker.prototype.ServiceCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/services/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+                if(parameters['body'] === undefined)
+                    throw new Error('Missing required  parameter: body');
+         
+                
+                
+                        if(parameters['xRegistryAuth'] !== undefined){
+                            headers['X-Registry-Auth'] = parameters['xRegistryAuth'];
+                        }
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a service
+         * @method
+         * @name Docker#ServiceInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of service.
+             * @param {boolean} parameters.insertDefaults - Fill empty fields with default values.
+         */
+         Docker.prototype.ServiceInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/services/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['insertDefaults'] !== undefined){
+                            queryParameters['insertDefaults'] = parameters['insertDefaults'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete a service
+         * @method
+         * @name Docker#ServiceDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of service.
+         */
+         Docker.prototype.ServiceDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/services/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Update a service
+         * @method
+         * @name Docker#ServiceUpdate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of service.
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+             * @param {integer} parameters.version - The version number of the service object being updated. This is
+required to avoid conflicting writes.
+This version number should be the value as currently set on the
+service *before* the update. You can find the current version by
+calling `GET /services/{id}`
+
+             * @param {string} parameters.registryAuthFrom - If the `X-Registry-Auth` header is not specified, this parameter
+indicates where to find registry authorization credentials.
+
+             * @param {string} parameters.rollback - Set to this parameter to `previous` to cause a server-side rollback
+to the previous service spec. The supplied spec will be ignored in
+this case.
+
+             * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration for pulling from private
+registries.
+
+Refer to the [authentication section](#section/Authentication) for
+details.
+
+         */
+         Docker.prototype.ServiceUpdate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/services/{id}/update';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+                if(parameters['body'] === undefined)
+                    throw new Error('Missing required  parameter: body');
+         
+
+                        if(parameters['version'] !== undefined){
+                            queryParameters['version'] = parameters['version'];
+                        }
+                
+                
+                
+
+
+                if(parameters['version'] === undefined)
+                    throw new Error('Missing required  parameter: version');
+         
+                            /** set default value **/
+                            queryParameters['registryAuthFrom'] = spec;
+
+                        if(parameters['registryAuthFrom'] !== undefined){
+                            queryParameters['registryAuthFrom'] = parameters['registryAuthFrom'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['rollback'] !== undefined){
+                            queryParameters['rollback'] = parameters['rollback'];
+                        }
+                
+                
+                
+
+
+         
+                
+                
+                        if(parameters['xRegistryAuth'] !== undefined){
+                            headers['X-Registry-Auth'] = parameters['xRegistryAuth'];
+                        }
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get `stdout` and `stderr` logs from a service. See also
+[`/containers/{id}/logs`](#operation/ContainerLogs).
+
+**Note**: This endpoint works only for services with the `local`,
+`json-file` or `journald` logging drivers.
+
+         * @method
+         * @name Docker#ServiceLogs
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID or name of the service
+             * @param {boolean} parameters.details - Show service context and extra details provided to logs.
+             * @param {boolean} parameters.follow - Keep connection after returning logs.
+             * @param {boolean} parameters.stdout - Return logs from `stdout`
+             * @param {boolean} parameters.stderr - Return logs from `stderr`
+             * @param {integer} parameters.since - Only return logs since this time, as a UNIX timestamp
+             * @param {boolean} parameters.timestamps - Add timestamps to every log line
+             * @param {string} parameters.tail - Only return this number of log lines from the end of the logs.
+Specify as an integer or `all` to output all log lines.
+
+         */
+         Docker.prototype.ServiceLogs = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/services/{id}/logs';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['details'] !== undefined){
+                            queryParameters['details'] = parameters['details'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['follow'] !== undefined){
+                            queryParameters['follow'] = parameters['follow'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stdout'] !== undefined){
+                            queryParameters['stdout'] = parameters['stdout'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stderr'] !== undefined){
+                            queryParameters['stderr'] = parameters['stderr'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['since'] !== undefined){
+                            queryParameters['since'] = parameters['since'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['timestamps'] !== undefined){
+                            queryParameters['timestamps'] = parameters['timestamps'];
+                        }
+                
+                
+                
+
+
+         
+                            /** set default value **/
+                            queryParameters['tail'] = all;
+
+                        if(parameters['tail'] !== undefined){
+                            queryParameters['tail'] = parameters['tail'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * List tasks
+         * @method
+         * @name Docker#TaskList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to
+process on the tasks list.
+
+Available filters:
+
+- `desired-state=(running | shutdown | accepted)`
+- `id=<task id>`
+- `label=key` or `label="key=value"`
+- `name=<task name>`
+- `node=<node id or name>`
+- `service=<service name>`
+
+         */
+         Docker.prototype.TaskList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/tasks';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a task
+         * @method
+         * @name Docker#TaskInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID of the task
+         */
+         Docker.prototype.TaskInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/tasks/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Get `stdout` and `stderr` logs from a task.
+See also [`/containers/{id}/logs`](#operation/ContainerLogs).
+
+**Note**: This endpoint works only for services with the `local`,
+`json-file` or `journald` logging drivers.
+
+         * @method
+         * @name Docker#TaskLogs
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID of the task
+             * @param {boolean} parameters.details - Show task context and extra details provided to logs.
+             * @param {boolean} parameters.follow - Keep connection after returning logs.
+             * @param {boolean} parameters.stdout - Return logs from `stdout`
+             * @param {boolean} parameters.stderr - Return logs from `stderr`
+             * @param {integer} parameters.since - Only return logs since this time, as a UNIX timestamp
+             * @param {boolean} parameters.timestamps - Add timestamps to every log line
+             * @param {string} parameters.tail - Only return this number of log lines from the end of the logs.
+Specify as an integer or `all` to output all log lines.
+
+         */
+         Docker.prototype.TaskLogs = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/tasks/{id}/logs';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+
+                        if(parameters['details'] !== undefined){
+                            queryParameters['details'] = parameters['details'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['follow'] !== undefined){
+                            queryParameters['follow'] = parameters['follow'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stdout'] !== undefined){
+                            queryParameters['stdout'] = parameters['stdout'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['stderr'] !== undefined){
+                            queryParameters['stderr'] = parameters['stderr'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['since'] !== undefined){
+                            queryParameters['since'] = parameters['since'];
+                        }
+                
+                
+                
+
+
+         
+
+                        if(parameters['timestamps'] !== undefined){
+                            queryParameters['timestamps'] = parameters['timestamps'];
+                        }
+                
+                
+                
+
+
+         
+                            /** set default value **/
+                            queryParameters['tail'] = all;
+
+                        if(parameters['tail'] !== undefined){
+                            queryParameters['tail'] = parameters['tail'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * List secrets
+         * @method
+         * @name Docker#SecretList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to
+process on the secrets list.
+
+Available filters:
+
+- `id=<secret id>`
+- `label=<key> or label=<key>=value`
+- `name=<secret name>`
+- `names=<secret name>`
+
+         */
+         Docker.prototype.SecretList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/secrets';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a secret
+         * @method
+         * @name Docker#SecretCreate
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.SecretCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/secrets/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a secret
+         * @method
+         * @name Docker#SecretInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID of the secret
+         */
+         Docker.prototype.SecretInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/secrets/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete a secret
+         * @method
+         * @name Docker#SecretDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID of the secret
+         */
+         Docker.prototype.SecretDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/secrets/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Update a Secret
+         * @method
+         * @name Docker#SecretUpdate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - The ID or name of the secret
+             * @param {} parameters.body - The spec of the secret to update. Currently, only the Labels field
+can be updated. All other fields must remain unchanged from the
+[SecretInspect endpoint](#operation/SecretInspect) response values.
+
+             * @param {integer} parameters.version - The version number of the secret object being updated. This is
+required to avoid conflicting writes.
+
+         */
+         Docker.prototype.SecretUpdate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/secrets/{id}/update';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+
+                        if(parameters['version'] !== undefined){
+                            queryParameters['version'] = parameters['version'];
+                        }
+                
+                
+                
+
+
+                if(parameters['version'] === undefined)
+                    throw new Error('Missing required  parameter: version');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * List configs
+         * @method
+         * @name Docker#ConfigList
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to
+process on the configs list.
+
+Available filters:
+
+- `id=<config id>`
+- `label=<key> or label=<key>=value`
+- `name=<config name>`
+- `names=<config name>`
+
+         */
+         Docker.prototype.ConfigList = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/configs';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+
+                        if(parameters['filters'] !== undefined){
+                            queryParameters['filters'] = parameters['filters'];
+                        }
+                
+                
+                
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Create a config
+         * @method
+         * @name Docker#ConfigCreate
+         * @param {object} parameters - method options and parameters
+             * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the
+Docker client uses to communicate with the Engine, so everything the Docker
+client can do can be done with the API.
+
+Most of the client's commands map directly to API endpoints (e.g. `docker ps`
+is `GET /containers/json`). The notable exception is running containers,
+which consists of several API calls.
+
+# Errors
+
+The API uses standard HTTP status codes to indicate the success or failure
+of the API call. The body of the response will be JSON in the following
+format:
+
+```
+{
+  "message": "page not found"
+}
+```
+
+# Versioning
+
+The API is usually changed in each release, so API calls are versioned to
+ensure that clients don't break. To lock to a specific version of the API,
+you prefix the URL with its version, for example, call `/v1.30/info` to use
+the v1.30 version of the `/info` endpoint. If the API version specified in
+the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
+is returned.
+
+If you omit the version-prefix, the current version of the API (v1.41) is used.
+For example, calling `/info` is the same as calling `/v1.41/info`. Using the
+API without a version-prefix is deprecated and will be removed in a future release.
+
+Engine releases in the near future should support this version of the API,
+so your client will continue to work even if it is talking to a newer Engine.
+
+The API uses an open schema model, which means server may add extra properties
+to responses. Likewise, the server will ignore any extra query parameters and
+request body properties. When you write clients, you need to ignore additional
+properties in responses to ensure they do not break when talking to newer
+daemons.
+
+
+# Authentication
+
+Authentication for registries is handled client side. The client has to send
+authentication details to various endpoints that need to communicate with
+registries, such as `POST /images/(name)/push`. These are sent as
+`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
+(JSON) string with the following structure:
+
+```
+{
+  "username": "string",
+  "password": "string",
+  "email": "string",
+  "serveraddress": "string"
+}
+```
+
+The `serveraddress` is a domain/IP without a protocol. Throughout this
+structure, double quotes are required.
+
+If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),
+you can just pass this instead of credentials:
+
+```
+{
+  "identitytoken": "9cbaf023786cd7..."
+}
+```
+
+         */
+         Docker.prototype.ConfigCreate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/configs/create';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Inspect a config
+         * @method
+         * @name Docker#ConfigInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID of the config
+         */
+         Docker.prototype.ConfigInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/configs/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Delete a config
+         * @method
+         * @name Docker#ConfigDelete
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - ID of the config
+         */
+         Docker.prototype.ConfigDelete = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/configs/{id}';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('DELETE', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Update a Config
+         * @method
+         * @name Docker#ConfigUpdate
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.id - The ID or name of the config
+             * @param {} parameters.body - The spec of the config to update. Currently, only the Labels field
+can be updated. All other fields must remain unchanged from the
+[ConfigInspect endpoint](#operation/ConfigInspect) response values.
+
+             * @param {integer} parameters.version - The version number of the config object being updated. This is
+required to avoid conflicting writes.
+
+         */
+         Docker.prototype.ConfigUpdate = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/configs/{id}/update';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json, text/plain'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{id}', parameters['id']);
+                
+                
+
+
+                if(parameters['id'] === undefined)
+                    throw new Error('Missing required  parameter: id');
+         
+                
+                
+                
+                    if(parameters['body'] !== undefined){
+                        body = parameters['body'];
+                    }
+
+
+         
+
+                        if(parameters['version'] !== undefined){
+                            queryParameters['version'] = parameters['version'];
+                        }
+                
+                
+                
+
+
+                if(parameters['version'] === undefined)
+                    throw new Error('Missing required  parameter: version');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Return image digest and platform information by contacting the registry.
+
+         * @method
+         * @name Docker#DistributionInspect
+         * @param {object} parameters - method options and parameters
+             * @param {string} parameters.name - Image name or id
+         */
+         Docker.prototype.DistributionInspect = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/distribution/{name}/json';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/json'];
+                headers['content-type'] = ['application/json'];
+
+                
+                    path = path.replace('{name}', parameters['name']);
+                
+                
+
+
+                if(parameters['name'] === undefined)
+                    throw new Error('Missing required  parameter: name');
+         
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('GET', domain + path, parameters, body, headers, queryParameters, form);
+         };
+        /**
+         * Start a new interactive session with a server. Session allows server to
+call back to the client for advanced capabilities.
+
+### Hijacking
+
+This endpoint hijacks the HTTP connection to HTTP2 transport that allows
+the client to expose gPRC services on that connection.
+
+For example, the client sends this request to upgrade the connection:
+
+```
+POST /session HTTP/1.1
+Upgrade: h2c
+Connection: Upgrade
+```
+
+The Docker daemon responds with a `101 UPGRADED` response follow with
+the raw stream:
+
+```
+HTTP/1.1 101 UPGRADED
+Connection: Upgrade
+Upgrade: h2c
+```
+
+         * @method
+         * @name Docker#Session
+         * @param {object} parameters - method options and parameters
+         */
+         Docker.prototype.Session = function(parameters){
+            if(parameters === undefined) {
+                parameters = {};
+            }
+            var domain = this.domain,  path = '/session';
+            var body = {}, queryParameters = {}, form = {};
+            var headers = util.clone(this.headers);
+
+                headers['accept'] = ['application/vnd.docker.raw-stream'];
+                headers['content-type'] = ['application/json'];
+
+            queryParameters = mergeQueryParams(parameters, queryParameters);
+
+            return request('POST', domain + path, parameters, body, headers, queryParameters, form);
+         };
+
+    return Docker;
+})();
+
+exports.Docker = Docker;
+
+
+
+ + + + + + +
+ +
+ + + + + + + + + + + diff --git a/docs/fib-docker/1.0.0/scripts/collapse.js b/docs/fib-docker/1.0.0/scripts/collapse.js new file mode 100644 index 0000000..327039f --- /dev/null +++ b/docs/fib-docker/1.0.0/scripts/collapse.js @@ -0,0 +1,20 @@ +function hideAllButCurrent(){ + //by default all submenut items are hidden + //but we need to rehide them for search + document.querySelectorAll("nav > ul > li > ul li").forEach(function(parent) { + parent.style.display = "none"; + }); + + //only current page (if it exists) should be opened + var file = window.location.pathname.split("/").pop().replace(/\.html/, ''); + document.querySelectorAll("nav > ul > li > a").forEach(function(parent) { + var href = parent.attributes.href.value.replace(/\.html/, ''); + if (file === href) { + parent.parentNode.querySelectorAll("ul li").forEach(function(elem) { + elem.style.display = "block"; + }); + } + }); +} + +hideAllButCurrent(); \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/scripts/linenumber.js b/docs/fib-docker/1.0.0/scripts/linenumber.js new file mode 100644 index 0000000..8d52f7e --- /dev/null +++ b/docs/fib-docker/1.0.0/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(function() { + var source = document.getElementsByClassName('prettyprint source linenums'); + var i = 0; + var lineNumber = 0; + var lineId; + var lines; + var totalLines; + var anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = 'line' + lineNumber; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/docs/fib-docker/1.0.0/scripts/nav.js b/docs/fib-docker/1.0.0/scripts/nav.js new file mode 100644 index 0000000..6dd8313 --- /dev/null +++ b/docs/fib-docker/1.0.0/scripts/nav.js @@ -0,0 +1,12 @@ +function scrollToNavItem() { + var path = window.location.href.split('/').pop().replace(/\.html/, ''); + document.querySelectorAll('nav a').forEach(function(link) { + var href = link.attributes.href.value.replace(/\.html/, ''); + if (path === href) { + link.scrollIntoView({block: 'center'}); + return; + } + }) + } + + scrollToNavItem(); diff --git a/docs/fib-docker/1.0.0/scripts/polyfill.js b/docs/fib-docker/1.0.0/scripts/polyfill.js new file mode 100644 index 0000000..44b4c92 --- /dev/null +++ b/docs/fib-docker/1.0.0/scripts/polyfill.js @@ -0,0 +1,4 @@ +//IE Fix, src: https://www.reddit.com/r/programminghorror/comments/6abmcr/nodelist_lacks_foreach_in_internet_explorer/ +if (typeof(NodeList.prototype.forEach)!==typeof(alert)){ + NodeList.prototype.forEach=Array.prototype.forEach; +} \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/scripts/prettify/Apache-License-2.0.txt b/docs/fib-docker/1.0.0/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/docs/fib-docker/1.0.0/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/fib-docker/1.0.0/scripts/prettify/lang-css.js b/docs/fib-docker/1.0.0/scripts/prettify/lang-css.js new file mode 100644 index 0000000..041e1f5 --- /dev/null +++ b/docs/fib-docker/1.0.0/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/fib-docker/1.0.0/scripts/prettify/prettify.js b/docs/fib-docker/1.0.0/scripts/prettify/prettify.js new file mode 100644 index 0000000..eef5ad7 --- /dev/null +++ b/docs/fib-docker/1.0.0/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p ul > li:not(.level-hide)").forEach(function(elem) { + elem.style.display = "block"; + }); + + if (typeof hideAllButCurrent === "function"){ + //let's do what ever collapse wants to do + hideAllButCurrent(); + } else { + //menu by default should be opened + document.querySelectorAll("nav > ul > li > ul li").forEach(function(elem) { + elem.style.display = "block"; + }); + } + } else { + //we are searching + document.documentElement.setAttribute(searchAttr, ''); + + //show all parents + document.querySelectorAll("nav > ul > li").forEach(function(elem) { + elem.style.display = "block"; + }); + //hide all results + document.querySelectorAll("nav > ul > li > ul li").forEach(function(elem) { + elem.style.display = "none"; + }); + //show results matching filter + document.querySelectorAll("nav > ul > li > ul a").forEach(function(elem) { + if (!contains(elem.parentNode, search)) { + return; + } + elem.parentNode.style.display = "block"; + }); + //hide parents without children + document.querySelectorAll("nav > ul > li").forEach(function(parent) { + var countSearchA = 0; + parent.querySelectorAll("a").forEach(function(elem) { + if (contains(elem, search)) { + countSearchA++; + } + }); + + var countUl = 0; + var countUlVisible = 0; + parent.querySelectorAll("ul").forEach(function(ulP) { + // count all elements that match the search + if (contains(ulP, search)) { + countUl++; + } + + // count all visible elements + var children = ulP.children + for (i=0; i ul { + padding: 0 10px; +} + +nav > ul > li > a { + color: #606; + margin-top: 10px; +} + +nav ul ul a { + color: hsl(207, 1%, 60%); + border-left: 1px solid hsl(207, 10%, 86%); +} + +nav ul ul a, +nav ul ul a:active { + padding-left: 20px +} + +nav h2 { + font-size: 13px; + margin: 10px 0 0 0; + padding: 0; +} + +nav > h2 > a { + margin: 10px 0 -10px; + color: #606 !important; +} + +footer { + color: hsl(0, 0%, 28%); + margin-left: 250px; + display: block; + padding: 15px; + font-style: italic; + font-size: 90%; +} + +.ancestors { + color: #999 +} + +.ancestors a { + color: #999 !important; +} + +.clear { + clear: both +} + +.important { + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px +} + +.type-signature { + color: #CA79CA +} + +.type-signature:last-child { + color: #eee; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace +} + +.signature { + color: #fc83ff; +} + +.details { + margin-top: 6px; + border-left: 2px solid #DDD; + line-height: 20px; + font-size: 14px; +} + +.details dt { + width: auto; + float: left; + padding-left: 10px; +} + +.details dd { + margin-left: 70px; + margin-top: 6px; + margin-bottom: 6px; +} + +.details ul { + margin: 0 +} + +.details ul { + list-style-type: none +} + +.details pre.prettyprint { + margin: 0 +} + +.details .object-value { + padding-top: 0 +} + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption { + font-style: italic; + font-size: 107%; + margin: 0; +} + +.prettyprint { + font-size: 14px; + overflow: auto; +} + +.prettyprint.source { + width: inherit; + line-height: 18px; + display: block; + background-color: #0d152a; + color: #aeaeae; +} + +.prettyprint code { + line-height: 18px; + display: block; + background-color: #0d152a; + color: #4D4E53; +} + +.prettyprint > code { + padding: 15px; +} + +.prettyprint .linenums code { + padding: 0 15px +} + +.prettyprint .linenums li:first-of-type code { + padding-top: 15px +} + +.prettyprint code span.line { + display: inline-block +} + +.prettyprint.linenums { + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol { + padding-left: 0 +} + +.prettyprint.linenums li { + border-left: 3px #34446B solid; +} + +.prettyprint.linenums li.selected, .prettyprint.linenums li.selected * { + background-color: #34446B; +} + +.prettyprint.linenums li * { + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.prettyprint.linenums li code:empty:after { + content:""; + display:inline-block; + width:0px; +} + +table { + border-spacing: 0; + border: 1px solid #ddd; + border-collapse: collapse; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); + width: 100%; + font-size: 14px; + margin: 1em 0; +} + +td, th { + margin: 0px; + text-align: left; + vertical-align: top; + padding: 10px; + display: table-cell; +} + +thead tr, thead tr { + background-color: #fff; + font-weight: bold; + border-bottom: 1px solid #ddd; +} + +.params .type { + white-space: nowrap; +} + +.params code { + white-space: pre; +} + +.params td, .params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td { + border-top: 1px solid #eee +} + +.params td.description > p:first-child, .props td.description > p:first-child { + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, .props td.description > p:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +span.param-type, .params td .param-type, .param-type dd { + color: #606; + font-family: Consolas, Monaco, 'Andale Mono', monospace +} + +.param-type dt, .param-type dd { + display: inline-block +} + +.param-type { + margin: 14px 0; +} + +.disabled { + color: #454545 +} + +/* navicon button */ +.navicon-button { + display: none; + position: relative; + padding: 2.0625rem 1.5rem; + transition: 0.25s; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: .8; +} +.navicon-button .navicon:before, .navicon-button .navicon:after { + transition: 0.25s; +} +.navicon-button:hover { + transition: 0.5s; + opacity: 1; +} +.navicon-button:hover .navicon:before, .navicon-button:hover .navicon:after { + transition: 0.25s; +} +.navicon-button:hover .navicon:before { + top: .825rem; +} +.navicon-button:hover .navicon:after { + top: -.825rem; +} + +/* navicon */ +.navicon { + position: relative; + width: 2.5em; + height: .3125rem; + background: #000; + transition: 0.3s; + border-radius: 2.5rem; +} +.navicon:before, .navicon:after { + display: block; + content: ""; + height: .3125rem; + width: 2.5rem; + background: #000; + position: absolute; + z-index: -1; + transition: 0.3s 0.25s; + border-radius: 1rem; +} +.navicon:before { + top: .625rem; +} +.navicon:after { + top: -.625rem; +} + +/* open */ +.nav-trigger:checked + label:not(.steps) .navicon:before, +.nav-trigger:checked + label:not(.steps) .navicon:after { + top: 0 !important; +} + +.nav-trigger:checked + label .navicon:before, +.nav-trigger:checked + label .navicon:after { + transition: 0.5s; +} + +/* Minus */ +.nav-trigger:checked + label { + -webkit-transform: scale(0.75); + transform: scale(0.75); +} + +/* × and + */ +.nav-trigger:checked + label.plus .navicon, +.nav-trigger:checked + label.x .navicon { + background: transparent; +} + +.nav-trigger:checked + label.plus .navicon:before, +.nav-trigger:checked + label.x .navicon:before { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + background: #FFF; +} + +.nav-trigger:checked + label.plus .navicon:after, +.nav-trigger:checked + label.x .navicon:after { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + background: #FFF; +} + +.nav-trigger:checked + label.plus { + -webkit-transform: scale(0.75) rotate(45deg); + transform: scale(0.75) rotate(45deg); +} + +.nav-trigger:checked ~ nav { + left: 0 !important; +} + +.nav-trigger:checked ~ .overlay { + display: block; +} + +.nav-trigger { + position: fixed; + top: 0; + clip: rect(0, 0, 0, 0); +} + +.overlay { + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + background: hsla(0, 0%, 0%, 0.5); + z-index: 1; +} + +/* nav level */ +.level-hide { + display: none; +} +html[data-search-mode] .level-hide { + display: block; +} + + +@media only screen and (max-width: 680px) { + body { + overflow-x: hidden; + } + + nav { + background: #FFF; + width: 250px; + height: 100%; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: -250px; + z-index: 3; + padding: 0 10px; + transition: left 0.2s; + } + + .navicon-button { + display: inline-block; + position: fixed; + top: 1.5em; + right: 0; + z-index: 2; + } + + #main { + width: 100%; + } + + #main h1.page-title { + margin: 1em 0; + } + + #main section { + padding: 0; + } + + footer { + margin-left: 0; + } +} + +/** Add a '#' to static members */ +[data-type="member"] a::before { + content: '#'; + display: inline-block; + margin-left: -14px; + margin-right: 5px; +} + +#disqus_thread{ + margin-left: 30px; +} + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 400; + src: url('../fonts/Montserrat/Montserrat-Regular.eot'); /* IE9 Compat Modes */ + src: url('../fonts/Montserrat/Montserrat-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/Montserrat/Montserrat-Regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/Montserrat/Montserrat-Regular.woff') format('woff'), /* Pretty Modern Browsers */ + url('../fonts/Montserrat/Montserrat-Regular.ttf') format('truetype'); /* Safari, Android, iOS */ +} + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 700; + src: url('../fonts/Montserrat/Montserrat-Bold.eot'); /* IE9 Compat Modes */ + src: url('../fonts/Montserrat/Montserrat-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/Montserrat/Montserrat-Bold.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/Montserrat/Montserrat-Bold.woff') format('woff'), /* Pretty Modern Browsers */ + url('../fonts/Montserrat/Montserrat-Bold.ttf') format('truetype'); /* Safari, Android, iOS */ +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot'); + src: url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2') format('woff2'), + url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff') format('woff'), + url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf') format('truetype'), + url('../fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg#source_sans_proregular') format('svg'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot'); + src: url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot?#iefix') format('embedded-opentype'), + url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2') format('woff2'), + url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff') format('woff'), + url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf') format('truetype'), + url('../fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg#source_sans_prolight') format('svg'); + font-weight: 300; + font-style: normal; + +} \ No newline at end of file diff --git a/docs/fib-docker/1.0.0/styles/prettify.css b/docs/fib-docker/1.0.0/styles/prettify.css new file mode 100644 index 0000000..d9521ec --- /dev/null +++ b/docs/fib-docker/1.0.0/styles/prettify.css @@ -0,0 +1,79 @@ +.pln { + color: #ddd; +} + +/* string content */ +.str { + color: #61ce3c; +} + +/* a keyword */ +.kwd { + color: #fbde2d; +} + +/* a comment */ +.com { + color: #aeaeae; +} + +/* a type name */ +.typ { + color: #8da6ce; +} + +/* a literal value */ +.lit { + color: #fbde2d; +} + +/* punctuation */ +.pun { + color: #ddd; +} + +/* lisp open bracket */ +.opn { + color: #000000; +} + +/* lisp close bracket */ +.clo { + color: #000000; +} + +/* a markup tag name */ +.tag { + color: #8da6ce; +} + +/* a markup attribute name */ +.atn { + color: #fbde2d; +} + +/* a markup attribute value */ +.atv { + color: #ddd; +} + +/* a declaration */ +.dec { + color: #EF5050; +} + +/* a variable name */ +.var { + color: #c82829; +} + +/* a function name */ +.fun { + color: #4271ae; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..da8b5d9 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,6832 @@ +/*jshint -W069 */ +/** + * The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + * @class Docker + * @param {(string|object)} [domainOrOptions] - The project domain or options object. If object, see the object's optional properties. + * @param {string} [domainOrOptions.domain] - The project domain + * @param {object} [domainOrOptions.token] - auth token - object with value property and optional headerOrQueryName and isQuery properties + */ +var Docker = (function(){ + 'use strict'; + + var http = require('http'); + var util = require('util'); + + function Docker(options){ + var domain = (typeof options === 'object') ? options.domain : options; + this.domain = domain ? domain : ''; + if(this.domain.length === 0) { + throw new Error('Domain parameter must be specified as a string.'); + } + this.headers = options.headers || {}; + } + + function mergeQueryParams(parameters, queryParameters) { + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters) + .forEach(function(parameterName) { + var parameter = parameters.$queryParameters[parameterName]; + queryParameters[parameterName] = parameter; + }); + } + return queryParameters; + } + + function request(method, url, parameters, body, headers, queryParameters, form) { + var req = {}; + + if(Object.keys(queryParameters).length > 0) { + req.query = queryParameters; + } + if(Object.keys(headers).length > 0) { + req.headers = headers; + } + + if(Object.keys(form).length > 0) { + req.body = form; + }else if(typeof(body) === 'object' && !(body instanceof Buffer)) { + if(Object.keys(body).length > 0) { + req.json = body; + } + } else if(body) { + req.body = body; + } + + var response = http.request(method, url, req); + + if (response.statusCode >= 200 && response.statusCode <= 299) { + return response.data; + } + + throw new Error(response.data); + } + + + /** + * Returns a list of containers. For details on the format, see the +[inspect endpoint](#operation/ContainerInspect). + +Note that it uses a different, smaller representation of a container +than inspecting a single container. For example, the list of linked +containers is not propagated . + + * @method + * @name Docker#ContainerList + * @param {object} parameters - method options and parameters + * @param {boolean} parameters.all - Return all containers. By default, only running containers are shown. + + * @param {integer} parameters.limit - Return this number of most recently created containers, including +non-running ones. + + * @param {boolean} parameters.size - Return the size of container as fields `SizeRw` and `SizeRootFs`. + + * @param {string} parameters.filters - Filters to process on the container list, encoded as JSON (a +`map[string][]string`). For example, `{"status": ["paused"]}` will +only return paused containers. + +Available filters: + +- `ancestor`=(`[:]`, ``, or ``) +- `before`=(`` or ``) +- `expose`=(`[/]`|`/[]`) +- `exited=` containers with exit code of `` +- `health`=(`starting`|`healthy`|`unhealthy`|`none`) +- `id=` a container's ID +- `isolation=`(`default`|`process`|`hyperv`) (Windows daemon only) +- `is-task=`(`true`|`false`) +- `label=key` or `label="key=value"` of a container label +- `name=` a container's name +- `network`=(`` or ``) +- `publish`=(`[/]`|`/[]`) +- `since`=(`` or ``) +- `status=`(`created`|`restarting`|`running`|`removing`|`paused`|`exited`|`dead`) +- `volume`=(`` or ``) + + */ + Docker.prototype.ContainerList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/json'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['all'] !== undefined){ + queryParameters['all'] = parameters['all']; + } + + + + + + + + if(parameters['limit'] !== undefined){ + queryParameters['limit'] = parameters['limit']; + } + + + + + + + + if(parameters['size'] !== undefined){ + queryParameters['size'] = parameters['size']; + } + + + + + + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a container + * @method + * @name Docker#ContainerCreate + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Assign the specified name to the container. Must match +`/?[a-zA-Z0-9][a-zA-Z0-9_.-]+`. + + * @param {} parameters.body - Container to create + */ + Docker.prototype.ContainerCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['name'] !== undefined){ + queryParameters['name'] = parameters['name']; + } + + + + + + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + if(parameters['body'] === undefined) + throw new Error('Missing required parameter: body'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Return low-level information about a container. + * @method + * @name Docker#ContainerInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {boolean} parameters.size - Return the size of container as fields `SizeRw` and `SizeRootFs` + */ + Docker.prototype.ContainerInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/json'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['size'] !== undefined){ + queryParameters['size'] = parameters['size']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * On Unix systems, this is done by running the `ps` command. This endpoint +is not supported on Windows. + + * @method + * @name Docker#ContainerTop + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.psArgs - The arguments to pass to `ps`. For example, `aux` + */ + Docker.prototype.ContainerTop = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/top'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + /** set default value **/ + queryParameters['ps_args'] = -ef; + + if(parameters['psArgs'] !== undefined){ + queryParameters['ps_args'] = parameters['psArgs']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get `stdout` and `stderr` logs from a container. + +Note: This endpoint works only for containers with the `json-file` or +`journald` logging driver. + + * @method + * @name Docker#ContainerLogs + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {boolean} parameters.follow - Keep connection after returning logs. + * @param {boolean} parameters.stdout - Return logs from `stdout` + * @param {boolean} parameters.stderr - Return logs from `stderr` + * @param {integer} parameters.since - Only return logs since this time, as a UNIX timestamp + * @param {integer} parameters.until - Only return logs before this time, as a UNIX timestamp + * @param {boolean} parameters.timestamps - Add timestamps to every log line + * @param {string} parameters.tail - Only return this number of log lines from the end of the logs. +Specify as an integer or `all` to output all log lines. + + */ + Docker.prototype.ContainerLogs = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/logs'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['follow'] !== undefined){ + queryParameters['follow'] = parameters['follow']; + } + + + + + + + + if(parameters['stdout'] !== undefined){ + queryParameters['stdout'] = parameters['stdout']; + } + + + + + + + + if(parameters['stderr'] !== undefined){ + queryParameters['stderr'] = parameters['stderr']; + } + + + + + + + + if(parameters['since'] !== undefined){ + queryParameters['since'] = parameters['since']; + } + + + + + + + + if(parameters['until'] !== undefined){ + queryParameters['until'] = parameters['until']; + } + + + + + + + + if(parameters['timestamps'] !== undefined){ + queryParameters['timestamps'] = parameters['timestamps']; + } + + + + + + + /** set default value **/ + queryParameters['tail'] = all; + + if(parameters['tail'] !== undefined){ + queryParameters['tail'] = parameters['tail']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Returns which files in a container's filesystem have been added, deleted, +or modified. The `Kind` of modification can be one of: + +- `0`: Modified +- `1`: Added +- `2`: Deleted + + * @method + * @name Docker#ContainerChanges + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + */ + Docker.prototype.ContainerChanges = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/changes'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Export the contents of a container as a tarball. + * @method + * @name Docker#ContainerExport + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + */ + Docker.prototype.ContainerExport = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/export'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/octet-stream']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * This endpoint returns a live stream of a container’s resource usage +statistics. + +The `precpu_stats` is the CPU statistic of the *previous* read, and is +used to calculate the CPU usage percentage. It is not an exact copy +of the `cpu_stats` field. + +If either `precpu_stats.online_cpus` or `cpu_stats.online_cpus` is +nil then for compatibility with older daemons the length of the +corresponding `cpu_usage.percpu_usage` array should be used. + +On a cgroup v2 host, the following fields are not set +* `blkio_stats`: all fields other than `io_service_bytes_recursive` +* `cpu_stats`: `cpu_usage.percpu_usage` +* `memory_stats`: `max_usage` and `failcnt` +Also, `memory_stats.stats` fields are incompatible with cgroup v1. + +To calculate the values shown by the `stats` command of the docker cli tool +the following formulas can be used: +* used_memory = `memory_stats.usage - memory_stats.stats.cache` +* available_memory = `memory_stats.limit` +* Memory usage % = `(used_memory / available_memory) * 100.0` +* cpu_delta = `cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage` +* system_cpu_delta = `cpu_stats.system_cpu_usage - precpu_stats.system_cpu_usage` +* number_cpus = `lenght(cpu_stats.cpu_usage.percpu_usage)` or `cpu_stats.online_cpus` +* CPU usage % = `(cpu_delta / system_cpu_delta) * number_cpus * 100.0` + + * @method + * @name Docker#ContainerStats + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {boolean} parameters.stream - Stream the output. If false, the stats will be output once and then +it will disconnect. + + * @param {boolean} parameters.oneShot - Only get a single stat instead of waiting for 2 cycles. Must be used +with `stream=false`. + + */ + Docker.prototype.ContainerStats = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/stats'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + /** set default value **/ + queryParameters['stream'] = true; + + if(parameters['stream'] !== undefined){ + queryParameters['stream'] = parameters['stream']; + } + + + + + + + + if(parameters['oneShot'] !== undefined){ + queryParameters['one-shot'] = parameters['oneShot']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Resize the TTY for a container. + * @method + * @name Docker#ContainerResize + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {integer} parameters.h - Height of the TTY session in characters + * @param {integer} parameters.w - Width of the TTY session in characters + */ + Docker.prototype.ContainerResize = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/resize'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['text/plain']; + headers['content-type'] = ['application/octet-stream']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['h'] !== undefined){ + queryParameters['h'] = parameters['h']; + } + + + + + + + + if(parameters['w'] !== undefined){ + queryParameters['w'] = parameters['w']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Start a container + * @method + * @name Docker#ContainerStart + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.detachKeys - Override the key sequence for detaching a container. Format is a +single character `[a-Z]` or `ctrl-` where `` is one +of: `a-z`, `@`, `^`, `[`, `,` or `_`. + + */ + Docker.prototype.ContainerStart = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/start'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['detachKeys'] !== undefined){ + queryParameters['detachKeys'] = parameters['detachKeys']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Stop a container + * @method + * @name Docker#ContainerStop + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {integer} parameters.t - Number of seconds to wait before killing the container + */ + Docker.prototype.ContainerStop = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/stop'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['t'] !== undefined){ + queryParameters['t'] = parameters['t']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Restart a container + * @method + * @name Docker#ContainerRestart + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {integer} parameters.t - Number of seconds to wait before killing the container + */ + Docker.prototype.ContainerRestart = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/restart'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['t'] !== undefined){ + queryParameters['t'] = parameters['t']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Send a POSIX signal to a container, defaulting to killing to the +container. + + * @method + * @name Docker#ContainerKill + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.signal - Signal to send to the container as an integer or string (e.g. `SIGINT`) + */ + Docker.prototype.ContainerKill = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/kill'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + /** set default value **/ + queryParameters['signal'] = SIGKILL; + + if(parameters['signal'] !== undefined){ + queryParameters['signal'] = parameters['signal']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Change various configuration options of a container without having to +recreate it. + + * @method + * @name Docker#ContainerUpdate + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {} parameters.update - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.ContainerUpdate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/update'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + + + if(parameters['update'] !== undefined){ + body = parameters['update']; + } + + + if(parameters['update'] === undefined) + throw new Error('Missing required parameter: update'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Rename a container + * @method + * @name Docker#ContainerRename + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.name - New name for the container + */ + Docker.prototype.ContainerRename = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/rename'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['name'] !== undefined){ + queryParameters['name'] = parameters['name']; + } + + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Use the freezer cgroup to suspend all processes in a container. + +Traditionally, when suspending a process the `SIGSTOP` signal is used, +which is observable by the process being suspended. With the freezer +cgroup the process is unaware, and unable to capture, that it is being +suspended, and subsequently resumed. + + * @method + * @name Docker#ContainerPause + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + */ + Docker.prototype.ContainerPause = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/pause'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Resume a container which has been paused. + * @method + * @name Docker#ContainerUnpause + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + */ + Docker.prototype.ContainerUnpause = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/unpause'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Attach to a container to read its output or send it input. You can attach +to the same container multiple times and you can reattach to containers +that have been detached. + +Either the `stream` or `logs` parameter must be `true` for this endpoint +to do anything. + +See the [documentation for the `docker attach` command](https://docs.docker.com/engine/reference/commandline/attach/) +for more details. + +### Hijacking + +This endpoint hijacks the HTTP connection to transport `stdin`, `stdout`, +and `stderr` on the same socket. + +This is the response from the daemon for an attach request: + +``` +HTTP/1.1 200 OK +Content-Type: application/vnd.docker.raw-stream + +[STREAM] +``` + +After the headers and two new lines, the TCP connection can now be used +for raw, bidirectional communication between the client and server. + +To hint potential proxies about connection hijacking, the Docker client +can also optionally send connection upgrade headers. + +For example, the client sends this request to upgrade the connection: + +``` +POST /containers/16253994b7c4/attach?stream=1&stdout=1 HTTP/1.1 +Upgrade: tcp +Connection: Upgrade +``` + +The Docker daemon will respond with a `101 UPGRADED` response, and will +similarly follow with the raw stream: + +``` +HTTP/1.1 101 UPGRADED +Content-Type: application/vnd.docker.raw-stream +Connection: Upgrade +Upgrade: tcp + +[STREAM] +``` + +### Stream format + +When the TTY setting is disabled in [`POST /containers/create`](#operation/ContainerCreate), +the stream over the hijacked connected is multiplexed to separate out +`stdout` and `stderr`. The stream consists of a series of frames, each +containing a header and a payload. + +The header contains the information which the stream writes (`stdout` or +`stderr`). It also contains the size of the associated frame encoded in +the last four bytes (`uint32`). + +It is encoded on the first eight bytes like this: + +```go +header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4} +``` + +`STREAM_TYPE` can be: + +- 0: `stdin` (is written on `stdout`) +- 1: `stdout` +- 2: `stderr` + +`SIZE1, SIZE2, SIZE3, SIZE4` are the four bytes of the `uint32` size +encoded as big endian. + +Following the header is the payload, which is the specified number of +bytes of `STREAM_TYPE`. + +The simplest way to implement this protocol is the following: + +1. Read 8 bytes. +2. Choose `stdout` or `stderr` depending on the first byte. +3. Extract the frame size from the last four bytes. +4. Read the extracted size and output it on the correct output. +5. Goto 1. + +### Stream format when using a TTY + +When the TTY setting is enabled in [`POST /containers/create`](#operation/ContainerCreate), +the stream is not multiplexed. The data exchanged over the hijacked +connection is simply the raw data from the process PTY and client's +`stdin`. + + * @method + * @name Docker#ContainerAttach + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.detachKeys - Override the key sequence for detaching a container.Format is a single +character `[a-Z]` or `ctrl-` where `` is one of: `a-z`, +`@`, `^`, `[`, `,` or `_`. + + * @param {boolean} parameters.logs - Replay previous logs from the container. + +This is useful for attaching to a container that has started and you +want to output everything since the container started. + +If `stream` is also enabled, once all the previous output has been +returned, it will seamlessly transition into streaming current +output. + + * @param {boolean} parameters.stream - Stream attached streams from the time the request was made onwards. + + * @param {boolean} parameters.stdin - Attach to `stdin` + * @param {boolean} parameters.stdout - Attach to `stdout` + * @param {boolean} parameters.stderr - Attach to `stderr` + */ + Docker.prototype.ContainerAttach = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/attach'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/vnd.docker.raw-stream']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['detachKeys'] !== undefined){ + queryParameters['detachKeys'] = parameters['detachKeys']; + } + + + + + + + + if(parameters['logs'] !== undefined){ + queryParameters['logs'] = parameters['logs']; + } + + + + + + + + if(parameters['stream'] !== undefined){ + queryParameters['stream'] = parameters['stream']; + } + + + + + + + + if(parameters['stdin'] !== undefined){ + queryParameters['stdin'] = parameters['stdin']; + } + + + + + + + + if(parameters['stdout'] !== undefined){ + queryParameters['stdout'] = parameters['stdout']; + } + + + + + + + + if(parameters['stderr'] !== undefined){ + queryParameters['stderr'] = parameters['stderr']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Attach to a container via a websocket + * @method + * @name Docker#ContainerAttachWebsocket + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.detachKeys - Override the key sequence for detaching a container.Format is a single +character `[a-Z]` or `ctrl-` where `` is one of: `a-z`, +`@`, `^`, `[`, `,`, or `_`. + + * @param {boolean} parameters.logs - Return logs + * @param {boolean} parameters.stream - Return stream + * @param {boolean} parameters.stdin - Attach to `stdin` + * @param {boolean} parameters.stdout - Attach to `stdout` + * @param {boolean} parameters.stderr - Attach to `stderr` + */ + Docker.prototype.ContainerAttachWebsocket = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/attach/ws'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['detachKeys'] !== undefined){ + queryParameters['detachKeys'] = parameters['detachKeys']; + } + + + + + + + + if(parameters['logs'] !== undefined){ + queryParameters['logs'] = parameters['logs']; + } + + + + + + + + if(parameters['stream'] !== undefined){ + queryParameters['stream'] = parameters['stream']; + } + + + + + + + + if(parameters['stdin'] !== undefined){ + queryParameters['stdin'] = parameters['stdin']; + } + + + + + + + + if(parameters['stdout'] !== undefined){ + queryParameters['stdout'] = parameters['stdout']; + } + + + + + + + + if(parameters['stderr'] !== undefined){ + queryParameters['stderr'] = parameters['stderr']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Block until a container stops, then returns the exit code. + * @method + * @name Docker#ContainerWait + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.condition - Wait until a container state reaches the given condition, either +'not-running' (default), 'next-exit', or 'removed'. + + */ + Docker.prototype.ContainerWait = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/wait'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + /** set default value **/ + queryParameters['condition'] = not-running; + + if(parameters['condition'] !== undefined){ + queryParameters['condition'] = parameters['condition']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Remove a container + * @method + * @name Docker#ContainerDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {boolean} parameters.v - Remove anonymous volumes associated with the container. + * @param {boolean} parameters.force - If the container is running, kill it before removing it. + * @param {boolean} parameters.link - Remove the specified link associated with the container. + */ + Docker.prototype.ContainerDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['v'] !== undefined){ + queryParameters['v'] = parameters['v']; + } + + + + + + + + if(parameters['force'] !== undefined){ + queryParameters['force'] = parameters['force']; + } + + + + + + + + if(parameters['link'] !== undefined){ + queryParameters['link'] = parameters['link']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * A response header `X-Docker-Container-Path-Stat` is returned, containing +a base64 - encoded JSON object with some filesystem header information +about the path. + + * @method + * @name Docker#ContainerArchiveInfo + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.path - Resource in the container’s filesystem to archive. + */ + Docker.prototype.ContainerArchiveInfo = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/archive'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['path'] !== undefined){ + queryParameters['path'] = parameters['path']; + } + + + + + + if(parameters['path'] === undefined) + throw new Error('Missing required parameter: path'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('HEAD', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get a tar archive of a resource in the filesystem of container id. + * @method + * @name Docker#ContainerArchive + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.path - Resource in the container’s filesystem to archive. + */ + Docker.prototype.ContainerArchive = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/archive'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/x-tar']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['path'] !== undefined){ + queryParameters['path'] = parameters['path']; + } + + + + + + if(parameters['path'] === undefined) + throw new Error('Missing required parameter: path'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Upload a tar archive to be extracted to a path in the filesystem of container id. + * @method + * @name Docker#PutContainerArchive + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the container + * @param {string} parameters.path - Path to a directory in the container to extract the archive’s contents into. + * @param {string} parameters.noOverwriteDirNonDir - If `1`, `true`, or `True` then it will be an error if unpacking the +given content would cause an existing directory to be replaced with +a non-directory and vice versa. + + * @param {string} parameters.copyUidgid - If `1`, `true`, then it will copy UID/GID maps to the dest file or +dir + + * @param {} parameters.inputStream - The input stream must be a tar archive compressed with one of the +following algorithms: `identity` (no compression), `gzip`, `bzip2`, +or `xz`. + + */ + Docker.prototype.PutContainerArchive = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/archive'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/x-tar']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['path'] !== undefined){ + queryParameters['path'] = parameters['path']; + } + + + + + + if(parameters['path'] === undefined) + throw new Error('Missing required parameter: path'); + + + if(parameters['noOverwriteDirNonDir'] !== undefined){ + queryParameters['noOverwriteDirNonDir'] = parameters['noOverwriteDirNonDir']; + } + + + + + + + + if(parameters['copyUidgid'] !== undefined){ + queryParameters['copyUIDGID'] = parameters['copyUidgid']; + } + + + + + + + + + + if(parameters['inputStream'] !== undefined){ + body = parameters['inputStream']; + } + + + if(parameters['inputStream'] === undefined) + throw new Error('Missing required parameter: inputStream'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('PUT', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete stopped containers + * @method + * @name Docker#ContainerPrune + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `until=` Prune containers created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune containers with (or without, in case `label!=...` is used) the specified labels. + + */ + Docker.prototype.ContainerPrune = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/prune'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Returns a list of images on the server. Note that it uses a different, smaller representation of an image than inspecting a single image. + * @method + * @name Docker#ImageList + * @param {object} parameters - method options and parameters + * @param {boolean} parameters.all - Show all images. Only images from a final layer (no children) are shown by default. + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to +process on the images list. + +Available filters: + +- `before`=(`[:]`, `` or ``) +- `dangling=true` +- `label=key` or `label="key=value"` of an image label +- `reference`=(`[:]`) +- `since`=(`[:]`, `` or ``) + + * @param {boolean} parameters.digests - Show digest information as a `RepoDigests` field on each image. + */ + Docker.prototype.ImageList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/json'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['all'] !== undefined){ + queryParameters['all'] = parameters['all']; + } + + + + + + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + + if(parameters['digests'] !== undefined){ + queryParameters['digests'] = parameters['digests']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Build an image from a tar archive with a `Dockerfile` in it. + +The `Dockerfile` specifies how the image is built from the tar archive. It is typically in the archive's root, but can be at a different path or have a different name by specifying the `dockerfile` parameter. [See the `Dockerfile` reference for more information](https://docs.docker.com/engine/reference/builder/). + +The Docker daemon performs a preliminary validation of the `Dockerfile` before starting the build, and returns an error if the syntax is incorrect. After that, each instruction is run one-by-one until the ID of the new image is output. + +The build is canceled if the client drops the connection by quitting or being killed. + + * @method + * @name Docker#ImageBuild + * @param {object} parameters - method options and parameters + * @param {} parameters.inputStream - A tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz. + * @param {string} parameters.dockerfile - Path within the build context to the `Dockerfile`. This is ignored if `remote` is specified and points to an external `Dockerfile`. + * @param {string} parameters.t - A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default `latest` value is assumed. You can provide several `t` parameters. + * @param {string} parameters.extrahosts - Extra hosts to add to /etc/hosts + * @param {string} parameters.remote - A Git repository URI or HTTP/HTTPS context URI. If the URI points to a single text file, the file’s contents are placed into a file called `Dockerfile` and the image is built from that file. If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build. If the URI points to a tarball and the `dockerfile` parameter is also specified, there must be a file with the corresponding path inside the tarball. + * @param {boolean} parameters.q - Suppress verbose build output. + * @param {boolean} parameters.nocache - Do not use the cache when building the image. + * @param {string} parameters.cachefrom - JSON array of images used for build cache resolution. + * @param {string} parameters.pull - Attempt to pull the image even if an older image exists locally. + * @param {boolean} parameters.rm - Remove intermediate containers after a successful build. + * @param {boolean} parameters.forcerm - Always remove intermediate containers, even upon failure. + * @param {integer} parameters.memory - Set memory limit for build. + * @param {integer} parameters.memswap - Total memory (memory + swap). Set as `-1` to disable swap. + * @param {integer} parameters.cpushares - CPU shares (relative weight). + * @param {string} parameters.cpusetcpus - CPUs in which to allow execution (e.g., `0-3`, `0,1`). + * @param {integer} parameters.cpuperiod - The length of a CPU period in microseconds. + * @param {integer} parameters.cpuquota - Microseconds of CPU time that the container can get in a CPU period. + * @param {string} parameters.buildargs - JSON map of string pairs for build-time variables. Users pass these values at build-time. Docker uses the buildargs as the environment context for commands run via the `Dockerfile` RUN instruction, or for variable expansion in other `Dockerfile` instructions. This is not meant for passing secret values. + +For example, the build arg `FOO=bar` would become `{"FOO":"bar"}` in JSON. This would result in the query parameter `buildargs={"FOO":"bar"}`. Note that `{"FOO":"bar"}` should be URI component encoded. + +[Read more about the buildargs instruction.](https://docs.docker.com/engine/reference/builder/#arg) + + * @param {integer} parameters.shmsize - Size of `/dev/shm` in bytes. The size must be greater than 0. If omitted the system uses 64MB. + * @param {boolean} parameters.squash - Squash the resulting images layers into a single layer. *(Experimental release only.)* + * @param {string} parameters.labels - Arbitrary key/value labels to set on the image, as a JSON map of string pairs. + * @param {string} parameters.networkmode - Sets the networking mode for the run commands during build. Supported +standard values are: `bridge`, `host`, `none`, and `container:`. +Any other value is taken as a custom network's name or ID to which this +container should connect to. + + + * @param {string} parameters.xRegistryConfig - This is a base64-encoded JSON object with auth configurations for multiple registries that a build may refer to. + +The key is a registry URL, and the value is an auth configuration object, [as described in the authentication section](#section/Authentication). For example: + +``` +{ + "docker.example.com": { + "username": "janedoe", + "password": "hunter2" + }, + "https://index.docker.io/v1/": { + "username": "mobydock", + "password": "conta1n3rize14" + } +} +``` + +Only the registry domain name (and port if not the default 443) are required. However, for legacy reasons, the Docker Hub registry must be specified with both a `https://` prefix and a `/v1/` suffix even though Docker will prefer to use the v2 registry API. + + * @param {string} parameters.platform - Platform in the format os[/arch[/variant]] + * @param {string} parameters.target - Target build stage + * @param {string} parameters.outputs - BuildKit output configuration + */ + Docker.prototype.ImageBuild = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/build'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/octet-stream']; + + + + + if(parameters['inputStream'] !== undefined){ + body = parameters['inputStream']; + } + + + + /** set default value **/ + queryParameters['dockerfile'] = Dockerfile; + + if(parameters['dockerfile'] !== undefined){ + queryParameters['dockerfile'] = parameters['dockerfile']; + } + + + + + + + + if(parameters['t'] !== undefined){ + queryParameters['t'] = parameters['t']; + } + + + + + + + + if(parameters['extrahosts'] !== undefined){ + queryParameters['extrahosts'] = parameters['extrahosts']; + } + + + + + + + + if(parameters['remote'] !== undefined){ + queryParameters['remote'] = parameters['remote']; + } + + + + + + + + if(parameters['q'] !== undefined){ + queryParameters['q'] = parameters['q']; + } + + + + + + + + if(parameters['nocache'] !== undefined){ + queryParameters['nocache'] = parameters['nocache']; + } + + + + + + + + if(parameters['cachefrom'] !== undefined){ + queryParameters['cachefrom'] = parameters['cachefrom']; + } + + + + + + + + if(parameters['pull'] !== undefined){ + queryParameters['pull'] = parameters['pull']; + } + + + + + + + /** set default value **/ + queryParameters['rm'] = true; + + if(parameters['rm'] !== undefined){ + queryParameters['rm'] = parameters['rm']; + } + + + + + + + + if(parameters['forcerm'] !== undefined){ + queryParameters['forcerm'] = parameters['forcerm']; + } + + + + + + + + if(parameters['memory'] !== undefined){ + queryParameters['memory'] = parameters['memory']; + } + + + + + + + + if(parameters['memswap'] !== undefined){ + queryParameters['memswap'] = parameters['memswap']; + } + + + + + + + + if(parameters['cpushares'] !== undefined){ + queryParameters['cpushares'] = parameters['cpushares']; + } + + + + + + + + if(parameters['cpusetcpus'] !== undefined){ + queryParameters['cpusetcpus'] = parameters['cpusetcpus']; + } + + + + + + + + if(parameters['cpuperiod'] !== undefined){ + queryParameters['cpuperiod'] = parameters['cpuperiod']; + } + + + + + + + + if(parameters['cpuquota'] !== undefined){ + queryParameters['cpuquota'] = parameters['cpuquota']; + } + + + + + + + + if(parameters['buildargs'] !== undefined){ + queryParameters['buildargs'] = parameters['buildargs']; + } + + + + + + + + if(parameters['shmsize'] !== undefined){ + queryParameters['shmsize'] = parameters['shmsize']; + } + + + + + + + + if(parameters['squash'] !== undefined){ + queryParameters['squash'] = parameters['squash']; + } + + + + + + + + if(parameters['labels'] !== undefined){ + queryParameters['labels'] = parameters['labels']; + } + + + + + + + + if(parameters['networkmode'] !== undefined){ + queryParameters['networkmode'] = parameters['networkmode']; + } + + + + + + + + + headers['Content-type'] = 'application/x-tar'; + + + + + + + if(parameters['xRegistryConfig'] !== undefined){ + headers['X-Registry-Config'] = parameters['xRegistryConfig']; + } + + + + + + if(parameters['platform'] !== undefined){ + queryParameters['platform'] = parameters['platform']; + } + + + + + + + + if(parameters['target'] !== undefined){ + queryParameters['target'] = parameters['target']; + } + + + + + + + + if(parameters['outputs'] !== undefined){ + queryParameters['outputs'] = parameters['outputs']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete builder cache + * @method + * @name Docker#BuildPrune + * @param {object} parameters - method options and parameters + * @param {integer} parameters.keepStorage - Amount of disk space in bytes to keep for cache + * @param {boolean} parameters.all - Remove all types of build cache + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to +process on the list of build cache objects. + +Available filters: + +- `until=`: duration relative to daemon's time, during which build cache was not used, in Go's duration format (e.g., '24h') +- `id=` +- `parent=` +- `type=` +- `description=` +- `inuse` +- `shared` +- `private` + + */ + Docker.prototype.BuildPrune = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/build/prune'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['keepStorage'] !== undefined){ + queryParameters['keep-storage'] = parameters['keepStorage']; + } + + + + + + + + if(parameters['all'] !== undefined){ + queryParameters['all'] = parameters['all']; + } + + + + + + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create an image by either pulling it from a registry or importing it. + * @method + * @name Docker#ImageCreate + * @param {object} parameters - method options and parameters + * @param {string} parameters.fromImage - Name of the image to pull. The name may include a tag or digest. This parameter may only be used when pulling an image. The pull is cancelled if the HTTP connection is closed. + * @param {string} parameters.fromSrc - Source to import. The value may be a URL from which the image can be retrieved or `-` to read the image from the request body. This parameter may only be used when importing an image. + * @param {string} parameters.repo - Repository name given to an image when it is imported. The repo may include a tag. This parameter may only be used when importing an image. + * @param {string} parameters.tag - Tag or digest. If empty when pulling an image, this causes all tags for the given image to be pulled. + * @param {string} parameters.message - Set commit message for imported image. + * @param {} parameters.inputImage - Image content if the value `-` has been specified in fromSrc query parameter + * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration. + +Refer to the [authentication section](#section/Authentication) for +details. + + * @param {string} parameters.platform - Platform in the format os[/arch[/variant]] + */ + Docker.prototype.ImageCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['text/plain']; + + + if(parameters['fromImage'] !== undefined){ + queryParameters['fromImage'] = parameters['fromImage']; + } + + + + + + + + if(parameters['fromSrc'] !== undefined){ + queryParameters['fromSrc'] = parameters['fromSrc']; + } + + + + + + + + if(parameters['repo'] !== undefined){ + queryParameters['repo'] = parameters['repo']; + } + + + + + + + + if(parameters['tag'] !== undefined){ + queryParameters['tag'] = parameters['tag']; + } + + + + + + + + if(parameters['message'] !== undefined){ + queryParameters['message'] = parameters['message']; + } + + + + + + + + + + if(parameters['inputImage'] !== undefined){ + body = parameters['inputImage']; + } + + + + + + if(parameters['xRegistryAuth'] !== undefined){ + headers['X-Registry-Auth'] = parameters['xRegistryAuth']; + } + + + + + + if(parameters['platform'] !== undefined){ + queryParameters['platform'] = parameters['platform']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Return low-level information about an image. + * @method + * @name Docker#ImageInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Image name or id + */ + Docker.prototype.ImageInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/{name}/json'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Return parent layers of an image. + * @method + * @name Docker#ImageHistory + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Image name or ID + */ + Docker.prototype.ImageHistory = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/{name}/history'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Push an image to a registry. + +If you wish to push an image on to a private registry, that image must +already have a tag which references the registry. For example, +`registry.example.com/myimage:latest`. + +The push is cancelled if the HTTP connection is closed. + + * @method + * @name Docker#ImagePush + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Image name or ID. + * @param {string} parameters.tag - The tag to associate with the image on the registry. + * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration. + +Refer to the [authentication section](#section/Authentication) for +details. + + */ + Docker.prototype.ImagePush = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/{name}/push'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/octet-stream']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + if(parameters['tag'] !== undefined){ + queryParameters['tag'] = parameters['tag']; + } + + + + + + + + + if(parameters['xRegistryAuth'] !== undefined){ + headers['X-Registry-Auth'] = parameters['xRegistryAuth']; + } + + + + if(parameters['xRegistryAuth'] === undefined) + throw new Error('Missing required parameter: xRegistryAuth'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Tag an image so that it becomes part of a repository. + * @method + * @name Docker#ImageTag + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Image name or ID to tag. + * @param {string} parameters.repo - The repository to tag in. For example, `someuser/someimage`. + * @param {string} parameters.tag - The name of the new tag. + */ + Docker.prototype.ImageTag = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/{name}/tag'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + if(parameters['repo'] !== undefined){ + queryParameters['repo'] = parameters['repo']; + } + + + + + + + + if(parameters['tag'] !== undefined){ + queryParameters['tag'] = parameters['tag']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Remove an image, along with any untagged parent images that were +referenced by that image. + +Images can't be removed if they have descendant images, are being +used by a running container or are being used by a build. + + * @method + * @name Docker#ImageDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Image name or ID + * @param {boolean} parameters.force - Remove the image even if it is being used by stopped containers or has other tags + * @param {boolean} parameters.noprune - Do not delete untagged parent images + */ + Docker.prototype.ImageDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/{name}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + if(parameters['force'] !== undefined){ + queryParameters['force'] = parameters['force']; + } + + + + + + + + if(parameters['noprune'] !== undefined){ + queryParameters['noprune'] = parameters['noprune']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Search for an image on Docker Hub. + * @method + * @name Docker#ImageSearch + * @param {object} parameters - method options and parameters + * @param {string} parameters.term - Term to search + * @param {integer} parameters.limit - Maximum number of results to return + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to process on the images list. Available filters: + +- `is-automated=(true|false)` +- `is-official=(true|false)` +- `stars=` Matches images that has at least 'number' stars. + + */ + Docker.prototype.ImageSearch = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/search'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['term'] !== undefined){ + queryParameters['term'] = parameters['term']; + } + + + + + + if(parameters['term'] === undefined) + throw new Error('Missing required parameter: term'); + + + if(parameters['limit'] !== undefined){ + queryParameters['limit'] = parameters['limit']; + } + + + + + + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete unused images + * @method + * @name Docker#ImagePrune + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`). Available filters: + +- `dangling=` When set to `true` (or `1`), prune only + unused *and* untagged images. When set to `false` + (or `0`), all unused images are pruned. +- `until=` Prune images created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune images with (or without, in case `label!=...` is used) the specified labels. + + */ + Docker.prototype.ImagePrune = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/prune'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Validate credentials for a registry and, if available, get an identity +token for accessing the registry without password. + + * @method + * @name Docker#SystemAuth + * @param {object} parameters - method options and parameters + * @param {} parameters.authConfig - Authentication to check + */ + Docker.prototype.SystemAuth = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/auth'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['authConfig'] !== undefined){ + body = parameters['authConfig']; + } + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get system information + * @method + * @name Docker#SystemInfo + * @param {object} parameters - method options and parameters + */ + Docker.prototype.SystemInfo = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/info'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Returns the version of Docker that is running and various information about the system that Docker is running on. + * @method + * @name Docker#SystemVersion + * @param {object} parameters - method options and parameters + */ + Docker.prototype.SystemVersion = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/version'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * This is a dummy endpoint you can use to test if the server is accessible. + * @method + * @name Docker#SystemPing + * @param {object} parameters - method options and parameters + */ + Docker.prototype.SystemPing = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/_ping'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['text/plain']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * This is a dummy endpoint you can use to test if the server is accessible. + * @method + * @name Docker#SystemPingHead + * @param {object} parameters - method options and parameters + */ + Docker.prototype.SystemPingHead = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/_ping'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['text/plain']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('HEAD', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a new image from a container + * @method + * @name Docker#ImageCommit + * @param {object} parameters - method options and parameters + * @param {} parameters.containerConfig - The container configuration + * @param {string} parameters.container - The ID or name of the container to commit + * @param {string} parameters.repo - Repository name for the created image + * @param {string} parameters.tag - Tag name for the create image + * @param {string} parameters.comment - Commit message + * @param {string} parameters.author - Author of the image (e.g., `John Hannibal Smith `) + * @param {boolean} parameters.pause - Whether to pause the container before committing + * @param {string} parameters.changes - `Dockerfile` instructions to apply while committing + */ + Docker.prototype.ImageCommit = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/commit'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['containerConfig'] !== undefined){ + body = parameters['containerConfig']; + } + + + + + if(parameters['container'] !== undefined){ + queryParameters['container'] = parameters['container']; + } + + + + + + + + if(parameters['repo'] !== undefined){ + queryParameters['repo'] = parameters['repo']; + } + + + + + + + + if(parameters['tag'] !== undefined){ + queryParameters['tag'] = parameters['tag']; + } + + + + + + + + if(parameters['comment'] !== undefined){ + queryParameters['comment'] = parameters['comment']; + } + + + + + + + + if(parameters['author'] !== undefined){ + queryParameters['author'] = parameters['author']; + } + + + + + + + /** set default value **/ + queryParameters['pause'] = true; + + if(parameters['pause'] !== undefined){ + queryParameters['pause'] = parameters['pause']; + } + + + + + + + + if(parameters['changes'] !== undefined){ + queryParameters['changes'] = parameters['changes']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Stream real-time events from the server. + +Various objects within Docker report events when something happens to them. + +Containers report these events: `attach`, `commit`, `copy`, `create`, `destroy`, `detach`, `die`, `exec_create`, `exec_detach`, `exec_start`, `exec_die`, `export`, `health_status`, `kill`, `oom`, `pause`, `rename`, `resize`, `restart`, `start`, `stop`, `top`, `unpause`, `update`, and `prune` + +Images report these events: `delete`, `import`, `load`, `pull`, `push`, `save`, `tag`, `untag`, and `prune` + +Volumes report these events: `create`, `mount`, `unmount`, `destroy`, and `prune` + +Networks report these events: `create`, `connect`, `disconnect`, `destroy`, `update`, `remove`, and `prune` + +The Docker daemon reports these events: `reload` + +Services report these events: `create`, `update`, and `remove` + +Nodes report these events: `create`, `update`, and `remove` + +Secrets report these events: `create`, `update`, and `remove` + +Configs report these events: `create`, `update`, and `remove` + +The Builder reports `prune` events + + * @method + * @name Docker#SystemEvents + * @param {object} parameters - method options and parameters + * @param {string} parameters.since - Show events created since this timestamp then stream new events. + * @param {string} parameters.until - Show events created until this timestamp then stop streaming. + * @param {string} parameters.filters - A JSON encoded value of filters (a `map[string][]string`) to process on the event list. Available filters: + +- `config=` config name or ID +- `container=` container name or ID +- `daemon=` daemon name or ID +- `event=` event type +- `image=` image name or ID +- `label=` image or container label +- `network=` network name or ID +- `node=` node ID +- `plugin`= plugin name or ID +- `scope`= local or swarm +- `secret=` secret name or ID +- `service=` service name or ID +- `type=` object to filter by, one of `container`, `image`, `volume`, `network`, `daemon`, `plugin`, `node`, `service`, `secret` or `config` +- `volume=` volume name + + */ + Docker.prototype.SystemEvents = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/events'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['since'] !== undefined){ + queryParameters['since'] = parameters['since']; + } + + + + + + + + if(parameters['until'] !== undefined){ + queryParameters['until'] = parameters['until']; + } + + + + + + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get data usage information + * @method + * @name Docker#SystemDataUsage + * @param {object} parameters - method options and parameters + */ + Docker.prototype.SystemDataUsage = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/system/df'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get a tarball containing all images and metadata for a repository. + +If `name` is a specific name and tag (e.g. `ubuntu:latest`), then only that image (and its parents) are returned. If `name` is an image ID, similarly only that image (and its parents) are returned, but with the exclusion of the `repositories` file in the tarball, as there were no image names referenced. + +### Image tarball format + +An image tarball contains one directory per image layer (named using its long ID), each containing these files: + +- `VERSION`: currently `1.0` - the file format version +- `json`: detailed layer information, similar to `docker inspect layer_id` +- `layer.tar`: A tarfile containing the filesystem changes in this layer + +The `layer.tar` file contains `aufs` style `.wh..wh.aufs` files and directories for storing attribute changes and deletions. + +If the tarball defines a repository, the tarball should also include a `repositories` file at the root that contains a list of repository and tag names mapped to layer IDs. + +```json +{ + "hello-world": { + "latest": "565a9d68a73f6706862bfe8409a7f659776d4d60a8d096eb4a3cbce6999cc2a1" + } +} +``` + + * @method + * @name Docker#ImageGet + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Image name or ID + */ + Docker.prototype.ImageGet = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/{name}/get'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/x-tar']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get a tarball containing all images and metadata for several image +repositories. + +For each value of the `names` parameter: if it is a specific name and +tag (e.g. `ubuntu:latest`), then only that image (and its parents) are +returned; if it is an image ID, similarly only that image (and its parents) +are returned and there would be no names referenced in the 'repositories' +file for this image ID. + +For details on the format, see the [export image endpoint](#operation/ImageGet). + + * @method + * @name Docker#ImageGetAll + * @param {object} parameters - method options and parameters + * @param {array} parameters.names - Image names to filter by + */ + Docker.prototype.ImageGetAll = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/get'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/x-tar']; + headers['content-type'] = ['application/json']; + + + if(parameters['names'] !== undefined){ + queryParameters['names'] = parameters['names']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Load a set of images and tags into a repository. + +For details on the format, see the [export image endpoint](#operation/ImageGet). + + * @method + * @name Docker#ImageLoad + * @param {object} parameters - method options and parameters + * @param {} parameters.imagesTarball - Tar archive containing images + * @param {boolean} parameters.quiet - Suppress progress details during load. + */ + Docker.prototype.ImageLoad = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/images/load'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/x-tar']; + + + + + if(parameters['imagesTarball'] !== undefined){ + body = parameters['imagesTarball']; + } + + + + + if(parameters['quiet'] !== undefined){ + queryParameters['quiet'] = parameters['quiet']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Run a command inside a running container. + * @method + * @name Docker#ContainerExec + * @param {object} parameters - method options and parameters + * @param {} parameters.execConfig - Exec configuration + * @param {string} parameters.id - ID or name of container + */ + Docker.prototype.ContainerExec = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/containers/{id}/exec'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['execConfig'] !== undefined){ + body = parameters['execConfig']; + } + + + if(parameters['execConfig'] === undefined) + throw new Error('Missing required parameter: execConfig'); + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Starts a previously set up exec instance. If detach is true, this endpoint +returns immediately after starting the command. Otherwise, it sets up an +interactive session with the command. + + * @method + * @name Docker#ExecStart + * @param {object} parameters - method options and parameters + * @param {} parameters.execStartConfig - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + * @param {string} parameters.id - Exec instance ID + */ + Docker.prototype.ExecStart = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/exec/{id}/start'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/vnd.docker.raw-stream']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['execStartConfig'] !== undefined){ + body = parameters['execStartConfig']; + } + + + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Resize the TTY session used by an exec instance. This endpoint only works +if `tty` was specified as part of creating and starting the exec instance. + + * @method + * @name Docker#ExecResize + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - Exec instance ID + * @param {integer} parameters.h - Height of the TTY session in characters + * @param {integer} parameters.w - Width of the TTY session in characters + */ + Docker.prototype.ExecResize = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/exec/{id}/resize'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['h'] !== undefined){ + queryParameters['h'] = parameters['h']; + } + + + + + + + + if(parameters['w'] !== undefined){ + queryParameters['w'] = parameters['w']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Return low-level information about an exec instance. + * @method + * @name Docker#ExecInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - Exec instance ID + */ + Docker.prototype.ExecInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/exec/{id}/json'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * List volumes + * @method + * @name Docker#VolumeList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - JSON encoded value of the filters (a `map[string][]string`) to +process on the volumes list. Available filters: + +- `dangling=` When set to `true` (or `1`), returns all + volumes that are not in use by a container. When set to `false` + (or `0`), only volumes that are in use by one or more + containers are returned. +- `driver=` Matches volumes based on their driver. +- `label=` or `label=:` Matches volumes based on + the presence of a `label` alone or a `label` and a value. +- `name=` Matches all or part of a volume name. + + */ + Docker.prototype.VolumeList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/volumes'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a volume + * @method + * @name Docker#VolumeCreate + * @param {object} parameters - method options and parameters + * @param {} parameters.volumeConfig - Volume configuration + */ + Docker.prototype.VolumeCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/volumes/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['volumeConfig'] !== undefined){ + body = parameters['volumeConfig']; + } + + + if(parameters['volumeConfig'] === undefined) + throw new Error('Missing required parameter: volumeConfig'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a volume + * @method + * @name Docker#VolumeInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Volume name or ID + */ + Docker.prototype.VolumeInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/volumes/{name}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Instruct the driver to remove the volume. + * @method + * @name Docker#VolumeDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Volume name or ID + * @param {boolean} parameters.force - Force the removal of the volume + */ + Docker.prototype.VolumeDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/volumes/{name}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + if(parameters['force'] !== undefined){ + queryParameters['force'] = parameters['force']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete unused volumes + * @method + * @name Docker#VolumePrune + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune volumes with (or without, in case `label!=...` is used) the specified labels. + + */ + Docker.prototype.VolumePrune = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/volumes/prune'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Returns a list of networks. For details on the format, see the +[network inspect endpoint](#operation/NetworkInspect). + +Note that it uses a different, smaller representation of a network than +inspecting a single network. For example, the list of containers attached +to the network is not propagated in API versions 1.28 and up. + + * @method + * @name Docker#NetworkList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - JSON encoded value of the filters (a `map[string][]string`) to process +on the networks list. + +Available filters: + +- `dangling=` When set to `true` (or `1`), returns all + networks that are not in use by a container. When set to `false` + (or `0`), only networks that are in use by one or more + containers are returned. +- `driver=` Matches a network's driver. +- `id=` Matches all or part of a network ID. +- `label=` or `label==` of a network label. +- `name=` Matches all or part of a network name. +- `scope=["swarm"|"global"|"local"]` Filters networks by scope (`swarm`, `global`, or `local`). +- `type=["custom"|"builtin"]` Filters networks by type. The `custom` keyword returns all user-defined networks. + + */ + Docker.prototype.NetworkList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/networks'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a network + * @method + * @name Docker#NetworkInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - Network ID or name + * @param {boolean} parameters.verbose - Detailed inspect output for troubleshooting + * @param {string} parameters.scope - Filter the network by scope (swarm, global, or local) + */ + Docker.prototype.NetworkInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/networks/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['verbose'] !== undefined){ + queryParameters['verbose'] = parameters['verbose']; + } + + + + + + + + if(parameters['scope'] !== undefined){ + queryParameters['scope'] = parameters['scope']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Remove a network + * @method + * @name Docker#NetworkDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - Network ID or name + */ + Docker.prototype.NetworkDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/networks/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a network + * @method + * @name Docker#NetworkCreate + * @param {object} parameters - method options and parameters + * @param {} parameters.networkConfig - Network configuration + */ + Docker.prototype.NetworkCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/networks/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['networkConfig'] !== undefined){ + body = parameters['networkConfig']; + } + + + if(parameters['networkConfig'] === undefined) + throw new Error('Missing required parameter: networkConfig'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Connect a container to a network + * @method + * @name Docker#NetworkConnect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - Network ID or name + * @param {} parameters.container - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.NetworkConnect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/networks/{id}/connect'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + + + if(parameters['container'] !== undefined){ + body = parameters['container']; + } + + + if(parameters['container'] === undefined) + throw new Error('Missing required parameter: container'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Disconnect a container from a network + * @method + * @name Docker#NetworkDisconnect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - Network ID or name + * @param {} parameters.container - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.NetworkDisconnect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/networks/{id}/disconnect'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + + + if(parameters['container'] !== undefined){ + body = parameters['container']; + } + + + if(parameters['container'] === undefined) + throw new Error('Missing required parameter: container'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete unused networks + * @method + * @name Docker#NetworkPrune + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `until=` Prune networks created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. +- `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune networks with (or without, in case `label!=...` is used) the specified labels. + + */ + Docker.prototype.NetworkPrune = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/networks/prune'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Returns information about installed plugins. + * @method + * @name Docker#PluginList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to +process on the plugin list. + +Available filters: + +- `capability=` +- `enable=|` + + */ + Docker.prototype.PluginList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get plugin privileges + * @method + * @name Docker#GetPluginPrivileges + * @param {object} parameters - method options and parameters + * @param {string} parameters.remote - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + */ + Docker.prototype.GetPluginPrivileges = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/privileges'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + if(parameters['remote'] !== undefined){ + queryParameters['remote'] = parameters['remote']; + } + + + + + + if(parameters['remote'] === undefined) + throw new Error('Missing required parameter: remote'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Pulls and installs a plugin. After the plugin is installed, it can be +enabled using the [`POST /plugins/{name}/enable` endpoint](#operation/PostPluginsEnable). + + * @method + * @name Docker#PluginPull + * @param {object} parameters - method options and parameters + * @param {string} parameters.remote - Remote reference for plugin to install. + +The `:latest` tag is optional, and is used as the default if omitted. + + * @param {string} parameters.name - Local name for the pulled plugin. + +The `:latest` tag is optional, and is used as the default if omitted. + + * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration to use when pulling a plugin +from a registry. + +Refer to the [authentication section](#section/Authentication) for +details. + + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.PluginPull = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/pull'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['remote'] !== undefined){ + queryParameters['remote'] = parameters['remote']; + } + + + + + + if(parameters['remote'] === undefined) + throw new Error('Missing required parameter: remote'); + + + if(parameters['name'] !== undefined){ + queryParameters['name'] = parameters['name']; + } + + + + + + + + + if(parameters['xRegistryAuth'] !== undefined){ + headers['X-Registry-Auth'] = parameters['xRegistryAuth']; + } + + + + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a plugin + * @method + * @name Docker#PluginInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + */ + Docker.prototype.PluginInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/{name}/json'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Remove a plugin + * @method + * @name Docker#PluginDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + * @param {boolean} parameters.force - Disable the plugin before removing. This may result in issues if the +plugin is in use by a container. + + */ + Docker.prototype.PluginDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/{name}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + if(parameters['force'] !== undefined){ + queryParameters['force'] = parameters['force']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Enable a plugin + * @method + * @name Docker#PluginEnable + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + * @param {integer} parameters.timeout - Set the HTTP client timeout (in seconds) + */ + Docker.prototype.PluginEnable = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/{name}/enable'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + if(parameters['timeout'] !== undefined){ + queryParameters['timeout'] = parameters['timeout']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Disable a plugin + * @method + * @name Docker#PluginDisable + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + */ + Docker.prototype.PluginDisable = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/{name}/disable'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Upgrade a plugin + * @method + * @name Docker#PluginUpgrade + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + * @param {string} parameters.remote - Remote reference to upgrade to. + +The `:latest` tag is optional, and is used as the default if omitted. + + * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration to use when pulling a plugin +from a registry. + +Refer to the [authentication section](#section/Authentication) for +details. + + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.PluginUpgrade = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/{name}/upgrade'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + if(parameters['remote'] !== undefined){ + queryParameters['remote'] = parameters['remote']; + } + + + + + + if(parameters['remote'] === undefined) + throw new Error('Missing required parameter: remote'); + + + + if(parameters['xRegistryAuth'] !== undefined){ + headers['X-Registry-Auth'] = parameters['xRegistryAuth']; + } + + + + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a plugin + * @method + * @name Docker#PluginCreate + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + * @param {} parameters.tarContext - Path to tar containing plugin rootfs and manifest + */ + Docker.prototype.PluginCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/x-tar']; + + + if(parameters['name'] !== undefined){ + queryParameters['name'] = parameters['name']; + } + + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + + + if(parameters['tarContext'] !== undefined){ + body = parameters['tarContext']; + } + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Push a plugin to the registry. + + * @method + * @name Docker#PluginPush + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + */ + Docker.prototype.PluginPush = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/{name}/push'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Configure a plugin + * @method + * @name Docker#PluginSet + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - The name of the plugin. The `:latest` tag is optional, and is the +default if omitted. + + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.PluginSet = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/plugins/{name}/set'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * List nodes + * @method + * @name Docker#NodeList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - Filters to process on the nodes list, encoded as JSON (a `map[string][]string`). + +Available filters: +- `id=` +- `label=` +- `membership=`(`accepted`|`pending`)` +- `name=` +- `node.label=` +- `role=`(`manager`|`worker`)` + + */ + Docker.prototype.NodeList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/nodes'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a node + * @method + * @name Docker#NodeInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - The ID or name of the node + */ + Docker.prototype.NodeInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/nodes/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete a node + * @method + * @name Docker#NodeDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - The ID or name of the node + * @param {boolean} parameters.force - Force remove a node from the swarm + */ + Docker.prototype.NodeDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/nodes/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['force'] !== undefined){ + queryParameters['force'] = parameters['force']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Update a node + * @method + * @name Docker#NodeUpdate + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - The ID of the node + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + * @param {integer} parameters.version - The version number of the node object being updated. This is required +to avoid conflicting writes. + + */ + Docker.prototype.NodeUpdate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/nodes/{id}/update'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + + if(parameters['version'] !== undefined){ + queryParameters['version'] = parameters['version']; + } + + + + + + if(parameters['version'] === undefined) + throw new Error('Missing required parameter: version'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect swarm + * @method + * @name Docker#SwarmInspect + * @param {object} parameters - method options and parameters + */ + Docker.prototype.SwarmInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/swarm'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Initialize a new swarm + * @method + * @name Docker#SwarmInit + * @param {object} parameters - method options and parameters + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.SwarmInit = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/swarm/init'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + if(parameters['body'] === undefined) + throw new Error('Missing required parameter: body'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Join an existing swarm + * @method + * @name Docker#SwarmJoin + * @param {object} parameters - method options and parameters + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.SwarmJoin = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/swarm/join'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + if(parameters['body'] === undefined) + throw new Error('Missing required parameter: body'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Leave a swarm + * @method + * @name Docker#SwarmLeave + * @param {object} parameters - method options and parameters + * @param {boolean} parameters.force - Force leave swarm, even if this is the last manager or that it will +break the cluster. + + */ + Docker.prototype.SwarmLeave = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/swarm/leave'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + if(parameters['force'] !== undefined){ + queryParameters['force'] = parameters['force']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Update a swarm + * @method + * @name Docker#SwarmUpdate + * @param {object} parameters - method options and parameters + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + * @param {integer} parameters.version - The version number of the swarm object being updated. This is +required to avoid conflicting writes. + + * @param {boolean} parameters.rotateWorkerToken - Rotate the worker join token. + * @param {boolean} parameters.rotateManagerToken - Rotate the manager join token. + * @param {boolean} parameters.rotateManagerUnlockKey - Rotate the manager unlock key. + */ + Docker.prototype.SwarmUpdate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/swarm/update'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + if(parameters['body'] === undefined) + throw new Error('Missing required parameter: body'); + + + if(parameters['version'] !== undefined){ + queryParameters['version'] = parameters['version']; + } + + + + + + if(parameters['version'] === undefined) + throw new Error('Missing required parameter: version'); + + + if(parameters['rotateWorkerToken'] !== undefined){ + queryParameters['rotateWorkerToken'] = parameters['rotateWorkerToken']; + } + + + + + + + + if(parameters['rotateManagerToken'] !== undefined){ + queryParameters['rotateManagerToken'] = parameters['rotateManagerToken']; + } + + + + + + + + if(parameters['rotateManagerUnlockKey'] !== undefined){ + queryParameters['rotateManagerUnlockKey'] = parameters['rotateManagerUnlockKey']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get the unlock key + * @method + * @name Docker#SwarmUnlockkey + * @param {object} parameters - method options and parameters + */ + Docker.prototype.SwarmUnlockkey = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/swarm/unlockkey'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Unlock a locked manager + * @method + * @name Docker#SwarmUnlock + * @param {object} parameters - method options and parameters + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.SwarmUnlock = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/swarm/unlock'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + if(parameters['body'] === undefined) + throw new Error('Missing required parameter: body'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * List services + * @method + * @name Docker#ServiceList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to +process on the services list. + +Available filters: + +- `id=` +- `label=` +- `mode=["replicated"|"global"]` +- `name=` + + * @param {boolean} parameters.status - Include service status, with count of running and desired tasks. + + */ + Docker.prototype.ServiceList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/services'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + + if(parameters['status'] !== undefined){ + queryParameters['status'] = parameters['status']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a service + * @method + * @name Docker#ServiceCreate + * @param {object} parameters - method options and parameters + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration for pulling from private +registries. + +Refer to the [authentication section](#section/Authentication) for +details. + + */ + Docker.prototype.ServiceCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/services/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + if(parameters['body'] === undefined) + throw new Error('Missing required parameter: body'); + + + + if(parameters['xRegistryAuth'] !== undefined){ + headers['X-Registry-Auth'] = parameters['xRegistryAuth']; + } + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a service + * @method + * @name Docker#ServiceInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of service. + * @param {boolean} parameters.insertDefaults - Fill empty fields with default values. + */ + Docker.prototype.ServiceInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/services/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['insertDefaults'] !== undefined){ + queryParameters['insertDefaults'] = parameters['insertDefaults']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete a service + * @method + * @name Docker#ServiceDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of service. + */ + Docker.prototype.ServiceDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/services/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Update a service + * @method + * @name Docker#ServiceUpdate + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of service. + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + * @param {integer} parameters.version - The version number of the service object being updated. This is +required to avoid conflicting writes. +This version number should be the value as currently set on the +service *before* the update. You can find the current version by +calling `GET /services/{id}` + + * @param {string} parameters.registryAuthFrom - If the `X-Registry-Auth` header is not specified, this parameter +indicates where to find registry authorization credentials. + + * @param {string} parameters.rollback - Set to this parameter to `previous` to cause a server-side rollback +to the previous service spec. The supplied spec will be ignored in +this case. + + * @param {string} parameters.xRegistryAuth - A base64url-encoded auth configuration for pulling from private +registries. + +Refer to the [authentication section](#section/Authentication) for +details. + + */ + Docker.prototype.ServiceUpdate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/services/{id}/update'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + if(parameters['body'] === undefined) + throw new Error('Missing required parameter: body'); + + + if(parameters['version'] !== undefined){ + queryParameters['version'] = parameters['version']; + } + + + + + + if(parameters['version'] === undefined) + throw new Error('Missing required parameter: version'); + + /** set default value **/ + queryParameters['registryAuthFrom'] = spec; + + if(parameters['registryAuthFrom'] !== undefined){ + queryParameters['registryAuthFrom'] = parameters['registryAuthFrom']; + } + + + + + + + + if(parameters['rollback'] !== undefined){ + queryParameters['rollback'] = parameters['rollback']; + } + + + + + + + + + if(parameters['xRegistryAuth'] !== undefined){ + headers['X-Registry-Auth'] = parameters['xRegistryAuth']; + } + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get `stdout` and `stderr` logs from a service. See also +[`/containers/{id}/logs`](#operation/ContainerLogs). + +**Note**: This endpoint works only for services with the `local`, +`json-file` or `journald` logging drivers. + + * @method + * @name Docker#ServiceLogs + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID or name of the service + * @param {boolean} parameters.details - Show service context and extra details provided to logs. + * @param {boolean} parameters.follow - Keep connection after returning logs. + * @param {boolean} parameters.stdout - Return logs from `stdout` + * @param {boolean} parameters.stderr - Return logs from `stderr` + * @param {integer} parameters.since - Only return logs since this time, as a UNIX timestamp + * @param {boolean} parameters.timestamps - Add timestamps to every log line + * @param {string} parameters.tail - Only return this number of log lines from the end of the logs. +Specify as an integer or `all` to output all log lines. + + */ + Docker.prototype.ServiceLogs = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/services/{id}/logs'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['details'] !== undefined){ + queryParameters['details'] = parameters['details']; + } + + + + + + + + if(parameters['follow'] !== undefined){ + queryParameters['follow'] = parameters['follow']; + } + + + + + + + + if(parameters['stdout'] !== undefined){ + queryParameters['stdout'] = parameters['stdout']; + } + + + + + + + + if(parameters['stderr'] !== undefined){ + queryParameters['stderr'] = parameters['stderr']; + } + + + + + + + + if(parameters['since'] !== undefined){ + queryParameters['since'] = parameters['since']; + } + + + + + + + + if(parameters['timestamps'] !== undefined){ + queryParameters['timestamps'] = parameters['timestamps']; + } + + + + + + + /** set default value **/ + queryParameters['tail'] = all; + + if(parameters['tail'] !== undefined){ + queryParameters['tail'] = parameters['tail']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * List tasks + * @method + * @name Docker#TaskList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to +process on the tasks list. + +Available filters: + +- `desired-state=(running | shutdown | accepted)` +- `id=` +- `label=key` or `label="key=value"` +- `name=` +- `node=` +- `service=` + + */ + Docker.prototype.TaskList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/tasks'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a task + * @method + * @name Docker#TaskInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID of the task + */ + Docker.prototype.TaskInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/tasks/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Get `stdout` and `stderr` logs from a task. +See also [`/containers/{id}/logs`](#operation/ContainerLogs). + +**Note**: This endpoint works only for services with the `local`, +`json-file` or `journald` logging drivers. + + * @method + * @name Docker#TaskLogs + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID of the task + * @param {boolean} parameters.details - Show task context and extra details provided to logs. + * @param {boolean} parameters.follow - Keep connection after returning logs. + * @param {boolean} parameters.stdout - Return logs from `stdout` + * @param {boolean} parameters.stderr - Return logs from `stderr` + * @param {integer} parameters.since - Only return logs since this time, as a UNIX timestamp + * @param {boolean} parameters.timestamps - Add timestamps to every log line + * @param {string} parameters.tail - Only return this number of log lines from the end of the logs. +Specify as an integer or `all` to output all log lines. + + */ + Docker.prototype.TaskLogs = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/tasks/{id}/logs'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + if(parameters['details'] !== undefined){ + queryParameters['details'] = parameters['details']; + } + + + + + + + + if(parameters['follow'] !== undefined){ + queryParameters['follow'] = parameters['follow']; + } + + + + + + + + if(parameters['stdout'] !== undefined){ + queryParameters['stdout'] = parameters['stdout']; + } + + + + + + + + if(parameters['stderr'] !== undefined){ + queryParameters['stderr'] = parameters['stderr']; + } + + + + + + + + if(parameters['since'] !== undefined){ + queryParameters['since'] = parameters['since']; + } + + + + + + + + if(parameters['timestamps'] !== undefined){ + queryParameters['timestamps'] = parameters['timestamps']; + } + + + + + + + /** set default value **/ + queryParameters['tail'] = all; + + if(parameters['tail'] !== undefined){ + queryParameters['tail'] = parameters['tail']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * List secrets + * @method + * @name Docker#SecretList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to +process on the secrets list. + +Available filters: + +- `id=` +- `label= or label==value` +- `name=` +- `names=` + + */ + Docker.prototype.SecretList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/secrets'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a secret + * @method + * @name Docker#SecretCreate + * @param {object} parameters - method options and parameters + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.SecretCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/secrets/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a secret + * @method + * @name Docker#SecretInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID of the secret + */ + Docker.prototype.SecretInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/secrets/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete a secret + * @method + * @name Docker#SecretDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID of the secret + */ + Docker.prototype.SecretDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/secrets/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Update a Secret + * @method + * @name Docker#SecretUpdate + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - The ID or name of the secret + * @param {} parameters.body - The spec of the secret to update. Currently, only the Labels field +can be updated. All other fields must remain unchanged from the +[SecretInspect endpoint](#operation/SecretInspect) response values. + + * @param {integer} parameters.version - The version number of the secret object being updated. This is +required to avoid conflicting writes. + + */ + Docker.prototype.SecretUpdate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/secrets/{id}/update'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + + if(parameters['version'] !== undefined){ + queryParameters['version'] = parameters['version']; + } + + + + + + if(parameters['version'] === undefined) + throw new Error('Missing required parameter: version'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * List configs + * @method + * @name Docker#ConfigList + * @param {object} parameters - method options and parameters + * @param {string} parameters.filters - A JSON encoded value of the filters (a `map[string][]string`) to +process on the configs list. + +Available filters: + +- `id=` +- `label= or label==value` +- `name=` +- `names=` + + */ + Docker.prototype.ConfigList = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/configs'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + if(parameters['filters'] !== undefined){ + queryParameters['filters'] = parameters['filters']; + } + + + + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Create a config + * @method + * @name Docker#ConfigCreate + * @param {object} parameters - method options and parameters + * @param {} parameters.body - The Engine API is an HTTP API served by Docker Engine. It is the API the +Docker client uses to communicate with the Engine, so everything the Docker +client can do can be done with the API. + +Most of the client's commands map directly to API endpoints (e.g. `docker ps` +is `GET /containers/json`). The notable exception is running containers, +which consists of several API calls. + +# Errors + +The API uses standard HTTP status codes to indicate the success or failure +of the API call. The body of the response will be JSON in the following +format: + +``` +{ + "message": "page not found" +} +``` + +# Versioning + +The API is usually changed in each release, so API calls are versioned to +ensure that clients don't break. To lock to a specific version of the API, +you prefix the URL with its version, for example, call `/v1.30/info` to use +the v1.30 version of the `/info` endpoint. If the API version specified in +the URL is not supported by the daemon, a HTTP `400 Bad Request` error message +is returned. + +If you omit the version-prefix, the current version of the API (v1.41) is used. +For example, calling `/info` is the same as calling `/v1.41/info`. Using the +API without a version-prefix is deprecated and will be removed in a future release. + +Engine releases in the near future should support this version of the API, +so your client will continue to work even if it is talking to a newer Engine. + +The API uses an open schema model, which means server may add extra properties +to responses. Likewise, the server will ignore any extra query parameters and +request body properties. When you write clients, you need to ignore additional +properties in responses to ensure they do not break when talking to newer +daemons. + + +# Authentication + +Authentication for registries is handled client side. The client has to send +authentication details to various endpoints that need to communicate with +registries, such as `POST /images/(name)/push`. These are sent as +`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) +(JSON) string with the following structure: + +``` +{ + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" +} +``` + +The `serveraddress` is a domain/IP without a protocol. Throughout this +structure, double quotes are required. + +If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), +you can just pass this instead of credentials: + +``` +{ + "identitytoken": "9cbaf023786cd7..." +} +``` + + */ + Docker.prototype.ConfigCreate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/configs/create'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Inspect a config + * @method + * @name Docker#ConfigInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID of the config + */ + Docker.prototype.ConfigInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/configs/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Delete a config + * @method + * @name Docker#ConfigDelete + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - ID of the config + */ + Docker.prototype.ConfigDelete = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/configs/{id}'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('DELETE', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Update a Config + * @method + * @name Docker#ConfigUpdate + * @param {object} parameters - method options and parameters + * @param {string} parameters.id - The ID or name of the config + * @param {} parameters.body - The spec of the config to update. Currently, only the Labels field +can be updated. All other fields must remain unchanged from the +[ConfigInspect endpoint](#operation/ConfigInspect) response values. + + * @param {integer} parameters.version - The version number of the config object being updated. This is +required to avoid conflicting writes. + + */ + Docker.prototype.ConfigUpdate = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/configs/{id}/update'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json, text/plain']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{id}', parameters['id']); + + + + + if(parameters['id'] === undefined) + throw new Error('Missing required parameter: id'); + + + + + if(parameters['body'] !== undefined){ + body = parameters['body']; + } + + + + + if(parameters['version'] !== undefined){ + queryParameters['version'] = parameters['version']; + } + + + + + + if(parameters['version'] === undefined) + throw new Error('Missing required parameter: version'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Return image digest and platform information by contacting the registry. + + * @method + * @name Docker#DistributionInspect + * @param {object} parameters - method options and parameters + * @param {string} parameters.name - Image name or id + */ + Docker.prototype.DistributionInspect = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/distribution/{name}/json'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/json']; + headers['content-type'] = ['application/json']; + + + path = path.replace('{name}', parameters['name']); + + + + + if(parameters['name'] === undefined) + throw new Error('Missing required parameter: name'); + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('GET', domain + path, parameters, body, headers, queryParameters, form); + }; + /** + * Start a new interactive session with a server. Session allows server to +call back to the client for advanced capabilities. + +### Hijacking + +This endpoint hijacks the HTTP connection to HTTP2 transport that allows +the client to expose gPRC services on that connection. + +For example, the client sends this request to upgrade the connection: + +``` +POST /session HTTP/1.1 +Upgrade: h2c +Connection: Upgrade +``` + +The Docker daemon responds with a `101 UPGRADED` response follow with +the raw stream: + +``` +HTTP/1.1 101 UPGRADED +Connection: Upgrade +Upgrade: h2c +``` + + * @method + * @name Docker#Session + * @param {object} parameters - method options and parameters + */ + Docker.prototype.Session = function(parameters){ + if(parameters === undefined) { + parameters = {}; + } + var domain = this.domain, path = '/session'; + var body = {}, queryParameters = {}, form = {}; + var headers = util.clone(this.headers); + + headers['accept'] = ['application/vnd.docker.raw-stream']; + headers['content-type'] = ['application/json']; + + queryParameters = mergeQueryParams(parameters, queryParameters); + + return request('POST', domain + path, parameters, body, headers, queryParameters, form); + }; + + return Docker; +})(); + +exports.Docker = Docker; diff --git a/package.json b/package.json new file mode 100644 index 0000000..c93685e --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "devDependencies": { + "docdash": "^1.2.0", + "fib-swagger": "^1.0.0", + "jsdoc": "^3.6.6" + }, + "name": "fib-docker", + "version": "1.0.0", + "main": "lib/index.js", + "scripts": { + "gen-docs": "jsdoc --configure .jsdoc.json" + }, + "author": "", + "license": "ISC", + "description": "" +} diff --git a/samples/test.js b/samples/test.js new file mode 100644 index 0000000..7ab1a1f --- /dev/null +++ b/samples/test.js @@ -0,0 +1,10 @@ +var Docker = require('..').Docker; + +var docker = new Docker({ + domain: "http://%2Fvar%2Frun%2Fdocker.sock/v1.39", + headers: { + host: "localhost" + } +}); + +console.log(docker.SystemInfo()); diff --git a/yaml/v1.41.yaml b/yaml/v1.41.yaml new file mode 100644 index 0000000..1294e5a --- /dev/null +++ b/yaml/v1.41.yaml @@ -0,0 +1,11425 @@ +# A Swagger 2.0 (a.k.a. OpenAPI) definition of the Engine API. +# +# This is used for generating API documentation and the types used by the +# client/server. See api/README.md for more information. +# +# Some style notes: +# - This file is used by ReDoc, which allows GitHub Flavored Markdown in +# descriptions. +# - There is no maximum line length, for ease of editing and pretty diffs. +# - operationIds are in the format "NounVerb", with a singular noun. + +swagger: "2.0" +schemes: + - "http" + - "https" +produces: + - "application/json" + - "text/plain" +consumes: + - "application/json" + - "text/plain" +basePath: "/v1.41" +info: + title: "Docker Engine API" + version: "1.41" + x-logo: + url: "https://docs.docker.com/images/logo-docker-main.png" + description: | + The Engine API is an HTTP API served by Docker Engine. It is the API the + Docker client uses to communicate with the Engine, so everything the Docker + client can do can be done with the API. + + Most of the client's commands map directly to API endpoints (e.g. `docker ps` + is `GET /containers/json`). The notable exception is running containers, + which consists of several API calls. + + # Errors + + The API uses standard HTTP status codes to indicate the success or failure + of the API call. The body of the response will be JSON in the following + format: + + ``` + { + "message": "page not found" + } + ``` + + # Versioning + + The API is usually changed in each release, so API calls are versioned to + ensure that clients don't break. To lock to a specific version of the API, + you prefix the URL with its version, for example, call `/v1.30/info` to use + the v1.30 version of the `/info` endpoint. If the API version specified in + the URL is not supported by the daemon, a HTTP `400 Bad Request` error message + is returned. + + If you omit the version-prefix, the current version of the API (v1.41) is used. + For example, calling `/info` is the same as calling `/v1.41/info`. Using the + API without a version-prefix is deprecated and will be removed in a future release. + + Engine releases in the near future should support this version of the API, + so your client will continue to work even if it is talking to a newer Engine. + + The API uses an open schema model, which means server may add extra properties + to responses. Likewise, the server will ignore any extra query parameters and + request body properties. When you write clients, you need to ignore additional + properties in responses to ensure they do not break when talking to newer + daemons. + + + # Authentication + + Authentication for registries is handled client side. The client has to send + authentication details to various endpoints that need to communicate with + registries, such as `POST /images/(name)/push`. These are sent as + `X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5) + (JSON) string with the following structure: + + ``` + { + "username": "string", + "password": "string", + "email": "string", + "serveraddress": "string" + } + ``` + + The `serveraddress` is a domain/IP without a protocol. Throughout this + structure, double quotes are required. + + If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), + you can just pass this instead of credentials: + + ``` + { + "identitytoken": "9cbaf023786cd7..." + } + ``` + +# The tags on paths define the menu sections in the ReDoc documentation, so +# the usage of tags must make sense for that: +# - They should be singular, not plural. +# - There should not be too many tags, or the menu becomes unwieldy. For +# example, it is preferable to add a path to the "System" tag instead of +# creating a tag with a single path in it. +# - The order of tags in this list defines the order in the menu. +tags: + # Primary objects + - name: "Container" + x-displayName: "Containers" + description: | + Create and manage containers. + - name: "Image" + x-displayName: "Images" + - name: "Network" + x-displayName: "Networks" + description: | + Networks are user-defined networks that containers can be attached to. + See the [networking documentation](https://docs.docker.com/network/) + for more information. + - name: "Volume" + x-displayName: "Volumes" + description: | + Create and manage persistent storage that can be attached to containers. + - name: "Exec" + x-displayName: "Exec" + description: | + Run new commands inside running containers. Refer to the + [command-line reference](https://docs.docker.com/engine/reference/commandline/exec/) + for more information. + + To exec a command in a container, you first need to create an exec instance, + then start it. These two API endpoints are wrapped up in a single command-line + command, `docker exec`. + + # Swarm things + - name: "Swarm" + x-displayName: "Swarm" + description: | + Engines can be clustered together in a swarm. Refer to the + [swarm mode documentation](https://docs.docker.com/engine/swarm/) + for more information. + - name: "Node" + x-displayName: "Nodes" + description: | + Nodes are instances of the Engine participating in a swarm. Swarm mode + must be enabled for these endpoints to work. + - name: "Service" + x-displayName: "Services" + description: | + Services are the definitions of tasks to run on a swarm. Swarm mode must + be enabled for these endpoints to work. + - name: "Task" + x-displayName: "Tasks" + description: | + A task is a container running on a swarm. It is the atomic scheduling unit + of swarm. Swarm mode must be enabled for these endpoints to work. + - name: "Secret" + x-displayName: "Secrets" + description: | + Secrets are sensitive data that can be used by services. Swarm mode must + be enabled for these endpoints to work. + - name: "Config" + x-displayName: "Configs" + description: | + Configs are application configurations that can be used by services. Swarm + mode must be enabled for these endpoints to work. + # System things + - name: "Plugin" + x-displayName: "Plugins" + - name: "System" + x-displayName: "System" + +definitions: + Port: + type: "object" + description: "An open port on a container" + required: [PrivatePort, Type] + properties: + IP: + type: "string" + format: "ip-address" + description: "Host IP address that the container's port is mapped to" + PrivatePort: + type: "integer" + format: "uint16" + x-nullable: false + description: "Port on the container" + PublicPort: + type: "integer" + format: "uint16" + description: "Port exposed on the host" + Type: + type: "string" + x-nullable: false + enum: ["tcp", "udp", "sctp"] + example: + PrivatePort: 8080 + PublicPort: 80 + Type: "tcp" + + MountPoint: + type: "object" + description: "A mount point inside a container" + properties: + Type: + type: "string" + Name: + type: "string" + Source: + type: "string" + Destination: + type: "string" + Driver: + type: "string" + Mode: + type: "string" + RW: + type: "boolean" + Propagation: + type: "string" + + DeviceMapping: + type: "object" + description: "A device mapping between the host and container" + properties: + PathOnHost: + type: "string" + PathInContainer: + type: "string" + CgroupPermissions: + type: "string" + example: + PathOnHost: "/dev/deviceName" + PathInContainer: "/dev/deviceName" + CgroupPermissions: "mrw" + + DeviceRequest: + type: "object" + description: "A request for devices to be sent to device drivers" + properties: + Driver: + type: "string" + example: "nvidia" + Count: + type: "integer" + example: -1 + DeviceIDs: + type: "array" + items: + type: "string" + example: + - "0" + - "1" + - "GPU-fef8089b-4820-abfc-e83e-94318197576e" + Capabilities: + description: | + A list of capabilities; an OR list of AND lists of capabilities. + type: "array" + items: + type: "array" + items: + type: "string" + example: + # gpu AND nvidia AND compute + - ["gpu", "nvidia", "compute"] + Options: + description: | + Driver-specific options, specified as a key/value pairs. These options + are passed directly to the driver. + type: "object" + additionalProperties: + type: "string" + + ThrottleDevice: + type: "object" + properties: + Path: + description: "Device path" + type: "string" + Rate: + description: "Rate" + type: "integer" + format: "int64" + minimum: 0 + + Mount: + type: "object" + properties: + Target: + description: "Container path." + type: "string" + Source: + description: "Mount source (e.g. a volume name, a host path)." + type: "string" + Type: + description: | + The mount type. Available types: + + - `bind` Mounts a file or directory from the host into the container. Must exist prior to creating the container. + - `volume` Creates a volume with the given name and options (or uses a pre-existing volume with the same name and options). These are **not** removed when the container is removed. + - `tmpfs` Create a tmpfs with the given options. The mount source cannot be specified for tmpfs. + - `npipe` Mounts a named pipe from the host into the container. Must exist prior to creating the container. + type: "string" + enum: + - "bind" + - "volume" + - "tmpfs" + - "npipe" + ReadOnly: + description: "Whether the mount should be read-only." + type: "boolean" + Consistency: + description: "The consistency requirement for the mount: `default`, `consistent`, `cached`, or `delegated`." + type: "string" + BindOptions: + description: "Optional configuration for the `bind` type." + type: "object" + properties: + Propagation: + description: "A propagation mode with the value `[r]private`, `[r]shared`, or `[r]slave`." + type: "string" + enum: + - "private" + - "rprivate" + - "shared" + - "rshared" + - "slave" + - "rslave" + NonRecursive: + description: "Disable recursive bind mount." + type: "boolean" + default: false + VolumeOptions: + description: "Optional configuration for the `volume` type." + type: "object" + properties: + NoCopy: + description: "Populate volume with data from the target." + type: "boolean" + default: false + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + DriverConfig: + description: "Map of driver specific options" + type: "object" + properties: + Name: + description: "Name of the driver to use to create the volume." + type: "string" + Options: + description: "key/value map of driver specific options." + type: "object" + additionalProperties: + type: "string" + TmpfsOptions: + description: "Optional configuration for the `tmpfs` type." + type: "object" + properties: + SizeBytes: + description: "The size for the tmpfs mount in bytes." + type: "integer" + format: "int64" + Mode: + description: "The permission mode for the tmpfs mount in an integer." + type: "integer" + + RestartPolicy: + description: | + The behavior to apply when the container exits. The default is not to + restart. + + An ever increasing delay (double the previous delay, starting at 100ms) is + added before each restart to prevent flooding the server. + type: "object" + properties: + Name: + type: "string" + description: | + - Empty string means not to restart + - `always` Always restart + - `unless-stopped` Restart always except when the user has manually stopped the container + - `on-failure` Restart only when the container exit code is non-zero + enum: + - "" + - "always" + - "unless-stopped" + - "on-failure" + MaximumRetryCount: + type: "integer" + description: | + If `on-failure` is used, the number of times to retry before giving up. + + Resources: + description: "A container's resources (cgroups config, ulimits, etc)" + type: "object" + properties: + # Applicable to all platforms + CpuShares: + description: | + An integer value representing this container's relative CPU weight + versus other containers. + type: "integer" + Memory: + description: "Memory limit in bytes." + type: "integer" + format: "int64" + default: 0 + # Applicable to UNIX platforms + CgroupParent: + description: | + Path to `cgroups` under which the container's `cgroup` is created. If + the path is not absolute, the path is considered to be relative to the + `cgroups` path of the init process. Cgroups are created if they do not + already exist. + type: "string" + BlkioWeight: + description: "Block IO weight (relative weight)." + type: "integer" + minimum: 0 + maximum: 1000 + BlkioWeightDevice: + description: | + Block IO weight (relative device weight) in the form: + + ``` + [{"Path": "device_path", "Weight": weight}] + ``` + type: "array" + items: + type: "object" + properties: + Path: + type: "string" + Weight: + type: "integer" + minimum: 0 + BlkioDeviceReadBps: + description: | + Limit read rate (bytes per second) from a device, in the form: + + ``` + [{"Path": "device_path", "Rate": rate}] + ``` + type: "array" + items: + $ref: "#/definitions/ThrottleDevice" + BlkioDeviceWriteBps: + description: | + Limit write rate (bytes per second) to a device, in the form: + + ``` + [{"Path": "device_path", "Rate": rate}] + ``` + type: "array" + items: + $ref: "#/definitions/ThrottleDevice" + BlkioDeviceReadIOps: + description: | + Limit read rate (IO per second) from a device, in the form: + + ``` + [{"Path": "device_path", "Rate": rate}] + ``` + type: "array" + items: + $ref: "#/definitions/ThrottleDevice" + BlkioDeviceWriteIOps: + description: | + Limit write rate (IO per second) to a device, in the form: + + ``` + [{"Path": "device_path", "Rate": rate}] + ``` + type: "array" + items: + $ref: "#/definitions/ThrottleDevice" + CpuPeriod: + description: "The length of a CPU period in microseconds." + type: "integer" + format: "int64" + CpuQuota: + description: | + Microseconds of CPU time that the container can get in a CPU period. + type: "integer" + format: "int64" + CpuRealtimePeriod: + description: | + The length of a CPU real-time period in microseconds. Set to 0 to + allocate no time allocated to real-time tasks. + type: "integer" + format: "int64" + CpuRealtimeRuntime: + description: | + The length of a CPU real-time runtime in microseconds. Set to 0 to + allocate no time allocated to real-time tasks. + type: "integer" + format: "int64" + CpusetCpus: + description: | + CPUs in which to allow execution (e.g., `0-3`, `0,1`). + type: "string" + example: "0-3" + CpusetMems: + description: | + Memory nodes (MEMs) in which to allow execution (0-3, 0,1). Only + effective on NUMA systems. + type: "string" + Devices: + description: "A list of devices to add to the container." + type: "array" + items: + $ref: "#/definitions/DeviceMapping" + DeviceCgroupRules: + description: "a list of cgroup rules to apply to the container" + type: "array" + items: + type: "string" + example: "c 13:* rwm" + DeviceRequests: + description: | + A list of requests for devices to be sent to device drivers. + type: "array" + items: + $ref: "#/definitions/DeviceRequest" + KernelMemory: + description: | + Kernel memory limit in bytes. + +


+ + > **Deprecated**: This field is deprecated as the kernel 5.4 deprecated + > `kmem.limit_in_bytes`. + type: "integer" + format: "int64" + example: 209715200 + KernelMemoryTCP: + description: "Hard limit for kernel TCP buffer memory (in bytes)." + type: "integer" + format: "int64" + MemoryReservation: + description: "Memory soft limit in bytes." + type: "integer" + format: "int64" + MemorySwap: + description: | + Total memory limit (memory + swap). Set as `-1` to enable unlimited + swap. + type: "integer" + format: "int64" + MemorySwappiness: + description: | + Tune a container's memory swappiness behavior. Accepts an integer + between 0 and 100. + type: "integer" + format: "int64" + minimum: 0 + maximum: 100 + NanoCpus: + description: "CPU quota in units of 10-9 CPUs." + type: "integer" + format: "int64" + OomKillDisable: + description: "Disable OOM Killer for the container." + type: "boolean" + Init: + description: | + Run an init inside the container that forwards signals and reaps + processes. This field is omitted if empty, and the default (as + configured on the daemon) is used. + type: "boolean" + x-nullable: true + PidsLimit: + description: | + Tune a container's PIDs limit. Set `0` or `-1` for unlimited, or `null` + to not change. + type: "integer" + format: "int64" + x-nullable: true + Ulimits: + description: | + A list of resource limits to set in the container. For example: + + ``` + {"Name": "nofile", "Soft": 1024, "Hard": 2048} + ``` + type: "array" + items: + type: "object" + properties: + Name: + description: "Name of ulimit" + type: "string" + Soft: + description: "Soft limit" + type: "integer" + Hard: + description: "Hard limit" + type: "integer" + # Applicable to Windows + CpuCount: + description: | + The number of usable CPUs (Windows only). + + On Windows Server containers, the processor resource controls are + mutually exclusive. The order of precedence is `CPUCount` first, then + `CPUShares`, and `CPUPercent` last. + type: "integer" + format: "int64" + CpuPercent: + description: | + The usable percentage of the available CPUs (Windows only). + + On Windows Server containers, the processor resource controls are + mutually exclusive. The order of precedence is `CPUCount` first, then + `CPUShares`, and `CPUPercent` last. + type: "integer" + format: "int64" + IOMaximumIOps: + description: "Maximum IOps for the container system drive (Windows only)" + type: "integer" + format: "int64" + IOMaximumBandwidth: + description: | + Maximum IO in bytes per second for the container system drive + (Windows only). + type: "integer" + format: "int64" + + Limit: + description: | + An object describing a limit on resources which can be requested by a task. + type: "object" + properties: + NanoCPUs: + type: "integer" + format: "int64" + example: 4000000000 + MemoryBytes: + type: "integer" + format: "int64" + example: 8272408576 + Pids: + description: | + Limits the maximum number of PIDs in the container. Set `0` for unlimited. + type: "integer" + format: "int64" + default: 0 + example: 100 + + ResourceObject: + description: | + An object describing the resources which can be advertised by a node and + requested by a task. + type: "object" + properties: + NanoCPUs: + type: "integer" + format: "int64" + example: 4000000000 + MemoryBytes: + type: "integer" + format: "int64" + example: 8272408576 + GenericResources: + $ref: "#/definitions/GenericResources" + + GenericResources: + description: | + User-defined resources can be either Integer resources (e.g, `SSD=3`) or + String resources (e.g, `GPU=UUID1`). + type: "array" + items: + type: "object" + properties: + NamedResourceSpec: + type: "object" + properties: + Kind: + type: "string" + Value: + type: "string" + DiscreteResourceSpec: + type: "object" + properties: + Kind: + type: "string" + Value: + type: "integer" + format: "int64" + example: + - DiscreteResourceSpec: + Kind: "SSD" + Value: 3 + - NamedResourceSpec: + Kind: "GPU" + Value: "UUID1" + - NamedResourceSpec: + Kind: "GPU" + Value: "UUID2" + + HealthConfig: + description: "A test to perform to check that the container is healthy." + type: "object" + properties: + Test: + description: | + 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 + type: "array" + items: + type: "string" + Interval: + description: | + The time to wait between checks in nanoseconds. It should be 0 or at + least 1000000 (1 ms). 0 means inherit. + type: "integer" + Timeout: + description: | + The time to wait before considering the check to have hung. It should + be 0 or at least 1000000 (1 ms). 0 means inherit. + type: "integer" + Retries: + description: | + The number of consecutive failures needed to consider a container as + unhealthy. 0 means inherit. + type: "integer" + StartPeriod: + description: | + Start period for the container to initialize before starting + health-retries countdown in nanoseconds. It should be 0 or at least + 1000000 (1 ms). 0 means inherit. + type: "integer" + + Health: + description: | + Health stores information about the container's healthcheck results. + type: "object" + properties: + Status: + description: | + Status is one of `none`, `starting`, `healthy` or `unhealthy` + + - "none" Indicates there is no healthcheck + - "starting" Starting indicates that the container is not yet ready + - "healthy" Healthy indicates that the container is running correctly + - "unhealthy" Unhealthy indicates that the container has a problem + type: "string" + enum: + - "none" + - "starting" + - "healthy" + - "unhealthy" + example: "healthy" + FailingStreak: + description: "FailingStreak is the number of consecutive failures" + type: "integer" + example: 0 + Log: + type: "array" + description: | + Log contains the last few results (oldest first) + items: + x-nullable: true + $ref: "#/definitions/HealthcheckResult" + + HealthcheckResult: + description: | + HealthcheckResult stores information about a single run of a healthcheck probe + type: "object" + properties: + Start: + description: | + Date and time at which this check started in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "date-time" + example: "2020-01-04T10:44:24.496525531Z" + End: + description: | + Date and time at which this check ended in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "dateTime" + example: "2020-01-04T10:45:21.364524523Z" + ExitCode: + description: | + ExitCode meanings: + + - `0` healthy + - `1` unhealthy + - `2` reserved (considered unhealthy) + - other values: error running probe + type: "integer" + example: 0 + Output: + description: "Output from last check" + type: "string" + + HostConfig: + description: "Container configuration that depends on the host we are running on" + allOf: + - $ref: "#/definitions/Resources" + - type: "object" + properties: + # Applicable to all platforms + Binds: + type: "array" + description: | + A list of volume bindings for this container. Each volume binding + is a string in one of these forms: + + - `host-src:container-dest[:options]` to bind-mount a host path + into the container. Both `host-src`, and `container-dest` must + be an _absolute_ path. + - `volume-name:container-dest[:options]` to bind-mount a volume + managed by a volume driver into the container. `container-dest` + must be an _absolute_ path. + + `options` is an optional, comma-delimited list of: + + - `nocopy` disables automatic copying of data from the container + path to the volume. The `nocopy` flag only applies to named volumes. + - `[ro|rw]` mounts a volume read-only or read-write, respectively. + If omitted or set to `rw`, volumes are mounted read-write. + - `[z|Z]` applies SELinux labels to allow or deny multiple containers + to read and write to the same volume. + - `z`: a _shared_ content label is applied to the content. This + label indicates that multiple containers can share the volume + content, for both reading and writing. + - `Z`: a _private unshared_ label is applied to the content. + This label indicates that only the current container can use + a private volume. Labeling systems such as SELinux require + proper labels to be placed on volume content that is mounted + into a container. Without a label, the security system can + prevent a container's processes from using the content. By + default, the labels set by the host operating system are not + modified. + - `[[r]shared|[r]slave|[r]private]` specifies mount + [propagation behavior](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt). + This only applies to bind-mounted volumes, not internal volumes + or named volumes. Mount propagation requires the source mount + point (the location where the source directory is mounted in the + host operating system) to have the correct propagation properties. + For shared volumes, the source mount point must be set to `shared`. + For slave volumes, the mount must be set to either `shared` or + `slave`. + items: + type: "string" + ContainerIDFile: + type: "string" + description: "Path to a file where the container ID is written" + LogConfig: + type: "object" + description: "The logging configuration for this container" + properties: + Type: + type: "string" + enum: + - "json-file" + - "syslog" + - "journald" + - "gelf" + - "fluentd" + - "awslogs" + - "splunk" + - "etwlogs" + - "none" + Config: + type: "object" + additionalProperties: + type: "string" + NetworkMode: + type: "string" + description: | + Network mode to use for this container. Supported standard values + are: `bridge`, `host`, `none`, and `container:`. Any + other value is taken as a custom network's name to which this + container should connect to. + PortBindings: + $ref: "#/definitions/PortMap" + RestartPolicy: + $ref: "#/definitions/RestartPolicy" + AutoRemove: + type: "boolean" + description: | + Automatically remove the container when the container's process + exits. This has no effect if `RestartPolicy` is set. + VolumeDriver: + type: "string" + description: "Driver that this container uses to mount volumes." + VolumesFrom: + type: "array" + description: | + A list of volumes to inherit from another container, specified in + the form `[:]`. + items: + type: "string" + Mounts: + description: | + Specification for mounts to be added to the container. + type: "array" + items: + $ref: "#/definitions/Mount" + + # Applicable to UNIX platforms + CapAdd: + type: "array" + description: | + A list of kernel capabilities to add to the container. Conflicts + with option 'Capabilities'. + items: + type: "string" + CapDrop: + type: "array" + description: | + A list of kernel capabilities to drop from the container. Conflicts + with option 'Capabilities'. + items: + type: "string" + CgroupnsMode: + type: "string" + enum: + - "private" + - "host" + description: | + cgroup namespace mode for the container. Possible values are: + + - `"private"`: the container runs in its own private cgroup namespace + - `"host"`: use the host system's cgroup namespace + + If not specified, the daemon default is used, which can either be `"private"` + or `"host"`, depending on daemon version, kernel support and configuration. + Dns: + type: "array" + description: "A list of DNS servers for the container to use." + items: + type: "string" + DnsOptions: + type: "array" + description: "A list of DNS options." + items: + type: "string" + DnsSearch: + type: "array" + description: "A list of DNS search domains." + items: + type: "string" + ExtraHosts: + type: "array" + description: | + A list of hostnames/IP mappings to add to the container's `/etc/hosts` + file. Specified in the form `["hostname:IP"]`. + items: + type: "string" + GroupAdd: + type: "array" + description: | + A list of additional groups that the container process will run as. + items: + type: "string" + IpcMode: + type: "string" + description: | + IPC sharing mode for the container. Possible values are: + + - `"none"`: own private IPC namespace, with /dev/shm not mounted + - `"private"`: own private IPC namespace + - `"shareable"`: own private IPC namespace, with a possibility to share it with other containers + - `"container:"`: join another (shareable) container's IPC namespace + - `"host"`: use the host system's IPC namespace + + If not specified, daemon default is used, which can either be `"private"` + or `"shareable"`, depending on daemon version and configuration. + Cgroup: + type: "string" + description: "Cgroup to use for the container." + Links: + type: "array" + description: | + A list of links for the container in the form `container_name:alias`. + items: + type: "string" + OomScoreAdj: + type: "integer" + description: | + An integer value containing the score given to the container in + order to tune OOM killer preferences. + example: 500 + PidMode: + type: "string" + description: | + Set the PID (Process) Namespace mode for the container. It can be + either: + + - `"container:"`: joins another container's PID namespace + - `"host"`: use the host's PID namespace inside the container + Privileged: + type: "boolean" + description: "Gives the container full access to the host." + PublishAllPorts: + type: "boolean" + description: | + Allocates an ephemeral host port for all of a container's + exposed ports. + + Ports are de-allocated when the container stops and allocated when + the container starts. The allocated port might be changed when + restarting the container. + + The port is selected from the ephemeral port range that depends on + the kernel. For example, on Linux the range is defined by + `/proc/sys/net/ipv4/ip_local_port_range`. + ReadonlyRootfs: + type: "boolean" + description: "Mount the container's root filesystem as read only." + SecurityOpt: + type: "array" + description: "A list of string values to customize labels for MLS + systems, such as SELinux." + items: + type: "string" + StorageOpt: + type: "object" + description: | + Storage driver options for this container, in the form `{"size": "120G"}`. + additionalProperties: + type: "string" + Tmpfs: + type: "object" + description: | + A map of container directories which should be replaced by tmpfs + mounts, and their corresponding mount options. For example: + + ``` + { "/run": "rw,noexec,nosuid,size=65536k" } + ``` + additionalProperties: + type: "string" + UTSMode: + type: "string" + description: "UTS namespace to use for the container." + UsernsMode: + type: "string" + description: | + Sets the usernamespace mode for the container when usernamespace + remapping option is enabled. + ShmSize: + type: "integer" + description: | + Size of `/dev/shm` in bytes. If omitted, the system uses 64MB. + minimum: 0 + Sysctls: + type: "object" + description: | + A list of kernel parameters (sysctls) to set in the container. + For example: + + ``` + {"net.ipv4.ip_forward": "1"} + ``` + additionalProperties: + type: "string" + Runtime: + type: "string" + description: "Runtime to use with this container." + # Applicable to Windows + ConsoleSize: + type: "array" + description: | + Initial console size, as an `[height, width]` array. (Windows only) + minItems: 2 + maxItems: 2 + items: + type: "integer" + minimum: 0 + Isolation: + type: "string" + description: | + Isolation technology of the container. (Windows only) + enum: + - "default" + - "process" + - "hyperv" + MaskedPaths: + type: "array" + description: | + The list of paths to be masked inside the container (this overrides + the default set of paths). + items: + type: "string" + ReadonlyPaths: + type: "array" + description: | + The list of paths to be set as read-only inside the container + (this overrides the default set of paths). + items: + type: "string" + + ContainerConfig: + description: "Configuration for a container that is portable between hosts" + type: "object" + properties: + Hostname: + description: "The hostname to use for the container, as a valid RFC 1123 hostname." + type: "string" + Domainname: + description: "The domain name to use for the container." + type: "string" + User: + description: "The user that commands are run as inside the container." + type: "string" + AttachStdin: + description: "Whether to attach to `stdin`." + type: "boolean" + default: false + AttachStdout: + description: "Whether to attach to `stdout`." + type: "boolean" + default: true + AttachStderr: + description: "Whether to attach to `stderr`." + type: "boolean" + default: true + ExposedPorts: + description: | + An object mapping ports to an empty object in the form: + + `{"/": {}}` + type: "object" + additionalProperties: + type: "object" + enum: + - {} + default: {} + Tty: + description: | + Attach standard streams to a TTY, including `stdin` if it is not closed. + type: "boolean" + default: false + OpenStdin: + description: "Open `stdin`" + type: "boolean" + default: false + StdinOnce: + description: "Close `stdin` after one attached client disconnects" + type: "boolean" + default: false + Env: + description: | + 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. + type: "array" + items: + type: "string" + Cmd: + description: | + Command to run specified as a string or an array of strings. + type: "array" + items: + type: "string" + Healthcheck: + $ref: "#/definitions/HealthConfig" + ArgsEscaped: + description: "Command is already escaped (Windows only)" + type: "boolean" + Image: + description: | + The name of the image to use when creating the container/ + type: "string" + Volumes: + description: | + An object mapping mount point paths inside the container to empty + objects. + type: "object" + additionalProperties: + type: "object" + enum: + - {} + default: {} + WorkingDir: + description: "The working directory for commands to run in." + type: "string" + Entrypoint: + description: | + 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`). + type: "array" + items: + type: "string" + NetworkDisabled: + description: "Disable networking for the container." + type: "boolean" + MacAddress: + description: "MAC address of the container." + type: "string" + OnBuild: + description: | + `ONBUILD` metadata that were defined in the image's `Dockerfile`. + type: "array" + items: + type: "string" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + StopSignal: + description: | + Signal to stop a container as a string or unsigned integer. + type: "string" + default: "SIGTERM" + StopTimeout: + description: "Timeout to stop a container in seconds." + type: "integer" + default: 10 + Shell: + description: | + Shell for when `RUN`, `CMD`, and `ENTRYPOINT` uses a shell. + type: "array" + items: + type: "string" + + NetworkingConfig: + description: | + 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. + type: "object" + properties: + EndpointsConfig: + description: | + A mapping of network name to endpoint configuration for that network. + type: "object" + additionalProperties: + $ref: "#/definitions/EndpointSettings" + example: + # putting an example here, instead of using the example values from + # /definitions/EndpointSettings, because containers/create currently + # does not support attaching to multiple networks, so the example request + # would be confusing if it showed that multiple networks can be contained + # in the EndpointsConfig. + # TODO remove once we support multiple networks on container create (see https://github.com/moby/moby/blob/07e6b843594e061f82baa5fa23c2ff7d536c2a05/daemon/create.go#L323) + EndpointsConfig: + isolated_nw: + IPAMConfig: + IPv4Address: "172.20.30.33" + IPv6Address: "2001:db8:abcd::3033" + LinkLocalIPs: + - "169.254.34.68" + - "fe80::3468" + Links: + - "container_1" + - "container_2" + Aliases: + - "server_x" + - "server_y" + + NetworkSettings: + description: "NetworkSettings exposes the network settings in the API" + type: "object" + properties: + Bridge: + description: Name of the network'a bridge (for example, `docker0`). + type: "string" + example: "docker0" + SandboxID: + description: SandboxID uniquely represents a container's network stack. + type: "string" + example: "9d12daf2c33f5959c8bf90aa513e4f65b561738661003029ec84830cd503a0c3" + HairpinMode: + description: | + Indicates if hairpin NAT should be enabled on the virtual interface. + type: "boolean" + example: false + LinkLocalIPv6Address: + description: IPv6 unicast address using the link-local prefix. + type: "string" + example: "fe80::42:acff:fe11:1" + LinkLocalIPv6PrefixLen: + description: Prefix length of the IPv6 unicast address. + type: "integer" + example: "64" + Ports: + $ref: "#/definitions/PortMap" + SandboxKey: + description: SandboxKey identifies the sandbox + type: "string" + example: "/var/run/docker/netns/8ab54b426c38" + + # TODO is SecondaryIPAddresses actually used? + SecondaryIPAddresses: + description: "" + type: "array" + items: + $ref: "#/definitions/Address" + x-nullable: true + + # TODO is SecondaryIPv6Addresses actually used? + SecondaryIPv6Addresses: + description: "" + type: "array" + items: + $ref: "#/definitions/Address" + x-nullable: true + + # TODO properties below are part of DefaultNetworkSettings, which is + # marked as deprecated since Docker 1.9 and to be removed in Docker v17.12 + EndpointID: + description: | + EndpointID uniquely represents a service endpoint in a Sandbox. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "string" + example: "b88f5b905aabf2893f3cbc4ee42d1ea7980bbc0a92e2c8922b1e1795298afb0b" + Gateway: + description: | + Gateway address for the default "bridge" network. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "string" + example: "172.17.0.1" + GlobalIPv6Address: + description: | + Global IPv6 address for the default "bridge" network. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "string" + example: "2001:db8::5689" + GlobalIPv6PrefixLen: + description: | + Mask length of the global IPv6 address. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "integer" + example: 64 + IPAddress: + description: | + IPv4 address for the default "bridge" network. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "string" + example: "172.17.0.4" + IPPrefixLen: + description: | + Mask length of the IPv4 address. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "integer" + example: 16 + IPv6Gateway: + description: | + IPv6 gateway address for this network. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "string" + example: "2001:db8:2::100" + MacAddress: + description: | + MAC address for the container on the default "bridge" network. + +


+ + > **Deprecated**: This field is only propagated when attached to the + > default "bridge" network. Use the information from the "bridge" + > network inside the `Networks` map instead, which contains the same + > information. This field was deprecated in Docker 1.9 and is scheduled + > to be removed in Docker 17.12.0 + type: "string" + example: "02:42:ac:11:00:04" + Networks: + description: | + Information about all networks that the container is connected to. + type: "object" + additionalProperties: + $ref: "#/definitions/EndpointSettings" + + Address: + description: Address represents an IPv4 or IPv6 IP address. + type: "object" + properties: + Addr: + description: IP address. + type: "string" + PrefixLen: + description: Mask length of the IP address. + type: "integer" + + PortMap: + description: | + PortMap describes the mapping of container ports to host ports, using the + container's port-number and protocol as key in the format `/`, + for example, `80/udp`. + + If a container's port is mapped for multiple protocols, separate entries + are added to the mapping table. + type: "object" + additionalProperties: + type: "array" + x-nullable: true + items: + $ref: "#/definitions/PortBinding" + example: + "443/tcp": + - HostIp: "127.0.0.1" + HostPort: "4443" + "80/tcp": + - HostIp: "0.0.0.0" + HostPort: "80" + - HostIp: "0.0.0.0" + HostPort: "8080" + "80/udp": + - HostIp: "0.0.0.0" + HostPort: "80" + "53/udp": + - HostIp: "0.0.0.0" + HostPort: "53" + "2377/tcp": null + + PortBinding: + description: | + PortBinding represents a binding between a host IP address and a host + port. + type: "object" + properties: + HostIp: + description: "Host IP address that the container's port is mapped to." + type: "string" + example: "127.0.0.1" + HostPort: + description: "Host port number that the container's port is mapped to." + type: "string" + example: "4443" + + GraphDriverData: + description: "Information about a container's graph driver." + type: "object" + required: [Name, Data] + properties: + Name: + type: "string" + x-nullable: false + Data: + type: "object" + x-nullable: false + additionalProperties: + type: "string" + + Image: + type: "object" + required: + - Id + - Parent + - Comment + - Created + - Container + - DockerVersion + - Author + - Architecture + - Os + - Size + - VirtualSize + - GraphDriver + - RootFS + properties: + Id: + type: "string" + x-nullable: false + RepoTags: + type: "array" + items: + type: "string" + RepoDigests: + type: "array" + items: + type: "string" + Parent: + type: "string" + x-nullable: false + Comment: + type: "string" + x-nullable: false + Created: + type: "string" + x-nullable: false + Container: + type: "string" + x-nullable: false + ContainerConfig: + $ref: "#/definitions/ContainerConfig" + DockerVersion: + type: "string" + x-nullable: false + Author: + type: "string" + x-nullable: false + Config: + $ref: "#/definitions/ContainerConfig" + Architecture: + type: "string" + x-nullable: false + Os: + type: "string" + x-nullable: false + OsVersion: + type: "string" + Size: + type: "integer" + format: "int64" + x-nullable: false + VirtualSize: + type: "integer" + format: "int64" + x-nullable: false + GraphDriver: + $ref: "#/definitions/GraphDriverData" + RootFS: + type: "object" + required: [Type] + properties: + Type: + type: "string" + x-nullable: false + Layers: + type: "array" + items: + type: "string" + BaseLayer: + type: "string" + Metadata: + type: "object" + properties: + LastTagTime: + type: "string" + format: "dateTime" + + ImageSummary: + type: "object" + required: + - Id + - ParentId + - RepoTags + - RepoDigests + - Created + - Size + - SharedSize + - VirtualSize + - Labels + - Containers + properties: + Id: + type: "string" + x-nullable: false + ParentId: + type: "string" + x-nullable: false + RepoTags: + type: "array" + x-nullable: false + items: + type: "string" + RepoDigests: + type: "array" + x-nullable: false + items: + type: "string" + Created: + type: "integer" + x-nullable: false + Size: + type: "integer" + x-nullable: false + SharedSize: + type: "integer" + x-nullable: false + VirtualSize: + type: "integer" + x-nullable: false + Labels: + type: "object" + x-nullable: false + additionalProperties: + type: "string" + Containers: + x-nullable: false + type: "integer" + + AuthConfig: + type: "object" + properties: + username: + type: "string" + password: + type: "string" + email: + type: "string" + serveraddress: + type: "string" + example: + username: "hannibal" + password: "xxxx" + serveraddress: "https://index.docker.io/v1/" + + ProcessConfig: + type: "object" + properties: + privileged: + type: "boolean" + user: + type: "string" + tty: + type: "boolean" + entrypoint: + type: "string" + arguments: + type: "array" + items: + type: "string" + + Volume: + type: "object" + required: [Name, Driver, Mountpoint, Labels, Scope, Options] + properties: + Name: + type: "string" + description: "Name of the volume." + x-nullable: false + Driver: + type: "string" + description: "Name of the volume driver used by the volume." + x-nullable: false + Mountpoint: + type: "string" + description: "Mount path of the volume on the host." + x-nullable: false + CreatedAt: + type: "string" + format: "dateTime" + description: "Date/Time the volume was created." + Status: + type: "object" + description: | + Low-level details about the volume, provided by the volume driver. + Details are returned as a map with key/value pairs: + `{"key":"value","key2":"value2"}`. + + The `Status` field is optional, and is omitted if the volume driver + does not support this feature. + additionalProperties: + type: "object" + Labels: + type: "object" + description: "User-defined key/value metadata." + x-nullable: false + additionalProperties: + type: "string" + Scope: + type: "string" + description: | + The level at which the volume exists. Either `global` for cluster-wide, + or `local` for machine level. + default: "local" + x-nullable: false + enum: ["local", "global"] + Options: + type: "object" + description: | + The driver specific options used when creating the volume. + additionalProperties: + type: "string" + UsageData: + type: "object" + x-nullable: true + required: [Size, RefCount] + description: | + Usage details about the volume. This information is used by the + `GET /system/df` endpoint, and omitted in other endpoints. + properties: + Size: + type: "integer" + default: -1 + description: | + Amount of disk space used by the volume (in bytes). This information + is only available for volumes created with the `"local"` volume + driver. For volumes created with other volume drivers, this field + is set to `-1` ("not available") + x-nullable: false + RefCount: + type: "integer" + default: -1 + description: | + The number of containers referencing this volume. This field + is set to `-1` if the reference-count is not available. + x-nullable: false + + example: + Name: "tardis" + Driver: "custom" + Mountpoint: "/var/lib/docker/volumes/tardis" + Status: + hello: "world" + Labels: + com.example.some-label: "some-value" + com.example.some-other-label: "some-other-value" + Scope: "local" + CreatedAt: "2016-06-07T20:31:11.853781916Z" + + Network: + type: "object" + properties: + Name: + type: "string" + Id: + type: "string" + Created: + type: "string" + format: "dateTime" + Scope: + type: "string" + Driver: + type: "string" + EnableIPv6: + type: "boolean" + IPAM: + $ref: "#/definitions/IPAM" + Internal: + type: "boolean" + Attachable: + type: "boolean" + Ingress: + type: "boolean" + Containers: + type: "object" + additionalProperties: + $ref: "#/definitions/NetworkContainer" + Options: + type: "object" + additionalProperties: + type: "string" + Labels: + type: "object" + additionalProperties: + type: "string" + example: + Name: "net01" + Id: "7d86d31b1478e7cca9ebed7e73aa0fdeec46c5ca29497431d3007d2d9e15ed99" + Created: "2016-10-19T04:33:30.360899459Z" + Scope: "local" + Driver: "bridge" + EnableIPv6: false + IPAM: + Driver: "default" + Config: + - Subnet: "172.19.0.0/16" + Gateway: "172.19.0.1" + Options: + foo: "bar" + Internal: false + Attachable: false + Ingress: false + Containers: + 19a4d5d687db25203351ed79d478946f861258f018fe384f229f2efa4b23513c: + Name: "test" + EndpointID: "628cadb8bcb92de107b2a1e516cbffe463e321f548feb37697cce00ad694f21a" + MacAddress: "02:42:ac:13:00:02" + IPv4Address: "172.19.0.2/16" + IPv6Address: "" + Options: + com.docker.network.bridge.default_bridge: "true" + com.docker.network.bridge.enable_icc: "true" + com.docker.network.bridge.enable_ip_masquerade: "true" + com.docker.network.bridge.host_binding_ipv4: "0.0.0.0" + com.docker.network.bridge.name: "docker0" + com.docker.network.driver.mtu: "1500" + Labels: + com.example.some-label: "some-value" + com.example.some-other-label: "some-other-value" + IPAM: + type: "object" + properties: + Driver: + description: "Name of the IPAM driver to use." + type: "string" + default: "default" + Config: + description: | + List of IPAM configuration options, specified as a map: + + ``` + {"Subnet": , "IPRange": , "Gateway": , "AuxAddress": } + ``` + type: "array" + items: + type: "object" + additionalProperties: + type: "string" + Options: + description: "Driver-specific options, specified as a map." + type: "object" + additionalProperties: + type: "string" + + NetworkContainer: + type: "object" + properties: + Name: + type: "string" + EndpointID: + type: "string" + MacAddress: + type: "string" + IPv4Address: + type: "string" + IPv6Address: + type: "string" + + BuildInfo: + type: "object" + properties: + id: + type: "string" + stream: + type: "string" + error: + type: "string" + errorDetail: + $ref: "#/definitions/ErrorDetail" + status: + type: "string" + progress: + type: "string" + progressDetail: + $ref: "#/definitions/ProgressDetail" + aux: + $ref: "#/definitions/ImageID" + + BuildCache: + type: "object" + properties: + ID: + type: "string" + Parent: + type: "string" + Type: + type: "string" + Description: + type: "string" + InUse: + type: "boolean" + Shared: + type: "boolean" + Size: + description: | + Amount of disk space used by the build cache (in bytes). + type: "integer" + CreatedAt: + description: | + Date and time at which the build cache was created in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "dateTime" + example: "2016-08-18T10:44:24.496525531Z" + LastUsedAt: + description: | + Date and time at which the build cache was last used in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "dateTime" + x-nullable: true + example: "2017-08-09T07:09:37.632105588Z" + UsageCount: + type: "integer" + + ImageID: + type: "object" + description: "Image ID or Digest" + properties: + ID: + type: "string" + example: + ID: "sha256:85f05633ddc1c50679be2b16a0479ab6f7637f8884e0cfe0f4d20e1ebb3d6e7c" + + CreateImageInfo: + type: "object" + properties: + id: + type: "string" + error: + type: "string" + status: + type: "string" + progress: + type: "string" + progressDetail: + $ref: "#/definitions/ProgressDetail" + + PushImageInfo: + type: "object" + properties: + error: + type: "string" + status: + type: "string" + progress: + type: "string" + progressDetail: + $ref: "#/definitions/ProgressDetail" + + ErrorDetail: + type: "object" + properties: + code: + type: "integer" + message: + type: "string" + + ProgressDetail: + type: "object" + properties: + current: + type: "integer" + total: + type: "integer" + + ErrorResponse: + description: "Represents an error." + type: "object" + required: ["message"] + properties: + message: + description: "The error message." + type: "string" + x-nullable: false + example: + message: "Something went wrong." + + IdResponse: + description: "Response to an API call that returns just an Id" + type: "object" + required: ["Id"] + properties: + Id: + description: "The id of the newly created object." + type: "string" + x-nullable: false + + EndpointSettings: + description: "Configuration for a network endpoint." + type: "object" + properties: + # Configurations + IPAMConfig: + $ref: "#/definitions/EndpointIPAMConfig" + Links: + type: "array" + items: + type: "string" + example: + - "container_1" + - "container_2" + Aliases: + type: "array" + items: + type: "string" + example: + - "server_x" + - "server_y" + + # Operational data + NetworkID: + description: | + Unique ID of the network. + type: "string" + example: "08754567f1f40222263eab4102e1c733ae697e8e354aa9cd6e18d7402835292a" + EndpointID: + description: | + Unique ID for the service endpoint in a Sandbox. + type: "string" + example: "b88f5b905aabf2893f3cbc4ee42d1ea7980bbc0a92e2c8922b1e1795298afb0b" + Gateway: + description: | + Gateway address for this network. + type: "string" + example: "172.17.0.1" + IPAddress: + description: | + IPv4 address. + type: "string" + example: "172.17.0.4" + IPPrefixLen: + description: | + Mask length of the IPv4 address. + type: "integer" + example: 16 + IPv6Gateway: + description: | + IPv6 gateway address. + type: "string" + example: "2001:db8:2::100" + GlobalIPv6Address: + description: | + Global IPv6 address. + type: "string" + example: "2001:db8::5689" + GlobalIPv6PrefixLen: + description: | + Mask length of the global IPv6 address. + type: "integer" + format: "int64" + example: 64 + MacAddress: + description: | + MAC address for the endpoint on this network. + type: "string" + example: "02:42:ac:11:00:04" + DriverOpts: + description: | + DriverOpts is a mapping of driver options and values. These options + are passed directly to the driver and are driver specific. + type: "object" + x-nullable: true + additionalProperties: + type: "string" + example: + com.example.some-label: "some-value" + com.example.some-other-label: "some-other-value" + + EndpointIPAMConfig: + description: | + EndpointIPAMConfig represents an endpoint's IPAM configuration. + type: "object" + x-nullable: true + properties: + IPv4Address: + type: "string" + example: "172.20.30.33" + IPv6Address: + type: "string" + example: "2001:db8:abcd::3033" + LinkLocalIPs: + type: "array" + items: + type: "string" + example: + - "169.254.34.68" + - "fe80::3468" + + PluginMount: + type: "object" + x-nullable: false + required: [Name, Description, Settable, Source, Destination, Type, Options] + properties: + Name: + type: "string" + x-nullable: false + example: "some-mount" + Description: + type: "string" + x-nullable: false + example: "This is a mount that's used by the plugin." + Settable: + type: "array" + items: + type: "string" + Source: + type: "string" + example: "/var/lib/docker/plugins/" + Destination: + type: "string" + x-nullable: false + example: "/mnt/state" + Type: + type: "string" + x-nullable: false + example: "bind" + Options: + type: "array" + items: + type: "string" + example: + - "rbind" + - "rw" + + PluginDevice: + type: "object" + required: [Name, Description, Settable, Path] + x-nullable: false + properties: + Name: + type: "string" + x-nullable: false + Description: + type: "string" + x-nullable: false + Settable: + type: "array" + items: + type: "string" + Path: + type: "string" + example: "/dev/fuse" + + PluginEnv: + type: "object" + x-nullable: false + required: [Name, Description, Settable, Value] + properties: + Name: + x-nullable: false + type: "string" + Description: + x-nullable: false + type: "string" + Settable: + type: "array" + items: + type: "string" + Value: + type: "string" + + PluginInterfaceType: + type: "object" + x-nullable: false + required: [Prefix, Capability, Version] + properties: + Prefix: + type: "string" + x-nullable: false + Capability: + type: "string" + x-nullable: false + Version: + type: "string" + x-nullable: false + + Plugin: + description: "A plugin for the Engine API" + type: "object" + required: [Settings, Enabled, Config, Name] + properties: + Id: + type: "string" + example: "5724e2c8652da337ab2eedd19fc6fc0ec908e4bd907c7421bf6a8dfc70c4c078" + Name: + type: "string" + x-nullable: false + example: "tiborvass/sample-volume-plugin" + Enabled: + description: + True if the plugin is running. False if the plugin is not running, + only installed. + type: "boolean" + x-nullable: false + example: true + Settings: + description: "Settings that can be modified by users." + type: "object" + x-nullable: false + required: [Args, Devices, Env, Mounts] + properties: + Mounts: + type: "array" + items: + $ref: "#/definitions/PluginMount" + Env: + type: "array" + items: + type: "string" + example: + - "DEBUG=0" + Args: + type: "array" + items: + type: "string" + Devices: + type: "array" + items: + $ref: "#/definitions/PluginDevice" + PluginReference: + description: "plugin remote reference used to push/pull the plugin" + type: "string" + x-nullable: false + example: "localhost:5000/tiborvass/sample-volume-plugin:latest" + Config: + description: "The config of a plugin." + type: "object" + x-nullable: false + required: + - Description + - Documentation + - Interface + - Entrypoint + - WorkDir + - Network + - Linux + - PidHost + - PropagatedMount + - IpcHost + - Mounts + - Env + - Args + properties: + DockerVersion: + description: "Docker Version used to create the plugin" + type: "string" + x-nullable: false + example: "17.06.0-ce" + Description: + type: "string" + x-nullable: false + example: "A sample volume plugin for Docker" + Documentation: + type: "string" + x-nullable: false + example: "https://docs.docker.com/engine/extend/plugins/" + Interface: + description: "The interface between Docker and the plugin" + x-nullable: false + type: "object" + required: [Types, Socket] + properties: + Types: + type: "array" + items: + $ref: "#/definitions/PluginInterfaceType" + example: + - "docker.volumedriver/1.0" + Socket: + type: "string" + x-nullable: false + example: "plugins.sock" + ProtocolScheme: + type: "string" + example: "some.protocol/v1.0" + description: "Protocol to use for clients connecting to the plugin." + enum: + - "" + - "moby.plugins.http/v1" + Entrypoint: + type: "array" + items: + type: "string" + example: + - "/usr/bin/sample-volume-plugin" + - "/data" + WorkDir: + type: "string" + x-nullable: false + example: "/bin/" + User: + type: "object" + x-nullable: false + properties: + UID: + type: "integer" + format: "uint32" + example: 1000 + GID: + type: "integer" + format: "uint32" + example: 1000 + Network: + type: "object" + x-nullable: false + required: [Type] + properties: + Type: + x-nullable: false + type: "string" + example: "host" + Linux: + type: "object" + x-nullable: false + required: [Capabilities, AllowAllDevices, Devices] + properties: + Capabilities: + type: "array" + items: + type: "string" + example: + - "CAP_SYS_ADMIN" + - "CAP_SYSLOG" + AllowAllDevices: + type: "boolean" + x-nullable: false + example: false + Devices: + type: "array" + items: + $ref: "#/definitions/PluginDevice" + PropagatedMount: + type: "string" + x-nullable: false + example: "/mnt/volumes" + IpcHost: + type: "boolean" + x-nullable: false + example: false + PidHost: + type: "boolean" + x-nullable: false + example: false + Mounts: + type: "array" + items: + $ref: "#/definitions/PluginMount" + Env: + type: "array" + items: + $ref: "#/definitions/PluginEnv" + example: + - Name: "DEBUG" + Description: "If set, prints debug messages" + Settable: null + Value: "0" + Args: + type: "object" + x-nullable: false + required: [Name, Description, Settable, Value] + properties: + Name: + x-nullable: false + type: "string" + example: "args" + Description: + x-nullable: false + type: "string" + example: "command line arguments" + Settable: + type: "array" + items: + type: "string" + Value: + type: "array" + items: + type: "string" + rootfs: + type: "object" + properties: + type: + type: "string" + example: "layers" + diff_ids: + type: "array" + items: + type: "string" + example: + - "sha256:675532206fbf3030b8458f88d6e26d4eb1577688a25efec97154c94e8b6b4887" + - "sha256:e216a057b1cb1efc11f8a268f37ef62083e70b1b38323ba252e25ac88904a7e8" + + ObjectVersion: + description: | + The version number of the object such as node, service, etc. This is needed + to avoid conflicting writes. The client must send the version number along + with the modified specification when updating these objects. + + This approach ensures safe concurrency and determinism in that the change + on the object may not be applied if the version number has changed from the + last read. In other words, if two update requests specify the same base + version, only one of the requests can succeed. As a result, two separate + update requests that happen at the same time will not unintentionally + overwrite each other. + type: "object" + properties: + Index: + type: "integer" + format: "uint64" + example: 373531 + + NodeSpec: + type: "object" + properties: + Name: + description: "Name for the node." + type: "string" + example: "my-node" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + Role: + description: "Role of the node." + type: "string" + enum: + - "worker" + - "manager" + example: "manager" + Availability: + description: "Availability of the node." + type: "string" + enum: + - "active" + - "pause" + - "drain" + example: "active" + example: + Availability: "active" + Name: "node-name" + Role: "manager" + Labels: + foo: "bar" + + Node: + type: "object" + properties: + ID: + type: "string" + example: "24ifsmvkjbyhk" + Version: + $ref: "#/definitions/ObjectVersion" + CreatedAt: + description: | + Date and time at which the node was added to the swarm in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "dateTime" + example: "2016-08-18T10:44:24.496525531Z" + UpdatedAt: + description: | + Date and time at which the node was last updated in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "dateTime" + example: "2017-08-09T07:09:37.632105588Z" + Spec: + $ref: "#/definitions/NodeSpec" + Description: + $ref: "#/definitions/NodeDescription" + Status: + $ref: "#/definitions/NodeStatus" + ManagerStatus: + $ref: "#/definitions/ManagerStatus" + + NodeDescription: + description: | + NodeDescription encapsulates the properties of the Node as reported by the + agent. + type: "object" + properties: + Hostname: + type: "string" + example: "bf3067039e47" + Platform: + $ref: "#/definitions/Platform" + Resources: + $ref: "#/definitions/ResourceObject" + Engine: + $ref: "#/definitions/EngineDescription" + TLSInfo: + $ref: "#/definitions/TLSInfo" + + Platform: + description: | + Platform represents the platform (Arch/OS). + type: "object" + properties: + Architecture: + description: | + Architecture represents the hardware architecture (for example, + `x86_64`). + type: "string" + example: "x86_64" + OS: + description: | + OS represents the Operating System (for example, `linux` or `windows`). + type: "string" + example: "linux" + + EngineDescription: + description: "EngineDescription provides information about an engine." + type: "object" + properties: + EngineVersion: + type: "string" + example: "17.06.0" + Labels: + type: "object" + additionalProperties: + type: "string" + example: + foo: "bar" + Plugins: + type: "array" + items: + type: "object" + properties: + Type: + type: "string" + Name: + type: "string" + example: + - Type: "Log" + Name: "awslogs" + - Type: "Log" + Name: "fluentd" + - Type: "Log" + Name: "gcplogs" + - Type: "Log" + Name: "gelf" + - Type: "Log" + Name: "journald" + - Type: "Log" + Name: "json-file" + - Type: "Log" + Name: "logentries" + - Type: "Log" + Name: "splunk" + - Type: "Log" + Name: "syslog" + - Type: "Network" + Name: "bridge" + - Type: "Network" + Name: "host" + - Type: "Network" + Name: "ipvlan" + - Type: "Network" + Name: "macvlan" + - Type: "Network" + Name: "null" + - Type: "Network" + Name: "overlay" + - Type: "Volume" + Name: "local" + - Type: "Volume" + Name: "localhost:5000/vieux/sshfs:latest" + - Type: "Volume" + Name: "vieux/sshfs:latest" + + TLSInfo: + description: | + Information about the issuer of leaf TLS certificates and the trusted root + CA certificate. + type: "object" + properties: + TrustRoot: + description: | + The root CA certificate(s) that are used to validate leaf TLS + certificates. + type: "string" + CertIssuerSubject: + description: + The base64-url-safe-encoded raw subject bytes of the issuer. + type: "string" + CertIssuerPublicKey: + description: | + The base64-url-safe-encoded raw public key bytes of the issuer. + type: "string" + example: + TrustRoot: | + -----BEGIN CERTIFICATE----- + MIIBajCCARCgAwIBAgIUbYqrLSOSQHoxD8CwG6Bi2PJi9c8wCgYIKoZIzj0EAwIw + EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwNDI0MjE0MzAwWhcNMzcwNDE5MjE0 + MzAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH + A0IABJk/VyMPYdaqDXJb/VXh5n/1Yuv7iNrxV3Qb3l06XD46seovcDWs3IZNV1lf + 3Skyr0ofcchipoiHkXBODojJydSjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB + Af8EBTADAQH/MB0GA1UdDgQWBBRUXxuRcnFjDfR/RIAUQab8ZV/n4jAKBggqhkjO + PQQDAgNIADBFAiAy+JTe6Uc3KyLCMiqGl2GyWGQqQDEcO3/YG36x7om65AIhAJvz + pxv6zFeVEkAEEkqIYi0omA9+CjanB/6Bz4n1uw8H + -----END CERTIFICATE----- + CertIssuerSubject: "MBMxETAPBgNVBAMTCHN3YXJtLWNh" + CertIssuerPublicKey: "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmT9XIw9h1qoNclv9VeHmf/Vi6/uI2vFXdBveXTpcPjqx6i9wNazchk1XWV/dKTKvSh9xyGKmiIeRcE4OiMnJ1A==" + + NodeStatus: + description: | + NodeStatus represents the status of a node. + + It provides the current status of the node, as seen by the manager. + type: "object" + properties: + State: + $ref: "#/definitions/NodeState" + Message: + type: "string" + example: "" + Addr: + description: "IP address of the node." + type: "string" + example: "172.17.0.2" + + NodeState: + description: "NodeState represents the state of a node." + type: "string" + enum: + - "unknown" + - "down" + - "ready" + - "disconnected" + example: "ready" + + ManagerStatus: + description: | + ManagerStatus represents the status of a manager. + + It provides the current status of a node's manager component, if the node + is a manager. + x-nullable: true + type: "object" + properties: + Leader: + type: "boolean" + default: false + example: true + Reachability: + $ref: "#/definitions/Reachability" + Addr: + description: | + The IP address and port at which the manager is reachable. + type: "string" + example: "10.0.0.46:2377" + + Reachability: + description: "Reachability represents the reachability of a node." + type: "string" + enum: + - "unknown" + - "unreachable" + - "reachable" + example: "reachable" + + SwarmSpec: + description: "User modifiable swarm configuration." + type: "object" + properties: + Name: + description: "Name of the swarm." + type: "string" + example: "default" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + example: + com.example.corp.type: "production" + com.example.corp.department: "engineering" + Orchestration: + description: "Orchestration configuration." + type: "object" + x-nullable: true + properties: + TaskHistoryRetentionLimit: + description: | + The number of historic tasks to keep per instance or node. If + negative, never remove completed or failed tasks. + type: "integer" + format: "int64" + example: 10 + Raft: + description: "Raft configuration." + type: "object" + properties: + SnapshotInterval: + description: "The number of log entries between snapshots." + type: "integer" + format: "uint64" + example: 10000 + KeepOldSnapshots: + description: | + The number of snapshots to keep beyond the current snapshot. + type: "integer" + format: "uint64" + LogEntriesForSlowFollowers: + description: | + The number of log entries to keep around to sync up slow followers + after a snapshot is created. + type: "integer" + format: "uint64" + example: 500 + ElectionTick: + description: | + The number of ticks that a follower will wait for a message from + the leader before becoming a candidate and starting an election. + `ElectionTick` must be greater than `HeartbeatTick`. + + A tick currently defaults to one second, so these translate + directly to seconds currently, but this is NOT guaranteed. + type: "integer" + example: 3 + HeartbeatTick: + description: | + The number of ticks between heartbeats. Every HeartbeatTick ticks, + the leader will send a heartbeat to the followers. + + A tick currently defaults to one second, so these translate + directly to seconds currently, but this is NOT guaranteed. + type: "integer" + example: 1 + Dispatcher: + description: "Dispatcher configuration." + type: "object" + x-nullable: true + properties: + HeartbeatPeriod: + description: | + The delay for an agent to send a heartbeat to the dispatcher. + type: "integer" + format: "int64" + example: 5000000000 + CAConfig: + description: "CA configuration." + type: "object" + x-nullable: true + properties: + NodeCertExpiry: + description: "The duration node certificates are issued for." + type: "integer" + format: "int64" + example: 7776000000000000 + ExternalCAs: + description: | + Configuration for forwarding signing requests to an external + certificate authority. + type: "array" + items: + type: "object" + properties: + Protocol: + description: | + Protocol for communication with the external CA (currently + only `cfssl` is supported). + type: "string" + enum: + - "cfssl" + default: "cfssl" + URL: + description: | + URL where certificate signing requests should be sent. + type: "string" + Options: + description: | + An object with key/value pairs that are interpreted as + protocol-specific options for the external CA driver. + type: "object" + additionalProperties: + type: "string" + CACert: + description: | + The root CA certificate (in PEM format) this external CA uses + to issue TLS certificates (assumed to be to the current swarm + root CA certificate if not provided). + type: "string" + SigningCACert: + description: | + The desired signing CA certificate for all swarm node TLS leaf + certificates, in PEM format. + type: "string" + SigningCAKey: + description: | + The desired signing CA key for all swarm node TLS leaf certificates, + in PEM format. + type: "string" + ForceRotate: + description: | + An integer whose purpose is to force swarm to generate a new + signing CA certificate and key, if none have been specified in + `SigningCACert` and `SigningCAKey` + format: "uint64" + type: "integer" + EncryptionConfig: + description: "Parameters related to encryption-at-rest." + type: "object" + properties: + AutoLockManagers: + description: | + If set, generate a key and use it to lock data stored on the + managers. + type: "boolean" + example: false + TaskDefaults: + description: "Defaults for creating tasks in this cluster." + type: "object" + properties: + LogDriver: + description: | + The log driver to use for tasks created in the orchestrator if + unspecified by a service. + + Updating this value only affects new tasks. Existing tasks continue + to use their previously configured log driver until recreated. + type: "object" + properties: + Name: + description: | + The log driver to use as a default for new tasks. + type: "string" + example: "json-file" + Options: + description: | + Driver-specific options for the selectd log driver, specified + as key/value pairs. + type: "object" + additionalProperties: + type: "string" + example: + "max-file": "10" + "max-size": "100m" + + # The Swarm information for `GET /info`. It is the same as `GET /swarm`, but + # without `JoinTokens`. + ClusterInfo: + description: | + ClusterInfo represents information about the swarm as is returned by the + "/info" endpoint. Join-tokens are not included. + x-nullable: true + type: "object" + properties: + ID: + description: "The ID of the swarm." + type: "string" + example: "abajmipo7b4xz5ip2nrla6b11" + Version: + $ref: "#/definitions/ObjectVersion" + CreatedAt: + description: | + Date and time at which the swarm was initialised in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "dateTime" + example: "2016-08-18T10:44:24.496525531Z" + UpdatedAt: + description: | + Date and time at which the swarm was last updated in + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. + type: "string" + format: "dateTime" + example: "2017-08-09T07:09:37.632105588Z" + Spec: + $ref: "#/definitions/SwarmSpec" + TLSInfo: + $ref: "#/definitions/TLSInfo" + RootRotationInProgress: + description: | + Whether there is currently a root CA rotation in progress for the swarm + type: "boolean" + example: false + DataPathPort: + description: | + DataPathPort specifies the data path port number for data traffic. + Acceptable port range is 1024 to 49151. + If no port is set or is set to 0, the default port (4789) is used. + type: "integer" + format: "uint32" + default: 4789 + example: 4789 + DefaultAddrPool: + description: | + Default Address Pool specifies default subnet pools for global scope + networks. + type: "array" + items: + type: "string" + format: "CIDR" + example: ["10.10.0.0/16", "20.20.0.0/16"] + SubnetSize: + description: | + SubnetSize specifies the subnet size of the networks created from the + default subnet pool. + type: "integer" + format: "uint32" + maximum: 29 + default: 24 + example: 24 + + JoinTokens: + description: | + JoinTokens contains the tokens workers and managers need to join the swarm. + type: "object" + properties: + Worker: + description: | + The token workers can use to join the swarm. + type: "string" + example: "SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx" + Manager: + description: | + The token managers can use to join the swarm. + type: "string" + example: "SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-7p73s1dx5in4tatdymyhg9hu2" + + Swarm: + type: "object" + allOf: + - $ref: "#/definitions/ClusterInfo" + - type: "object" + properties: + JoinTokens: + $ref: "#/definitions/JoinTokens" + + TaskSpec: + description: "User modifiable task configuration." + type: "object" + properties: + PluginSpec: + type: "object" + description: | + Plugin spec for the service. *(Experimental release only.)* + +


+ + > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are + > mutually exclusive. PluginSpec is only used when the Runtime field + > is set to `plugin`. NetworkAttachmentSpec is used when the Runtime + > field is set to `attachment`. + properties: + Name: + description: "The name or 'alias' to use for the plugin." + type: "string" + Remote: + description: "The plugin image reference to use." + type: "string" + Disabled: + description: "Disable the plugin once scheduled." + type: "boolean" + PluginPrivilege: + type: "array" + items: + description: | + Describes a permission accepted by the user upon installing the + plugin. + type: "object" + properties: + Name: + type: "string" + Description: + type: "string" + Value: + type: "array" + items: + type: "string" + ContainerSpec: + type: "object" + description: | + Container spec for the service. + +


+ + > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are + > mutually exclusive. PluginSpec is only used when the Runtime field + > is set to `plugin`. NetworkAttachmentSpec is used when the Runtime + > field is set to `attachment`. + properties: + Image: + description: "The image name to use for the container" + type: "string" + Labels: + description: "User-defined key/value data." + type: "object" + additionalProperties: + type: "string" + Command: + description: "The command to be run in the image." + type: "array" + items: + type: "string" + Args: + description: "Arguments to the command." + type: "array" + items: + type: "string" + Hostname: + description: | + The hostname to use for the container, as a valid + [RFC 1123](https://tools.ietf.org/html/rfc1123) hostname. + type: "string" + Env: + description: | + A list of environment variables in the form `VAR=value`. + type: "array" + items: + type: "string" + Dir: + description: "The working directory for commands to run in." + type: "string" + User: + description: "The user inside the container." + type: "string" + Groups: + type: "array" + description: | + A list of additional groups that the container process will run as. + items: + type: "string" + Privileges: + type: "object" + description: "Security options for the container" + properties: + CredentialSpec: + type: "object" + description: "CredentialSpec for managed service account (Windows only)" + properties: + Config: + type: "string" + example: "0bt9dmxjvjiqermk6xrop3ekq" + description: | + Load credential spec from a Swarm Config with the given ID. + The specified config must also be present in the Configs + field with the Runtime property set. + +


+ + + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, + > and `CredentialSpec.Config` are mutually exclusive. + File: + type: "string" + example: "spec.json" + description: | + Load credential spec from this file. The file is read by + the daemon, and must be present in the `CredentialSpecs` + subdirectory in the docker data directory, which defaults + to `C:\ProgramData\Docker\` on Windows. + + For example, specifying `spec.json` loads + `C:\ProgramData\Docker\CredentialSpecs\spec.json`. + +


+ + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, + > and `CredentialSpec.Config` are mutually exclusive. + Registry: + type: "string" + description: | + Load credential spec from this value in the Windows + registry. The specified registry value must be located in: + + `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\CredentialSpecs` + +


+ + + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, + > and `CredentialSpec.Config` are mutually exclusive. + SELinuxContext: + type: "object" + description: "SELinux labels of the container" + properties: + Disable: + type: "boolean" + description: "Disable SELinux" + User: + type: "string" + description: "SELinux user label" + Role: + type: "string" + description: "SELinux role label" + Type: + type: "string" + description: "SELinux type label" + Level: + type: "string" + description: "SELinux level label" + TTY: + description: "Whether a pseudo-TTY should be allocated." + type: "boolean" + OpenStdin: + description: "Open `stdin`" + type: "boolean" + ReadOnly: + description: "Mount the container's root filesystem as read only." + type: "boolean" + Mounts: + description: | + Specification for mounts to be added to containers created as part + of the service. + type: "array" + items: + $ref: "#/definitions/Mount" + StopSignal: + description: "Signal to stop the container." + type: "string" + StopGracePeriod: + description: | + Amount of time to wait for the container to terminate before + forcefully killing it. + type: "integer" + format: "int64" + HealthCheck: + $ref: "#/definitions/HealthConfig" + Hosts: + type: "array" + description: | + A list of hostname/IP mappings to add to the container's `hosts` + file. The format of extra hosts is specified in the + [hosts(5)](http://man7.org/linux/man-pages/man5/hosts.5.html) + man page: + + IP_address canonical_hostname [aliases...] + items: + type: "string" + DNSConfig: + description: | + Specification for DNS related configurations in resolver configuration + file (`resolv.conf`). + type: "object" + properties: + Nameservers: + description: "The IP addresses of the name servers." + type: "array" + items: + type: "string" + Search: + description: "A search list for host-name lookup." + type: "array" + items: + type: "string" + Options: + description: | + A list of internal resolver variables to be modified (e.g., + `debug`, `ndots:3`, etc.). + type: "array" + items: + type: "string" + Secrets: + description: | + Secrets contains references to zero or more secrets that will be + exposed to the service. + type: "array" + items: + type: "object" + properties: + File: + description: | + File represents a specific target that is backed by a file. + type: "object" + properties: + Name: + description: | + Name represents the final filename in the filesystem. + type: "string" + UID: + description: "UID represents the file UID." + type: "string" + GID: + description: "GID represents the file GID." + type: "string" + Mode: + description: "Mode represents the FileMode of the file." + type: "integer" + format: "uint32" + SecretID: + description: | + SecretID represents the ID of the specific secret that we're + referencing. + type: "string" + SecretName: + description: | + SecretName is the name of the secret that this references, + but this is just provided for lookup/display purposes. The + secret in the reference will be identified by its ID. + type: "string" + Configs: + description: | + Configs contains references to zero or more configs that will be + exposed to the service. + type: "array" + items: + type: "object" + properties: + File: + description: | + File represents a specific target that is backed by a file. + +


+ + > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive + type: "object" + properties: + Name: + description: | + Name represents the final filename in the filesystem. + type: "string" + UID: + description: "UID represents the file UID." + type: "string" + GID: + description: "GID represents the file GID." + type: "string" + Mode: + description: "Mode represents the FileMode of the file." + type: "integer" + format: "uint32" + Runtime: + description: | + Runtime represents a target that is not mounted into the + container but is used by the task + +


+ + > **Note**: `Configs.File` and `Configs.Runtime` are mutually + > exclusive + type: "object" + ConfigID: + description: | + ConfigID represents the ID of the specific config that we're + referencing. + type: "string" + ConfigName: + description: | + ConfigName is the name of the config that this references, + but this is just provided for lookup/display purposes. The + config in the reference will be identified by its ID. + type: "string" + Isolation: + type: "string" + description: | + Isolation technology of the containers running the service. + (Windows only) + enum: + - "default" + - "process" + - "hyperv" + Init: + description: | + Run an init inside the container that forwards signals and reaps + processes. This field is omitted if empty, and the default (as + configured on the daemon) is used. + type: "boolean" + x-nullable: true + Sysctls: + description: | + Set kernel namedspaced parameters (sysctls) in the container. + The Sysctls option on services accepts the same sysctls as the + are supported on containers. Note that while the same sysctls are + supported, no guarantees or checks are made about their + suitability for a clustered environment, and it's up to the user + to determine whether a given sysctl will work properly in a + Service. + type: "object" + additionalProperties: + type: "string" + # This option is not used by Windows containers + CapabilityAdd: + type: "array" + description: | + A list of kernel capabilities to add to the default set + for the container. + items: + type: "string" + example: + - "CAP_NET_RAW" + - "CAP_SYS_ADMIN" + - "CAP_SYS_CHROOT" + - "CAP_SYSLOG" + CapabilityDrop: + type: "array" + description: | + A list of kernel capabilities to drop from the default set + for the container. + items: + type: "string" + example: + - "CAP_NET_RAW" + Ulimits: + description: | + A list of resource limits to set in the container. For example: `{"Name": "nofile", "Soft": 1024, "Hard": 2048}`" + type: "array" + items: + type: "object" + properties: + Name: + description: "Name of ulimit" + type: "string" + Soft: + description: "Soft limit" + type: "integer" + Hard: + description: "Hard limit" + type: "integer" + NetworkAttachmentSpec: + description: | + Read-only spec type for non-swarm containers attached to swarm overlay + networks. + +


+ + > **Note**: ContainerSpec, NetworkAttachmentSpec, and PluginSpec are + > mutually exclusive. PluginSpec is only used when the Runtime field + > is set to `plugin`. NetworkAttachmentSpec is used when the Runtime + > field is set to `attachment`. + type: "object" + properties: + ContainerID: + description: "ID of the container represented by this task" + type: "string" + Resources: + description: | + Resource requirements which apply to each individual container created + as part of the service. + type: "object" + properties: + Limits: + description: "Define resources limits." + $ref: "#/definitions/Limit" + Reservation: + description: "Define resources reservation." + $ref: "#/definitions/ResourceObject" + RestartPolicy: + description: | + Specification for the restart policy which applies to containers + created as part of this service. + type: "object" + properties: + Condition: + description: "Condition for restart." + type: "string" + enum: + - "none" + - "on-failure" + - "any" + Delay: + description: "Delay between restart attempts." + type: "integer" + format: "int64" + MaxAttempts: + description: | + Maximum attempts to restart a given container before giving up + (default value is 0, which is ignored). + type: "integer" + format: "int64" + default: 0 + Window: + description: | + Windows is the time window used to evaluate the restart policy + (default value is 0, which is unbounded). + type: "integer" + format: "int64" + default: 0 + Placement: + type: "object" + properties: + Constraints: + description: | + An array of constraint expressions to limit the set of nodes where + a task can be scheduled. Constraint expressions can either use a + _match_ (`==`) or _exclude_ (`!=`) rule. Multiple constraints find + nodes that satisfy every expression (AND match). Constraints can + match node or Docker Engine labels as follows: + + node attribute | matches | example + ---------------------|--------------------------------|----------------------------------------------- + `node.id` | Node ID | `node.id==2ivku8v2gvtg4` + `node.hostname` | Node hostname | `node.hostname!=node-2` + `node.role` | Node role (`manager`/`worker`) | `node.role==manager` + `node.platform.os` | Node operating system | `node.platform.os==windows` + `node.platform.arch` | Node architecture | `node.platform.arch==x86_64` + `node.labels` | User-defined node labels | `node.labels.security==high` + `engine.labels` | Docker Engine's labels | `engine.labels.operatingsystem==ubuntu-14.04` + + `engine.labels` apply to Docker Engine labels like operating system, + drivers, etc. Swarm administrators add `node.labels` for operational + purposes by using the [`node update endpoint`](#operation/NodeUpdate). + + type: "array" + items: + type: "string" + example: + - "node.hostname!=node3.corp.example.com" + - "node.role!=manager" + - "node.labels.type==production" + - "node.platform.os==linux" + - "node.platform.arch==x86_64" + Preferences: + description: | + Preferences provide a way to make the scheduler aware of factors + such as topology. They are provided in order from highest to + lowest precedence. + type: "array" + items: + type: "object" + properties: + Spread: + type: "object" + properties: + SpreadDescriptor: + description: | + label descriptor, such as `engine.labels.az`. + type: "string" + example: + - Spread: + SpreadDescriptor: "node.labels.datacenter" + - Spread: + SpreadDescriptor: "node.labels.rack" + MaxReplicas: + description: | + Maximum number of replicas for per node (default value is 0, which + is unlimited) + type: "integer" + format: "int64" + default: 0 + Platforms: + description: | + Platforms stores all the platforms that the service's image can + run on. This field is used in the platform filter for scheduling. + If empty, then the platform filter is off, meaning there are no + scheduling restrictions. + type: "array" + items: + $ref: "#/definitions/Platform" + ForceUpdate: + description: | + A counter that triggers an update even if no relevant parameters have + been changed. + type: "integer" + Runtime: + description: | + Runtime is the type of runtime specified for the task executor. + type: "string" + Networks: + description: "Specifies which networks the service should attach to." + type: "array" + items: + $ref: "#/definitions/NetworkAttachmentConfig" + LogDriver: + description: | + Specifies the log driver to use for tasks created from this spec. If + not present, the default one for the swarm will be used, finally + falling back to the engine default if not specified. + type: "object" + properties: + Name: + type: "string" + Options: + type: "object" + additionalProperties: + type: "string" + + TaskState: + type: "string" + enum: + - "new" + - "allocated" + - "pending" + - "assigned" + - "accepted" + - "preparing" + - "ready" + - "starting" + - "running" + - "complete" + - "shutdown" + - "failed" + - "rejected" + - "remove" + - "orphaned" + + Task: + type: "object" + properties: + ID: + description: "The ID of the task." + type: "string" + Version: + $ref: "#/definitions/ObjectVersion" + CreatedAt: + type: "string" + format: "dateTime" + UpdatedAt: + type: "string" + format: "dateTime" + Name: + description: "Name of the task." + type: "string" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + Spec: + $ref: "#/definitions/TaskSpec" + ServiceID: + description: "The ID of the service this task is part of." + type: "string" + Slot: + type: "integer" + NodeID: + description: "The ID of the node that this task is on." + type: "string" + AssignedGenericResources: + $ref: "#/definitions/GenericResources" + Status: + type: "object" + properties: + Timestamp: + type: "string" + format: "dateTime" + State: + $ref: "#/definitions/TaskState" + Message: + type: "string" + Err: + type: "string" + ContainerStatus: + type: "object" + properties: + ContainerID: + type: "string" + PID: + type: "integer" + ExitCode: + type: "integer" + DesiredState: + $ref: "#/definitions/TaskState" + JobIteration: + description: | + If the Service this Task belongs to is a job-mode service, contains + the JobIteration of the Service this Task was created for. Absent if + the Task was created for a Replicated or Global Service. + $ref: "#/definitions/ObjectVersion" + example: + ID: "0kzzo1i0y4jz6027t0k7aezc7" + Version: + Index: 71 + CreatedAt: "2016-06-07T21:07:31.171892745Z" + UpdatedAt: "2016-06-07T21:07:31.376370513Z" + Spec: + ContainerSpec: + Image: "redis" + Resources: + Limits: {} + Reservations: {} + RestartPolicy: + Condition: "any" + MaxAttempts: 0 + Placement: {} + ServiceID: "9mnpnzenvg8p8tdbtq4wvbkcz" + Slot: 1 + NodeID: "60gvrl6tm78dmak4yl7srz94v" + Status: + Timestamp: "2016-06-07T21:07:31.290032978Z" + State: "running" + Message: "started" + ContainerStatus: + ContainerID: "e5d62702a1b48d01c3e02ca1e0212a250801fa8d67caca0b6f35919ebc12f035" + PID: 677 + DesiredState: "running" + NetworksAttachments: + - Network: + ID: "4qvuz4ko70xaltuqbt8956gd1" + Version: + Index: 18 + CreatedAt: "2016-06-07T20:31:11.912919752Z" + UpdatedAt: "2016-06-07T21:07:29.955277358Z" + Spec: + Name: "ingress" + Labels: + com.docker.swarm.internal: "true" + DriverConfiguration: {} + IPAMOptions: + Driver: {} + Configs: + - Subnet: "10.255.0.0/16" + Gateway: "10.255.0.1" + DriverState: + Name: "overlay" + Options: + com.docker.network.driver.overlay.vxlanid_list: "256" + IPAMOptions: + Driver: + Name: "default" + Configs: + - Subnet: "10.255.0.0/16" + Gateway: "10.255.0.1" + Addresses: + - "10.255.0.10/16" + AssignedGenericResources: + - DiscreteResourceSpec: + Kind: "SSD" + Value: 3 + - NamedResourceSpec: + Kind: "GPU" + Value: "UUID1" + - NamedResourceSpec: + Kind: "GPU" + Value: "UUID2" + + ServiceSpec: + description: "User modifiable configuration for a service." + properties: + Name: + description: "Name of the service." + type: "string" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + TaskTemplate: + $ref: "#/definitions/TaskSpec" + Mode: + description: "Scheduling mode for the service." + type: "object" + properties: + Replicated: + type: "object" + properties: + Replicas: + type: "integer" + format: "int64" + Global: + type: "object" + ReplicatedJob: + description: | + The mode used for services with a finite number of tasks that run + to a completed state. + type: "object" + properties: + MaxConcurrent: + description: | + The maximum number of replicas to run simultaneously. + type: "integer" + format: "int64" + default: 1 + TotalCompletions: + description: | + The total number of replicas desired to reach the Completed + state. If unset, will default to the value of `MaxConcurrent` + type: "integer" + format: "int64" + GlobalJob: + description: | + The mode used for services which run a task to the completed state + on each valid node. + type: "object" + UpdateConfig: + description: "Specification for the update strategy of the service." + type: "object" + properties: + Parallelism: + description: | + Maximum number of tasks to be updated in one iteration (0 means + unlimited parallelism). + type: "integer" + format: "int64" + Delay: + description: "Amount of time between updates, in nanoseconds." + type: "integer" + format: "int64" + FailureAction: + description: | + Action to take if an updated task fails to run, or stops running + during the update. + type: "string" + enum: + - "continue" + - "pause" + - "rollback" + Monitor: + description: | + Amount of time to monitor each updated task for failures, in + nanoseconds. + type: "integer" + format: "int64" + MaxFailureRatio: + description: | + The fraction of tasks that may fail during an update before the + failure action is invoked, specified as a floating point number + between 0 and 1. + type: "number" + default: 0 + Order: + description: | + The order of operations when rolling out an updated task. Either + the old task is shut down before the new task is started, or the + new task is started before the old task is shut down. + type: "string" + enum: + - "stop-first" + - "start-first" + RollbackConfig: + description: "Specification for the rollback strategy of the service." + type: "object" + properties: + Parallelism: + description: | + Maximum number of tasks to be rolled back in one iteration (0 means + unlimited parallelism). + type: "integer" + format: "int64" + Delay: + description: | + Amount of time between rollback iterations, in nanoseconds. + type: "integer" + format: "int64" + FailureAction: + description: | + Action to take if an rolled back task fails to run, or stops + running during the rollback. + type: "string" + enum: + - "continue" + - "pause" + Monitor: + description: | + Amount of time to monitor each rolled back task for failures, in + nanoseconds. + type: "integer" + format: "int64" + MaxFailureRatio: + description: | + The fraction of tasks that may fail during a rollback before the + failure action is invoked, specified as a floating point number + between 0 and 1. + type: "number" + default: 0 + Order: + description: | + The order of operations when rolling back a task. Either the old + task is shut down before the new task is started, or the new task + is started before the old task is shut down. + type: "string" + enum: + - "stop-first" + - "start-first" + Networks: + description: "Specifies which networks the service should attach to." + type: "array" + items: + $ref: "#/definitions/NetworkAttachmentConfig" + + EndpointSpec: + $ref: "#/definitions/EndpointSpec" + + EndpointPortConfig: + type: "object" + properties: + Name: + type: "string" + Protocol: + type: "string" + enum: + - "tcp" + - "udp" + - "sctp" + TargetPort: + description: "The port inside the container." + type: "integer" + PublishedPort: + description: "The port on the swarm hosts." + type: "integer" + PublishMode: + description: | + The mode in which port is published. + +


+ + - "ingress" makes the target port accessible on every node, + regardless of whether there is a task for the service running on + that node or not. + - "host" bypasses the routing mesh and publish the port directly on + the swarm node where that service is running. + + type: "string" + enum: + - "ingress" + - "host" + default: "ingress" + example: "ingress" + + EndpointSpec: + description: "Properties that can be configured to access and load balance a service." + type: "object" + properties: + Mode: + description: | + The mode of resolution to use for internal load balancing between tasks. + type: "string" + enum: + - "vip" + - "dnsrr" + default: "vip" + Ports: + description: | + List of exposed ports that this service is accessible on from the + outside. Ports can only be provided if `vip` resolution mode is used. + type: "array" + items: + $ref: "#/definitions/EndpointPortConfig" + + Service: + type: "object" + properties: + ID: + type: "string" + Version: + $ref: "#/definitions/ObjectVersion" + CreatedAt: + type: "string" + format: "dateTime" + UpdatedAt: + type: "string" + format: "dateTime" + Spec: + $ref: "#/definitions/ServiceSpec" + Endpoint: + type: "object" + properties: + Spec: + $ref: "#/definitions/EndpointSpec" + Ports: + type: "array" + items: + $ref: "#/definitions/EndpointPortConfig" + VirtualIPs: + type: "array" + items: + type: "object" + properties: + NetworkID: + type: "string" + Addr: + type: "string" + UpdateStatus: + description: "The status of a service update." + type: "object" + properties: + State: + type: "string" + enum: + - "updating" + - "paused" + - "completed" + StartedAt: + type: "string" + format: "dateTime" + CompletedAt: + type: "string" + format: "dateTime" + Message: + type: "string" + ServiceStatus: + description: | + The status of the service's tasks. Provided only when requested as + part of a ServiceList operation. + type: "object" + properties: + RunningTasks: + description: | + The number of tasks for the service currently in the Running state. + type: "integer" + format: "uint64" + example: 7 + DesiredTasks: + description: | + The number of tasks for the service desired to be running. + For replicated services, this is the replica count from the + service spec. For global services, this is computed by taking + count of all tasks for the service with a Desired State other + than Shutdown. + type: "integer" + format: "uint64" + example: 10 + CompletedTasks: + description: | + The number of tasks for a job that are in the Completed state. + This field must be cross-referenced with the service type, as the + value of 0 may mean the service is not in a job mode, or it may + mean the job-mode service has no tasks yet Completed. + type: "integer" + format: "uint64" + JobStatus: + description: | + The status of the service when it is in one of ReplicatedJob or + GlobalJob modes. Absent on Replicated and Global mode services. The + JobIteration is an ObjectVersion, but unlike the Service's version, + does not need to be sent with an update request. + type: "object" + properties: + JobIteration: + description: | + JobIteration is a value increased each time a Job is executed, + successfully or otherwise. "Executed", in this case, means the + job as a whole has been started, not that an individual Task has + been launched. A job is "Executed" when its ServiceSpec is + updated. JobIteration can be used to disambiguate Tasks belonging + to different executions of a job. Though JobIteration will + increase with each subsequent execution, it may not necessarily + increase by 1, and so JobIteration should not be used to + $ref: "#/definitions/ObjectVersion" + LastExecution: + description: | + The last time, as observed by the server, that this job was + started. + type: "string" + format: "dateTime" + example: + ID: "9mnpnzenvg8p8tdbtq4wvbkcz" + Version: + Index: 19 + CreatedAt: "2016-06-07T21:05:51.880065305Z" + UpdatedAt: "2016-06-07T21:07:29.962229872Z" + Spec: + Name: "hopeful_cori" + TaskTemplate: + ContainerSpec: + Image: "redis" + Resources: + Limits: {} + Reservations: {} + RestartPolicy: + Condition: "any" + MaxAttempts: 0 + Placement: {} + ForceUpdate: 0 + Mode: + Replicated: + Replicas: 1 + UpdateConfig: + Parallelism: 1 + Delay: 1000000000 + FailureAction: "pause" + Monitor: 15000000000 + MaxFailureRatio: 0.15 + RollbackConfig: + Parallelism: 1 + Delay: 1000000000 + FailureAction: "pause" + Monitor: 15000000000 + MaxFailureRatio: 0.15 + EndpointSpec: + Mode: "vip" + Ports: + - + Protocol: "tcp" + TargetPort: 6379 + PublishedPort: 30001 + Endpoint: + Spec: + Mode: "vip" + Ports: + - + Protocol: "tcp" + TargetPort: 6379 + PublishedPort: 30001 + Ports: + - + Protocol: "tcp" + TargetPort: 6379 + PublishedPort: 30001 + VirtualIPs: + - + NetworkID: "4qvuz4ko70xaltuqbt8956gd1" + Addr: "10.255.0.2/16" + - + NetworkID: "4qvuz4ko70xaltuqbt8956gd1" + Addr: "10.255.0.3/16" + + ImageDeleteResponseItem: + type: "object" + properties: + Untagged: + description: "The image ID of an image that was untagged" + type: "string" + Deleted: + description: "The image ID of an image that was deleted" + type: "string" + + ServiceUpdateResponse: + type: "object" + properties: + Warnings: + description: "Optional warning messages" + type: "array" + items: + type: "string" + example: + Warning: "unable to pin image doesnotexist:latest to digest: image library/doesnotexist:latest not found" + + ContainerSummary: + type: "array" + items: + type: "object" + properties: + Id: + description: "The ID of this container" + type: "string" + x-go-name: "ID" + Names: + description: "The names that this container has been given" + type: "array" + items: + type: "string" + Image: + description: "The name of the image used when creating this container" + type: "string" + ImageID: + description: "The ID of the image that this container was created from" + type: "string" + Command: + description: "Command to run when starting the container" + type: "string" + Created: + description: "When the container was created" + type: "integer" + format: "int64" + Ports: + description: "The ports exposed by this container" + type: "array" + items: + $ref: "#/definitions/Port" + SizeRw: + description: "The size of files that have been created or changed by this container" + type: "integer" + format: "int64" + SizeRootFs: + description: "The total size of all the files in this container" + type: "integer" + format: "int64" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + State: + description: "The state of this container (e.g. `Exited`)" + type: "string" + Status: + description: "Additional human-readable status of this container (e.g. `Exit 0`)" + type: "string" + HostConfig: + type: "object" + properties: + NetworkMode: + type: "string" + NetworkSettings: + description: "A summary of the container's network settings" + type: "object" + properties: + Networks: + type: "object" + additionalProperties: + $ref: "#/definitions/EndpointSettings" + Mounts: + type: "array" + items: + $ref: "#/definitions/Mount" + + Driver: + description: "Driver represents a driver (network, logging, secrets)." + type: "object" + required: [Name] + properties: + Name: + description: "Name of the driver." + type: "string" + x-nullable: false + example: "some-driver" + Options: + description: "Key/value map of driver-specific options." + type: "object" + x-nullable: false + additionalProperties: + type: "string" + example: + OptionA: "value for driver-specific option A" + OptionB: "value for driver-specific option B" + + SecretSpec: + type: "object" + properties: + Name: + description: "User-defined name of the secret." + type: "string" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + example: + com.example.some-label: "some-value" + com.example.some-other-label: "some-other-value" + Data: + description: | + Base64-url-safe-encoded ([RFC 4648](https://tools.ietf.org/html/rfc4648#section-5)) + data to store as secret. + + This field is only used to _create_ a secret, and is not returned by + other endpoints. + type: "string" + example: "" + Driver: + description: | + Name of the secrets driver used to fetch the secret's value from an + external secret store. + $ref: "#/definitions/Driver" + Templating: + description: | + Templating driver, if applicable + + Templating controls whether and how to evaluate the config payload as + a template. If no driver is set, no templating is used. + $ref: "#/definitions/Driver" + + Secret: + type: "object" + properties: + ID: + type: "string" + example: "blt1owaxmitz71s9v5zh81zun" + Version: + $ref: "#/definitions/ObjectVersion" + CreatedAt: + type: "string" + format: "dateTime" + example: "2017-07-20T13:55:28.678958722Z" + UpdatedAt: + type: "string" + format: "dateTime" + example: "2017-07-20T13:55:28.678958722Z" + Spec: + $ref: "#/definitions/SecretSpec" + + ConfigSpec: + type: "object" + properties: + Name: + description: "User-defined name of the config." + type: "string" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + Data: + description: | + Base64-url-safe-encoded ([RFC 4648](https://tools.ietf.org/html/rfc4648#section-5)) + config data. + type: "string" + Templating: + description: | + Templating driver, if applicable + + Templating controls whether and how to evaluate the config payload as + a template. If no driver is set, no templating is used. + $ref: "#/definitions/Driver" + + Config: + type: "object" + properties: + ID: + type: "string" + Version: + $ref: "#/definitions/ObjectVersion" + CreatedAt: + type: "string" + format: "dateTime" + UpdatedAt: + type: "string" + format: "dateTime" + Spec: + $ref: "#/definitions/ConfigSpec" + + ContainerState: + description: | + ContainerState stores container's running state. It's part of ContainerJSONBase + and will be returned by the "inspect" command. + type: "object" + properties: + Status: + description: | + String representation of the container state. Can be one of "created", + "running", "paused", "restarting", "removing", "exited", or "dead". + type: "string" + enum: ["created", "running", "paused", "restarting", "removing", "exited", "dead"] + example: "running" + Running: + description: | + Whether this container is running. + + Note that a running container can be _paused_. The `Running` and `Paused` + booleans are not mutually exclusive: + + When pausing a container (on Linux), the freezer cgroup is used to suspend + all processes in the container. Freezing the process requires the process to + be running. As a result, paused containers are both `Running` _and_ `Paused`. + + Use the `Status` field instead to determine if a container's state is "running". + type: "boolean" + example: true + Paused: + description: "Whether this container is paused." + type: "boolean" + example: false + Restarting: + description: "Whether this container is restarting." + type: "boolean" + example: false + OOMKilled: + description: | + Whether this container has been killed because it ran out of memory. + type: "boolean" + example: false + Dead: + type: "boolean" + example: false + Pid: + description: "The process ID of this container" + type: "integer" + example: 1234 + ExitCode: + description: "The last exit code of this container" + type: "integer" + example: 0 + Error: + type: "string" + StartedAt: + description: "The time when this container was last started." + type: "string" + example: "2020-01-06T09:06:59.461876391Z" + FinishedAt: + description: "The time when this container last exited." + type: "string" + example: "2020-01-06T09:07:59.461876391Z" + Health: + x-nullable: true + $ref: "#/definitions/Health" + + SystemVersion: + type: "object" + description: | + Response of Engine API: GET "/version" + properties: + Platform: + type: "object" + required: [Name] + properties: + Name: + type: "string" + Components: + type: "array" + description: | + Information about system components + items: + type: "object" + x-go-name: ComponentVersion + required: [Name, Version] + properties: + Name: + description: | + Name of the component + type: "string" + example: "Engine" + Version: + description: | + Version of the component + type: "string" + x-nullable: false + example: "19.03.12" + Details: + description: | + Key/value pairs of strings with additional information about the + component. These values are intended for informational purposes + only, and their content is not defined, and not part of the API + specification. + + These messages can be printed by the client as information to the user. + type: "object" + x-nullable: true + Version: + description: "The version of the daemon" + type: "string" + example: "19.03.12" + ApiVersion: + description: | + The default (and highest) API version that is supported by the daemon + type: "string" + example: "1.40" + MinAPIVersion: + description: | + The minimum API version that is supported by the daemon + type: "string" + example: "1.12" + GitCommit: + description: | + The Git commit of the source code that was used to build the daemon + type: "string" + example: "48a66213fe" + GoVersion: + description: | + The version Go used to compile the daemon, and the version of the Go + runtime in use. + type: "string" + example: "go1.13.14" + Os: + description: | + The operating system that the daemon is running on ("linux" or "windows") + type: "string" + example: "linux" + Arch: + description: | + The architecture that the daemon is running on + type: "string" + example: "amd64" + KernelVersion: + description: | + The kernel version (`uname -r`) that the daemon is running on. + + This field is omitted when empty. + type: "string" + example: "4.19.76-linuxkit" + Experimental: + description: | + Indicates if the daemon is started with experimental features enabled. + + This field is omitted when empty / false. + type: "boolean" + example: true + BuildTime: + description: | + The date and time that the daemon was compiled. + type: "string" + example: "2020-06-22T15:49:27.000000000+00:00" + + + SystemInfo: + type: "object" + properties: + ID: + description: | + Unique identifier of the daemon. + +


+ + > **Note**: The format of the ID itself is not part of the API, and + > should not be considered stable. + type: "string" + example: "7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS" + Containers: + description: "Total number of containers on the host." + type: "integer" + example: 14 + ContainersRunning: + description: | + Number of containers with status `"running"`. + type: "integer" + example: 3 + ContainersPaused: + description: | + Number of containers with status `"paused"`. + type: "integer" + example: 1 + ContainersStopped: + description: | + Number of containers with status `"stopped"`. + type: "integer" + example: 10 + Images: + description: | + Total number of images on the host. + + Both _tagged_ and _untagged_ (dangling) images are counted. + type: "integer" + example: 508 + Driver: + description: "Name of the storage driver in use." + type: "string" + example: "overlay2" + DriverStatus: + description: | + Information specific to the storage driver, provided as + "label" / "value" pairs. + + This information is provided by the storage driver, and formatted + in a way consistent with the output of `docker info` on the command + line. + +


+ + > **Note**: The information returned in this field, including the + > formatting of values and labels, should not be considered stable, + > and may change without notice. + type: "array" + items: + type: "array" + items: + type: "string" + example: + - ["Backing Filesystem", "extfs"] + - ["Supports d_type", "true"] + - ["Native Overlay Diff", "true"] + DockerRootDir: + description: | + Root directory of persistent Docker state. + + Defaults to `/var/lib/docker` on Linux, and `C:\ProgramData\docker` + on Windows. + type: "string" + example: "/var/lib/docker" + Plugins: + $ref: "#/definitions/PluginsInfo" + MemoryLimit: + description: "Indicates if the host has memory limit support enabled." + type: "boolean" + example: true + SwapLimit: + description: "Indicates if the host has memory swap limit support enabled." + type: "boolean" + example: true + KernelMemory: + description: | + Indicates if the host has kernel memory limit support enabled. + +


+ + > **Deprecated**: This field is deprecated as the kernel 5.4 deprecated + > `kmem.limit_in_bytes`. + type: "boolean" + example: true + CpuCfsPeriod: + description: | + Indicates if CPU CFS(Completely Fair Scheduler) period is supported by + the host. + type: "boolean" + example: true + CpuCfsQuota: + description: | + Indicates if CPU CFS(Completely Fair Scheduler) quota is supported by + the host. + type: "boolean" + example: true + CPUShares: + description: | + Indicates if CPU Shares limiting is supported by the host. + type: "boolean" + example: true + CPUSet: + description: | + Indicates if CPUsets (cpuset.cpus, cpuset.mems) are supported by the host. + + See [cpuset(7)](https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt) + type: "boolean" + example: true + PidsLimit: + description: "Indicates if the host kernel has PID limit support enabled." + type: "boolean" + example: true + OomKillDisable: + description: "Indicates if OOM killer disable is supported on the host." + type: "boolean" + IPv4Forwarding: + description: "Indicates IPv4 forwarding is enabled." + type: "boolean" + example: true + BridgeNfIptables: + description: "Indicates if `bridge-nf-call-iptables` is available on the host." + type: "boolean" + example: true + BridgeNfIp6tables: + description: "Indicates if `bridge-nf-call-ip6tables` is available on the host." + type: "boolean" + example: true + Debug: + description: | + Indicates if the daemon is running in debug-mode / with debug-level + logging enabled. + type: "boolean" + example: true + NFd: + description: | + The total number of file Descriptors in use by the daemon process. + + This information is only returned if debug-mode is enabled. + type: "integer" + example: 64 + NGoroutines: + description: | + The number of goroutines that currently exist. + + This information is only returned if debug-mode is enabled. + type: "integer" + example: 174 + SystemTime: + description: | + Current system-time in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) + format with nano-seconds. + type: "string" + example: "2017-08-08T20:28:29.06202363Z" + LoggingDriver: + description: | + The logging driver to use as a default for new containers. + type: "string" + CgroupDriver: + description: | + The driver to use for managing cgroups. + type: "string" + enum: ["cgroupfs", "systemd", "none"] + default: "cgroupfs" + example: "cgroupfs" + CgroupVersion: + description: | + The version of the cgroup. + type: "string" + enum: ["1", "2"] + default: "1" + example: "1" + NEventsListener: + description: "Number of event listeners subscribed." + type: "integer" + example: 30 + KernelVersion: + description: | + Kernel version of the host. + + On Linux, this information obtained from `uname`. On Windows this + information is queried from the HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ + registry value, for example _"10.0 14393 (14393.1198.amd64fre.rs1_release_sec.170427-1353)"_. + type: "string" + example: "4.9.38-moby" + OperatingSystem: + description: | + Name of the host's operating system, for example: "Ubuntu 16.04.2 LTS" + or "Windows Server 2016 Datacenter" + type: "string" + example: "Alpine Linux v3.5" + OSVersion: + description: | + Version of the host's operating system + +


+ + > **Note**: The information returned in this field, including its + > very existence, and the formatting of values, should not be considered + > stable, and may change without notice. + type: "string" + example: "16.04" + OSType: + description: | + Generic type of the operating system of the host, as returned by the + Go runtime (`GOOS`). + + Currently returned values are "linux" and "windows". A full list of + possible values can be found in the [Go documentation](https://golang.org/doc/install/source#environment). + type: "string" + example: "linux" + Architecture: + description: | + Hardware architecture of the host, as returned by the Go runtime + (`GOARCH`). + + A full list of possible values can be found in the [Go documentation](https://golang.org/doc/install/source#environment). + type: "string" + example: "x86_64" + NCPU: + description: | + The number of logical CPUs usable by the daemon. + + The number of available CPUs is checked by querying the operating + system when the daemon starts. Changes to operating system CPU + allocation after the daemon is started are not reflected. + type: "integer" + example: 4 + MemTotal: + description: | + Total amount of physical memory available on the host, in bytes. + type: "integer" + format: "int64" + example: 2095882240 + + IndexServerAddress: + description: | + Address / URL of the index server that is used for image search, + and as a default for user authentication for Docker Hub and Docker Cloud. + default: "https://index.docker.io/v1/" + type: "string" + example: "https://index.docker.io/v1/" + RegistryConfig: + $ref: "#/definitions/RegistryServiceConfig" + GenericResources: + $ref: "#/definitions/GenericResources" + HttpProxy: + description: | + HTTP-proxy configured for the daemon. This value is obtained from the + [`HTTP_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable. + Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL + are masked in the API response. + + Containers do not automatically inherit this configuration. + type: "string" + example: "http://xxxxx:xxxxx@proxy.corp.example.com:8080" + HttpsProxy: + description: | + HTTPS-proxy configured for the daemon. This value is obtained from the + [`HTTPS_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable. + Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL + are masked in the API response. + + Containers do not automatically inherit this configuration. + type: "string" + example: "https://xxxxx:xxxxx@proxy.corp.example.com:4443" + NoProxy: + description: | + Comma-separated list of domain extensions for which no proxy should be + used. This value is obtained from the [`NO_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) + environment variable. + + Containers do not automatically inherit this configuration. + type: "string" + example: "*.local, 169.254/16" + Name: + description: "Hostname of the host." + type: "string" + example: "node5.corp.example.com" + Labels: + description: | + User-defined labels (key/value metadata) as set on the daemon. + +


+ + > **Note**: When part of a Swarm, nodes can both have _daemon_ labels, + > set through the daemon configuration, and _node_ labels, set from a + > manager node in the Swarm. Node labels are not included in this + > field. Node labels can be retrieved using the `/nodes/(id)` endpoint + > on a manager node in the Swarm. + type: "array" + items: + type: "string" + example: ["storage=ssd", "production"] + ExperimentalBuild: + description: | + Indicates if experimental features are enabled on the daemon. + type: "boolean" + example: true + ServerVersion: + description: | + Version string of the daemon. + + > **Note**: the [standalone Swarm API](https://docs.docker.com/swarm/swarm-api/) + > returns the Swarm version instead of the daemon version, for example + > `swarm/1.2.8`. + type: "string" + example: "17.06.0-ce" + ClusterStore: + description: | + URL of the distributed storage backend. + + + The storage backend is used for multihost networking (to store + network and endpoint information) and by the node discovery mechanism. + +


+ + > **Deprecated**: This field is only propagated when using standalone Swarm + > mode, and overlay networking using an external k/v store. Overlay + > networks with Swarm mode enabled use the built-in raft store, and + > this field will be empty. + type: "string" + example: "consul://consul.corp.example.com:8600/some/path" + ClusterAdvertise: + description: | + The network endpoint that the Engine advertises for the purpose of + node discovery. ClusterAdvertise is a `host:port` combination on which + the daemon is reachable by other hosts. + +


+ + > **Deprecated**: This field is only propagated when using standalone Swarm + > mode, and overlay networking using an external k/v store. Overlay + > networks with Swarm mode enabled use the built-in raft store, and + > this field will be empty. + type: "string" + example: "node5.corp.example.com:8000" + Runtimes: + description: | + List of [OCI compliant](https://github.com/opencontainers/runtime-spec) + runtimes configured on the daemon. Keys hold the "name" used to + reference the runtime. + + The Docker daemon relies on an OCI compliant runtime (invoked via the + `containerd` daemon) as its interface to the Linux kernel namespaces, + cgroups, and SELinux. + + The default runtime is `runc`, and automatically configured. Additional + runtimes can be configured by the user and will be listed here. + type: "object" + additionalProperties: + $ref: "#/definitions/Runtime" + default: + runc: + path: "runc" + example: + runc: + path: "runc" + runc-master: + path: "/go/bin/runc" + custom: + path: "/usr/local/bin/my-oci-runtime" + runtimeArgs: ["--debug", "--systemd-cgroup=false"] + DefaultRuntime: + description: | + Name of the default OCI runtime that is used when starting containers. + + The default can be overridden per-container at create time. + type: "string" + default: "runc" + example: "runc" + Swarm: + $ref: "#/definitions/SwarmInfo" + LiveRestoreEnabled: + description: | + Indicates if live restore is enabled. + + If enabled, containers are kept running when the daemon is shutdown + or upon daemon start if running containers are detected. + type: "boolean" + default: false + example: false + Isolation: + description: | + Represents the isolation technology to use as a default for containers. + The supported values are platform-specific. + + If no isolation value is specified on daemon start, on Windows client, + the default is `hyperv`, and on Windows server, the default is `process`. + + This option is currently not used on other platforms. + default: "default" + type: "string" + enum: + - "default" + - "hyperv" + - "process" + InitBinary: + description: | + Name and, optional, path of the `docker-init` binary. + + If the path is omitted, the daemon searches the host's `$PATH` for the + binary and uses the first result. + type: "string" + example: "docker-init" + ContainerdCommit: + $ref: "#/definitions/Commit" + RuncCommit: + $ref: "#/definitions/Commit" + InitCommit: + $ref: "#/definitions/Commit" + SecurityOptions: + description: | + List of security features that are enabled on the daemon, such as + apparmor, seccomp, SELinux, user-namespaces (userns), and rootless. + + Additional configuration options for each security feature may + be present, and are included as a comma-separated list of key/value + pairs. + type: "array" + items: + type: "string" + example: + - "name=apparmor" + - "name=seccomp,profile=default" + - "name=selinux" + - "name=userns" + - "name=rootless" + ProductLicense: + description: | + Reports a summary of the product license on the daemon. + + If a commercial license has been applied to the daemon, information + such as number of nodes, and expiration are included. + type: "string" + example: "Community Engine" + DefaultAddressPools: + description: | + List of custom default address pools for local networks, which can be + specified in the daemon.json file or dockerd option. + + Example: a Base "10.10.0.0/16" with Size 24 will define the set of 256 + 10.10.[0-255].0/24 address pools. + type: "array" + items: + type: "object" + properties: + Base: + description: "The network address in CIDR format" + type: "string" + example: "10.10.0.0/16" + Size: + description: "The network pool size" + type: "integer" + example: "24" + Warnings: + description: | + List of warnings / informational messages about missing features, or + issues related to the daemon configuration. + + These messages can be printed by the client as information to the user. + type: "array" + items: + type: "string" + example: + - "WARNING: No memory limit support" + - "WARNING: bridge-nf-call-iptables is disabled" + - "WARNING: bridge-nf-call-ip6tables is disabled" + + + # PluginsInfo is a temp struct holding Plugins name + # registered with docker daemon. It is used by Info struct + PluginsInfo: + description: | + Available plugins per type. + +


+ + > **Note**: Only unmanaged (V1) plugins are included in this list. + > V1 plugins are "lazily" loaded, and are not returned in this list + > if there is no resource using the plugin. + type: "object" + properties: + Volume: + description: "Names of available volume-drivers, and network-driver plugins." + type: "array" + items: + type: "string" + example: ["local"] + Network: + description: "Names of available network-drivers, and network-driver plugins." + type: "array" + items: + type: "string" + example: ["bridge", "host", "ipvlan", "macvlan", "null", "overlay"] + Authorization: + description: "Names of available authorization plugins." + type: "array" + items: + type: "string" + example: ["img-authz-plugin", "hbm"] + Log: + description: "Names of available logging-drivers, and logging-driver plugins." + type: "array" + items: + type: "string" + example: ["awslogs", "fluentd", "gcplogs", "gelf", "journald", "json-file", "logentries", "splunk", "syslog"] + + + RegistryServiceConfig: + description: | + RegistryServiceConfig stores daemon registry services configuration. + type: "object" + x-nullable: true + properties: + AllowNondistributableArtifactsCIDRs: + description: | + List of IP ranges to which nondistributable artifacts can be pushed, + using the CIDR syntax [RFC 4632](https://tools.ietf.org/html/4632). + + Some images (for example, Windows base images) contain artifacts + whose distribution is restricted by license. When these images are + pushed to a registry, restricted artifacts are not included. + + This configuration override this behavior, and enables the daemon to + push nondistributable artifacts to all registries whose resolved IP + address is within the subnet described by the CIDR syntax. + + This option is useful when pushing images containing + nondistributable artifacts to a registry on an air-gapped network so + hosts on that network can pull the images without connecting to + another server. + + > **Warning**: Nondistributable artifacts typically have restrictions + > on how and where they can be distributed and shared. Only use this + > feature to push artifacts to private registries and ensure that you + > are in compliance with any terms that cover redistributing + > nondistributable artifacts. + + type: "array" + items: + type: "string" + example: ["::1/128", "127.0.0.0/8"] + AllowNondistributableArtifactsHostnames: + description: | + List of registry hostnames to which nondistributable artifacts can be + pushed, using the format `[:]` or `[:]`. + + Some images (for example, Windows base images) contain artifacts + whose distribution is restricted by license. When these images are + pushed to a registry, restricted artifacts are not included. + + This configuration override this behavior for the specified + registries. + + This option is useful when pushing images containing + nondistributable artifacts to a registry on an air-gapped network so + hosts on that network can pull the images without connecting to + another server. + + > **Warning**: Nondistributable artifacts typically have restrictions + > on how and where they can be distributed and shared. Only use this + > feature to push artifacts to private registries and ensure that you + > are in compliance with any terms that cover redistributing + > nondistributable artifacts. + type: "array" + items: + type: "string" + example: ["registry.internal.corp.example.com:3000", "[2001:db8:a0b:12f0::1]:443"] + InsecureRegistryCIDRs: + description: | + List of IP ranges of insecure registries, using the CIDR syntax + ([RFC 4632](https://tools.ietf.org/html/4632)). Insecure registries + accept un-encrypted (HTTP) and/or untrusted (HTTPS with certificates + from unknown CAs) communication. + + By default, local registries (`127.0.0.0/8`) are configured as + insecure. All other registries are secure. Communicating with an + insecure registry is not possible if the daemon assumes that registry + is secure. + + This configuration override this behavior, insecure communication with + registries whose resolved IP address is within the subnet described by + the CIDR syntax. + + Registries can also be marked insecure by hostname. Those registries + are listed under `IndexConfigs` and have their `Secure` field set to + `false`. + + > **Warning**: Using this option can be useful when running a local + > registry, but introduces security vulnerabilities. This option + > should therefore ONLY be used for testing purposes. For increased + > security, users should add their CA to their system's list of trusted + > CAs instead of enabling this option. + type: "array" + items: + type: "string" + example: ["::1/128", "127.0.0.0/8"] + IndexConfigs: + type: "object" + additionalProperties: + $ref: "#/definitions/IndexInfo" + example: + "127.0.0.1:5000": + "Name": "127.0.0.1:5000" + "Mirrors": [] + "Secure": false + "Official": false + "[2001:db8:a0b:12f0::1]:80": + "Name": "[2001:db8:a0b:12f0::1]:80" + "Mirrors": [] + "Secure": false + "Official": false + "docker.io": + Name: "docker.io" + Mirrors: ["https://hub-mirror.corp.example.com:5000/"] + Secure: true + Official: true + "registry.internal.corp.example.com:3000": + Name: "registry.internal.corp.example.com:3000" + Mirrors: [] + Secure: false + Official: false + Mirrors: + description: | + List of registry URLs that act as a mirror for the official + (`docker.io`) registry. + + type: "array" + items: + type: "string" + example: + - "https://hub-mirror.corp.example.com:5000/" + - "https://[2001:db8:a0b:12f0::1]/" + + IndexInfo: + description: + IndexInfo contains information about a registry. + type: "object" + x-nullable: true + properties: + Name: + description: | + Name of the registry, such as "docker.io". + type: "string" + example: "docker.io" + Mirrors: + description: | + List of mirrors, expressed as URIs. + type: "array" + items: + type: "string" + example: + - "https://hub-mirror.corp.example.com:5000/" + - "https://registry-2.docker.io/" + - "https://registry-3.docker.io/" + Secure: + description: | + Indicates if the registry is part of the list of insecure + registries. + + If `false`, the registry is insecure. Insecure registries accept + un-encrypted (HTTP) and/or untrusted (HTTPS with certificates from + unknown CAs) communication. + + > **Warning**: Insecure registries can be useful when running a local + > registry. However, because its use creates security vulnerabilities + > it should ONLY be enabled for testing purposes. For increased + > security, users should add their CA to their system's list of + > trusted CAs instead of enabling this option. + type: "boolean" + example: true + Official: + description: | + Indicates whether this is an official registry (i.e., Docker Hub / docker.io) + type: "boolean" + example: true + + Runtime: + description: | + Runtime describes an [OCI compliant](https://github.com/opencontainers/runtime-spec) + runtime. + + The runtime is invoked by the daemon via the `containerd` daemon. OCI + runtimes act as an interface to the Linux kernel namespaces, cgroups, + and SELinux. + type: "object" + properties: + path: + description: | + Name and, optional, path, of the OCI executable binary. + + If the path is omitted, the daemon searches the host's `$PATH` for the + binary and uses the first result. + type: "string" + example: "/usr/local/bin/my-oci-runtime" + runtimeArgs: + description: | + List of command-line arguments to pass to the runtime when invoked. + type: "array" + x-nullable: true + items: + type: "string" + example: ["--debug", "--systemd-cgroup=false"] + + Commit: + description: | + Commit holds the Git-commit (SHA1) that a binary was built from, as + reported in the version-string of external tools, such as `containerd`, + or `runC`. + type: "object" + properties: + ID: + description: "Actual commit ID of external tool." + type: "string" + example: "cfb82a876ecc11b5ca0977d1733adbe58599088a" + Expected: + description: | + Commit ID of external tool expected by dockerd as set at build time. + type: "string" + example: "2d41c047c83e09a6d61d464906feb2a2f3c52aa4" + + SwarmInfo: + description: | + Represents generic information about swarm. + type: "object" + properties: + NodeID: + description: "Unique identifier of for this node in the swarm." + type: "string" + default: "" + example: "k67qz4598weg5unwwffg6z1m1" + NodeAddr: + description: | + IP address at which this node can be reached by other nodes in the + swarm. + type: "string" + default: "" + example: "10.0.0.46" + LocalNodeState: + $ref: "#/definitions/LocalNodeState" + ControlAvailable: + type: "boolean" + default: false + example: true + Error: + type: "string" + default: "" + RemoteManagers: + description: | + List of ID's and addresses of other managers in the swarm. + type: "array" + default: null + x-nullable: true + items: + $ref: "#/definitions/PeerNode" + example: + - NodeID: "71izy0goik036k48jg985xnds" + Addr: "10.0.0.158:2377" + - NodeID: "79y6h1o4gv8n120drcprv5nmc" + Addr: "10.0.0.159:2377" + - NodeID: "k67qz4598weg5unwwffg6z1m1" + Addr: "10.0.0.46:2377" + Nodes: + description: "Total number of nodes in the swarm." + type: "integer" + x-nullable: true + example: 4 + Managers: + description: "Total number of managers in the swarm." + type: "integer" + x-nullable: true + example: 3 + Cluster: + $ref: "#/definitions/ClusterInfo" + + LocalNodeState: + description: "Current local status of this node." + type: "string" + default: "" + enum: + - "" + - "inactive" + - "pending" + - "active" + - "error" + - "locked" + example: "active" + + PeerNode: + description: "Represents a peer-node in the swarm" + properties: + NodeID: + description: "Unique identifier of for this node in the swarm." + type: "string" + Addr: + description: | + IP address and ports at which this node can be reached. + type: "string" + + NetworkAttachmentConfig: + description: | + Specifies how a service should be attached to a particular network. + type: "object" + properties: + Target: + description: | + The target network for attachment. Must be a network name or ID. + type: "string" + Aliases: + description: | + Discoverable alternate names for the service on this network. + type: "array" + items: + type: "string" + DriverOpts: + description: | + Driver attachment options for the network target. + type: "object" + additionalProperties: + type: "string" + +paths: + /containers/json: + get: + summary: "List containers" + description: | + Returns a list of containers. For details on the format, see the + [inspect endpoint](#operation/ContainerInspect). + + Note that it uses a different, smaller representation of a container + than inspecting a single container. For example, the list of linked + containers is not propagated . + operationId: "ContainerList" + produces: + - "application/json" + parameters: + - name: "all" + in: "query" + description: | + Return all containers. By default, only running containers are shown. + type: "boolean" + default: false + - name: "limit" + in: "query" + description: | + Return this number of most recently created containers, including + non-running ones. + type: "integer" + - name: "size" + in: "query" + description: | + Return the size of container as fields `SizeRw` and `SizeRootFs`. + type: "boolean" + default: false + - name: "filters" + in: "query" + description: | + Filters to process on the container list, encoded as JSON (a + `map[string][]string`). For example, `{"status": ["paused"]}` will + only return paused containers. + + Available filters: + + - `ancestor`=(`[:]`, ``, or ``) + - `before`=(`` or ``) + - `expose`=(`[/]`|`/[]`) + - `exited=` containers with exit code of `` + - `health`=(`starting`|`healthy`|`unhealthy`|`none`) + - `id=` a container's ID + - `isolation=`(`default`|`process`|`hyperv`) (Windows daemon only) + - `is-task=`(`true`|`false`) + - `label=key` or `label="key=value"` of a container label + - `name=` a container's name + - `network`=(`` or ``) + - `publish`=(`[/]`|`/[]`) + - `since`=(`` or ``) + - `status=`(`created`|`restarting`|`running`|`removing`|`paused`|`exited`|`dead`) + - `volume`=(`` or ``) + type: "string" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/ContainerSummary" + examples: + application/json: + - Id: "8dfafdbc3a40" + Names: + - "/boring_feynman" + Image: "ubuntu:latest" + ImageID: "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82" + Command: "echo 1" + Created: 1367854155 + State: "Exited" + Status: "Exit 0" + Ports: + - PrivatePort: 2222 + PublicPort: 3333 + Type: "tcp" + Labels: + com.example.vendor: "Acme" + com.example.license: "GPL" + com.example.version: "1.0" + SizeRw: 12288 + SizeRootFs: 0 + HostConfig: + NetworkMode: "default" + NetworkSettings: + Networks: + bridge: + NetworkID: "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812" + EndpointID: "2cdc4edb1ded3631c81f57966563e5c8525b81121bb3706a9a9a3ae102711f3f" + Gateway: "172.17.0.1" + IPAddress: "172.17.0.2" + IPPrefixLen: 16 + IPv6Gateway: "" + GlobalIPv6Address: "" + GlobalIPv6PrefixLen: 0 + MacAddress: "02:42:ac:11:00:02" + Mounts: + - Name: "fac362...80535" + Source: "/data" + Destination: "/data" + Driver: "local" + Mode: "ro,Z" + RW: false + Propagation: "" + - Id: "9cd87474be90" + Names: + - "/coolName" + Image: "ubuntu:latest" + ImageID: "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82" + Command: "echo 222222" + Created: 1367854155 + State: "Exited" + Status: "Exit 0" + Ports: [] + Labels: {} + SizeRw: 12288 + SizeRootFs: 0 + HostConfig: + NetworkMode: "default" + NetworkSettings: + Networks: + bridge: + NetworkID: "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812" + EndpointID: "88eaed7b37b38c2a3f0c4bc796494fdf51b270c2d22656412a2ca5d559a64d7a" + Gateway: "172.17.0.1" + IPAddress: "172.17.0.8" + IPPrefixLen: 16 + IPv6Gateway: "" + GlobalIPv6Address: "" + GlobalIPv6PrefixLen: 0 + MacAddress: "02:42:ac:11:00:08" + Mounts: [] + - Id: "3176a2479c92" + Names: + - "/sleepy_dog" + Image: "ubuntu:latest" + ImageID: "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82" + Command: "echo 3333333333333333" + Created: 1367854154 + State: "Exited" + Status: "Exit 0" + Ports: [] + Labels: {} + SizeRw: 12288 + SizeRootFs: 0 + HostConfig: + NetworkMode: "default" + NetworkSettings: + Networks: + bridge: + NetworkID: "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812" + EndpointID: "8b27c041c30326d59cd6e6f510d4f8d1d570a228466f956edf7815508f78e30d" + Gateway: "172.17.0.1" + IPAddress: "172.17.0.6" + IPPrefixLen: 16 + IPv6Gateway: "" + GlobalIPv6Address: "" + GlobalIPv6PrefixLen: 0 + MacAddress: "02:42:ac:11:00:06" + Mounts: [] + - Id: "4cb07b47f9fb" + Names: + - "/running_cat" + Image: "ubuntu:latest" + ImageID: "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82" + Command: "echo 444444444444444444444444444444444" + Created: 1367854152 + State: "Exited" + Status: "Exit 0" + Ports: [] + Labels: {} + SizeRw: 12288 + SizeRootFs: 0 + HostConfig: + NetworkMode: "default" + NetworkSettings: + Networks: + bridge: + NetworkID: "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812" + EndpointID: "d91c7b2f0644403d7ef3095985ea0e2370325cd2332ff3a3225c4247328e66e9" + Gateway: "172.17.0.1" + IPAddress: "172.17.0.5" + IPPrefixLen: 16 + IPv6Gateway: "" + GlobalIPv6Address: "" + GlobalIPv6PrefixLen: 0 + MacAddress: "02:42:ac:11:00:05" + Mounts: [] + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Container"] + /containers/create: + post: + summary: "Create a container" + operationId: "ContainerCreate" + consumes: + - "application/json" + - "application/octet-stream" + produces: + - "application/json" + parameters: + - name: "name" + in: "query" + description: | + Assign the specified name to the container. Must match + `/?[a-zA-Z0-9][a-zA-Z0-9_.-]+`. + type: "string" + pattern: "^/?[a-zA-Z0-9][a-zA-Z0-9_.-]+$" + - name: "body" + in: "body" + description: "Container to create" + schema: + allOf: + - $ref: "#/definitions/ContainerConfig" + - type: "object" + properties: + HostConfig: + $ref: "#/definitions/HostConfig" + NetworkingConfig: + $ref: "#/definitions/NetworkingConfig" + example: + Hostname: "" + Domainname: "" + User: "" + AttachStdin: false + AttachStdout: true + AttachStderr: true + Tty: false + OpenStdin: false + StdinOnce: false + Env: + - "FOO=bar" + - "BAZ=quux" + Cmd: + - "date" + Entrypoint: "" + Image: "ubuntu" + Labels: + com.example.vendor: "Acme" + com.example.license: "GPL" + com.example.version: "1.0" + Volumes: + /volumes/data: {} + WorkingDir: "" + NetworkDisabled: false + MacAddress: "12:34:56:78:9a:bc" + ExposedPorts: + 22/tcp: {} + StopSignal: "SIGTERM" + StopTimeout: 10 + HostConfig: + Binds: + - "/tmp:/tmp" + Links: + - "redis3:redis" + Memory: 0 + MemorySwap: 0 + MemoryReservation: 0 + KernelMemory: 0 + NanoCpus: 500000 + CpuPercent: 80 + CpuShares: 512 + CpuPeriod: 100000 + CpuRealtimePeriod: 1000000 + CpuRealtimeRuntime: 10000 + CpuQuota: 50000 + CpusetCpus: "0,1" + CpusetMems: "0,1" + MaximumIOps: 0 + MaximumIOBps: 0 + BlkioWeight: 300 + BlkioWeightDevice: + - {} + BlkioDeviceReadBps: + - {} + BlkioDeviceReadIOps: + - {} + BlkioDeviceWriteBps: + - {} + BlkioDeviceWriteIOps: + - {} + DeviceRequests: + - Driver: "nvidia" + Count: -1 + DeviceIDs": ["0", "1", "GPU-fef8089b-4820-abfc-e83e-94318197576e"] + Capabilities: [["gpu", "nvidia", "compute"]] + Options: + property1: "string" + property2: "string" + MemorySwappiness: 60 + OomKillDisable: false + OomScoreAdj: 500 + PidMode: "" + PidsLimit: 0 + PortBindings: + 22/tcp: + - HostPort: "11022" + PublishAllPorts: false + Privileged: false + ReadonlyRootfs: false + Dns: + - "8.8.8.8" + DnsOptions: + - "" + DnsSearch: + - "" + VolumesFrom: + - "parent" + - "other:ro" + CapAdd: + - "NET_ADMIN" + CapDrop: + - "MKNOD" + GroupAdd: + - "newgroup" + RestartPolicy: + Name: "" + MaximumRetryCount: 0 + AutoRemove: true + NetworkMode: "bridge" + Devices: [] + Ulimits: + - {} + LogConfig: + Type: "json-file" + Config: {} + SecurityOpt: [] + StorageOpt: {} + CgroupParent: "" + VolumeDriver: "" + ShmSize: 67108864 + NetworkingConfig: + EndpointsConfig: + isolated_nw: + IPAMConfig: + IPv4Address: "172.20.30.33" + IPv6Address: "2001:db8:abcd::3033" + LinkLocalIPs: + - "169.254.34.68" + - "fe80::3468" + Links: + - "container_1" + - "container_2" + Aliases: + - "server_x" + - "server_y" + + required: true + responses: + 201: + description: "Container created successfully" + schema: + type: "object" + title: "ContainerCreateResponse" + description: "OK response to ContainerCreate operation" + required: [Id, Warnings] + properties: + Id: + description: "The ID of the created container" + type: "string" + x-nullable: false + Warnings: + description: "Warnings encountered when creating the container" + type: "array" + x-nullable: false + items: + type: "string" + examples: + application/json: + Id: "e90e34656806" + Warnings: [] + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 409: + description: "conflict" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Container"] + /containers/{id}/json: + get: + summary: "Inspect a container" + description: "Return low-level information about a container." + operationId: "ContainerInspect" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + type: "object" + title: "ContainerInspectResponse" + properties: + Id: + description: "The ID of the container" + type: "string" + Created: + description: "The time the container was created" + type: "string" + Path: + description: "The path to the command being run" + type: "string" + Args: + description: "The arguments to the command being run" + type: "array" + items: + type: "string" + State: + x-nullable: true + $ref: "#/definitions/ContainerState" + Image: + description: "The container's image ID" + type: "string" + ResolvConfPath: + type: "string" + HostnamePath: + type: "string" + HostsPath: + type: "string" + LogPath: + type: "string" + Name: + type: "string" + RestartCount: + type: "integer" + Driver: + type: "string" + Platform: + type: "string" + MountLabel: + type: "string" + ProcessLabel: + type: "string" + AppArmorProfile: + type: "string" + ExecIDs: + description: "IDs of exec instances that are running in the container." + type: "array" + items: + type: "string" + x-nullable: true + HostConfig: + $ref: "#/definitions/HostConfig" + GraphDriver: + $ref: "#/definitions/GraphDriverData" + SizeRw: + description: | + The size of files that have been created or changed by this + container. + type: "integer" + format: "int64" + SizeRootFs: + description: "The total size of all the files in this container." + type: "integer" + format: "int64" + Mounts: + type: "array" + items: + $ref: "#/definitions/MountPoint" + Config: + $ref: "#/definitions/ContainerConfig" + NetworkSettings: + $ref: "#/definitions/NetworkSettings" + examples: + application/json: + AppArmorProfile: "" + Args: + - "-c" + - "exit 9" + Config: + AttachStderr: true + AttachStdin: false + AttachStdout: true + Cmd: + - "/bin/sh" + - "-c" + - "exit 9" + Domainname: "" + Env: + - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + Healthcheck: + Test: ["CMD-SHELL", "exit 0"] + Hostname: "ba033ac44011" + Image: "ubuntu" + Labels: + com.example.vendor: "Acme" + com.example.license: "GPL" + com.example.version: "1.0" + MacAddress: "" + NetworkDisabled: false + OpenStdin: false + StdinOnce: false + Tty: false + User: "" + Volumes: + /volumes/data: {} + WorkingDir: "" + StopSignal: "SIGTERM" + StopTimeout: 10 + Created: "2015-01-06T15:47:31.485331387Z" + Driver: "devicemapper" + ExecIDs: + - "b35395de42bc8abd327f9dd65d913b9ba28c74d2f0734eeeae84fa1c616a0fca" + - "3fc1232e5cd20c8de182ed81178503dc6437f4e7ef12b52cc5e8de020652f1c4" + HostConfig: + MaximumIOps: 0 + MaximumIOBps: 0 + BlkioWeight: 0 + BlkioWeightDevice: + - {} + BlkioDeviceReadBps: + - {} + BlkioDeviceWriteBps: + - {} + BlkioDeviceReadIOps: + - {} + BlkioDeviceWriteIOps: + - {} + ContainerIDFile: "" + CpusetCpus: "" + CpusetMems: "" + CpuPercent: 80 + CpuShares: 0 + CpuPeriod: 100000 + CpuRealtimePeriod: 1000000 + CpuRealtimeRuntime: 10000 + Devices: [] + DeviceRequests: + - Driver: "nvidia" + Count: -1 + DeviceIDs": ["0", "1", "GPU-fef8089b-4820-abfc-e83e-94318197576e"] + Capabilities: [["gpu", "nvidia", "compute"]] + Options: + property1: "string" + property2: "string" + IpcMode: "" + LxcConf: [] + Memory: 0 + MemorySwap: 0 + MemoryReservation: 0 + KernelMemory: 0 + OomKillDisable: false + OomScoreAdj: 500 + NetworkMode: "bridge" + PidMode: "" + PortBindings: {} + Privileged: false + ReadonlyRootfs: false + PublishAllPorts: false + RestartPolicy: + MaximumRetryCount: 2 + Name: "on-failure" + LogConfig: + Type: "json-file" + Sysctls: + net.ipv4.ip_forward: "1" + Ulimits: + - {} + VolumeDriver: "" + ShmSize: 67108864 + HostnamePath: "/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/hostname" + HostsPath: "/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/hosts" + LogPath: "/var/lib/docker/containers/1eb5fabf5a03807136561b3c00adcd2992b535d624d5e18b6cdc6a6844d9767b/1eb5fabf5a03807136561b3c00adcd2992b535d624d5e18b6cdc6a6844d9767b-json.log" + Id: "ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39" + Image: "04c5d3b7b0656168630d3ba35d8889bd0e9caafcaeb3004d2bfbc47e7c5d35d2" + MountLabel: "" + Name: "/boring_euclid" + NetworkSettings: + Bridge: "" + SandboxID: "" + HairpinMode: false + LinkLocalIPv6Address: "" + LinkLocalIPv6PrefixLen: 0 + SandboxKey: "" + EndpointID: "" + Gateway: "" + GlobalIPv6Address: "" + GlobalIPv6PrefixLen: 0 + IPAddress: "" + IPPrefixLen: 0 + IPv6Gateway: "" + MacAddress: "" + Networks: + bridge: + NetworkID: "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812" + EndpointID: "7587b82f0dada3656fda26588aee72630c6fab1536d36e394b2bfbcf898c971d" + Gateway: "172.17.0.1" + IPAddress: "172.17.0.2" + IPPrefixLen: 16 + IPv6Gateway: "" + GlobalIPv6Address: "" + GlobalIPv6PrefixLen: 0 + MacAddress: "02:42:ac:12:00:02" + Path: "/bin/sh" + ProcessLabel: "" + ResolvConfPath: "/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/resolv.conf" + RestartCount: 1 + State: + Error: "" + ExitCode: 9 + FinishedAt: "2015-01-06T15:47:32.080254511Z" + Health: + Status: "healthy" + FailingStreak: 0 + Log: + - Start: "2019-12-22T10:59:05.6385933Z" + End: "2019-12-22T10:59:05.8078452Z" + ExitCode: 0 + Output: "" + OOMKilled: false + Dead: false + Paused: false + Pid: 0 + Restarting: false + Running: true + StartedAt: "2015-01-06T15:47:32.072697474Z" + Status: "running" + Mounts: + - Name: "fac362...80535" + Source: "/data" + Destination: "/data" + Driver: "local" + Mode: "ro,Z" + RW: false + Propagation: "" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "size" + in: "query" + type: "boolean" + default: false + description: "Return the size of container as fields `SizeRw` and `SizeRootFs`" + tags: ["Container"] + /containers/{id}/top: + get: + summary: "List processes running inside a container" + description: | + On Unix systems, this is done by running the `ps` command. This endpoint + is not supported on Windows. + operationId: "ContainerTop" + responses: + 200: + description: "no error" + schema: + type: "object" + title: "ContainerTopResponse" + description: "OK response to ContainerTop operation" + properties: + Titles: + description: "The ps column titles" + type: "array" + items: + type: "string" + Processes: + description: | + Each process running in the container, where each is process + is an array of values corresponding to the titles. + type: "array" + items: + type: "array" + items: + type: "string" + examples: + application/json: + Titles: + - "UID" + - "PID" + - "PPID" + - "C" + - "STIME" + - "TTY" + - "TIME" + - "CMD" + Processes: + - + - "root" + - "13642" + - "882" + - "0" + - "17:03" + - "pts/0" + - "00:00:00" + - "/bin/bash" + - + - "root" + - "13735" + - "13642" + - "0" + - "17:06" + - "pts/0" + - "00:00:00" + - "sleep 10" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "ps_args" + in: "query" + description: "The arguments to pass to `ps`. For example, `aux`" + type: "string" + default: "-ef" + tags: ["Container"] + /containers/{id}/logs: + get: + summary: "Get container logs" + description: | + Get `stdout` and `stderr` logs from a container. + + Note: This endpoint works only for containers with the `json-file` or + `journald` logging driver. + operationId: "ContainerLogs" + responses: + 200: + description: | + logs returned as a stream in response body. + For the stream format, [see the documentation for the attach endpoint](#operation/ContainerAttach). + Note that unlike the attach endpoint, the logs endpoint does not + upgrade the connection and does not set Content-Type. + schema: + type: "string" + format: "binary" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "follow" + in: "query" + description: "Keep connection after returning logs." + type: "boolean" + default: false + - name: "stdout" + in: "query" + description: "Return logs from `stdout`" + type: "boolean" + default: false + - name: "stderr" + in: "query" + description: "Return logs from `stderr`" + type: "boolean" + default: false + - name: "since" + in: "query" + description: "Only return logs since this time, as a UNIX timestamp" + type: "integer" + default: 0 + - name: "until" + in: "query" + description: "Only return logs before this time, as a UNIX timestamp" + type: "integer" + default: 0 + - name: "timestamps" + in: "query" + description: "Add timestamps to every log line" + type: "boolean" + default: false + - name: "tail" + in: "query" + description: | + Only return this number of log lines from the end of the logs. + Specify as an integer or `all` to output all log lines. + type: "string" + default: "all" + tags: ["Container"] + /containers/{id}/changes: + get: + summary: "Get changes on a container’s filesystem" + description: | + Returns which files in a container's filesystem have been added, deleted, + or modified. The `Kind` of modification can be one of: + + - `0`: Modified + - `1`: Added + - `2`: Deleted + operationId: "ContainerChanges" + produces: ["application/json"] + responses: + 200: + description: "The list of changes" + schema: + type: "array" + items: + type: "object" + x-go-name: "ContainerChangeResponseItem" + title: "ContainerChangeResponseItem" + description: "change item in response to ContainerChanges operation" + required: [Path, Kind] + properties: + Path: + description: "Path to file that has changed" + type: "string" + x-nullable: false + Kind: + description: "Kind of change" + type: "integer" + format: "uint8" + enum: [0, 1, 2] + x-nullable: false + examples: + application/json: + - Path: "/dev" + Kind: 0 + - Path: "/dev/kmsg" + Kind: 1 + - Path: "/test" + Kind: 1 + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + tags: ["Container"] + /containers/{id}/export: + get: + summary: "Export a container" + description: "Export the contents of a container as a tarball." + operationId: "ContainerExport" + produces: + - "application/octet-stream" + responses: + 200: + description: "no error" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + tags: ["Container"] + /containers/{id}/stats: + get: + summary: "Get container stats based on resource usage" + description: | + This endpoint returns a live stream of a container’s resource usage + statistics. + + The `precpu_stats` is the CPU statistic of the *previous* read, and is + used to calculate the CPU usage percentage. It is not an exact copy + of the `cpu_stats` field. + + If either `precpu_stats.online_cpus` or `cpu_stats.online_cpus` is + nil then for compatibility with older daemons the length of the + corresponding `cpu_usage.percpu_usage` array should be used. + + On a cgroup v2 host, the following fields are not set + * `blkio_stats`: all fields other than `io_service_bytes_recursive` + * `cpu_stats`: `cpu_usage.percpu_usage` + * `memory_stats`: `max_usage` and `failcnt` + Also, `memory_stats.stats` fields are incompatible with cgroup v1. + + To calculate the values shown by the `stats` command of the docker cli tool + the following formulas can be used: + * used_memory = `memory_stats.usage - memory_stats.stats.cache` + * available_memory = `memory_stats.limit` + * Memory usage % = `(used_memory / available_memory) * 100.0` + * cpu_delta = `cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage` + * system_cpu_delta = `cpu_stats.system_cpu_usage - precpu_stats.system_cpu_usage` + * number_cpus = `lenght(cpu_stats.cpu_usage.percpu_usage)` or `cpu_stats.online_cpus` + * CPU usage % = `(cpu_delta / system_cpu_delta) * number_cpus * 100.0` + operationId: "ContainerStats" + produces: ["application/json"] + responses: + 200: + description: "no error" + schema: + type: "object" + examples: + application/json: + read: "2015-01-08T22:57:31.547920715Z" + pids_stats: + current: 3 + networks: + eth0: + rx_bytes: 5338 + rx_dropped: 0 + rx_errors: 0 + rx_packets: 36 + tx_bytes: 648 + tx_dropped: 0 + tx_errors: 0 + tx_packets: 8 + eth5: + rx_bytes: 4641 + rx_dropped: 0 + rx_errors: 0 + rx_packets: 26 + tx_bytes: 690 + tx_dropped: 0 + tx_errors: 0 + tx_packets: 9 + memory_stats: + stats: + total_pgmajfault: 0 + cache: 0 + mapped_file: 0 + total_inactive_file: 0 + pgpgout: 414 + rss: 6537216 + total_mapped_file: 0 + writeback: 0 + unevictable: 0 + pgpgin: 477 + total_unevictable: 0 + pgmajfault: 0 + total_rss: 6537216 + total_rss_huge: 6291456 + total_writeback: 0 + total_inactive_anon: 0 + rss_huge: 6291456 + hierarchical_memory_limit: 67108864 + total_pgfault: 964 + total_active_file: 0 + active_anon: 6537216 + total_active_anon: 6537216 + total_pgpgout: 414 + total_cache: 0 + inactive_anon: 0 + active_file: 0 + pgfault: 964 + inactive_file: 0 + total_pgpgin: 477 + max_usage: 6651904 + usage: 6537216 + failcnt: 0 + limit: 67108864 + blkio_stats: {} + cpu_stats: + cpu_usage: + percpu_usage: + - 8646879 + - 24472255 + - 36438778 + - 30657443 + usage_in_usermode: 50000000 + total_usage: 100215355 + usage_in_kernelmode: 30000000 + system_cpu_usage: 739306590000000 + online_cpus: 4 + throttling_data: + periods: 0 + throttled_periods: 0 + throttled_time: 0 + precpu_stats: + cpu_usage: + percpu_usage: + - 8646879 + - 24350896 + - 36438778 + - 30657443 + usage_in_usermode: 50000000 + total_usage: 100093996 + usage_in_kernelmode: 30000000 + system_cpu_usage: 9492140000000 + online_cpus: 4 + throttling_data: + periods: 0 + throttled_periods: 0 + throttled_time: 0 + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "stream" + in: "query" + description: | + Stream the output. If false, the stats will be output once and then + it will disconnect. + type: "boolean" + default: true + - name: "one-shot" + in: "query" + description: | + Only get a single stat instead of waiting for 2 cycles. Must be used + with `stream=false`. + type: "boolean" + default: false + tags: ["Container"] + /containers/{id}/resize: + post: + summary: "Resize a container TTY" + description: "Resize the TTY for a container." + operationId: "ContainerResize" + consumes: + - "application/octet-stream" + produces: + - "text/plain" + responses: + 200: + description: "no error" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "cannot resize container" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "h" + in: "query" + description: "Height of the TTY session in characters" + type: "integer" + - name: "w" + in: "query" + description: "Width of the TTY session in characters" + type: "integer" + tags: ["Container"] + /containers/{id}/start: + post: + summary: "Start a container" + operationId: "ContainerStart" + responses: + 204: + description: "no error" + 304: + description: "container already started" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "detachKeys" + in: "query" + description: | + Override the key sequence for detaching a container. Format is a + single character `[a-Z]` or `ctrl-` where `` is one + of: `a-z`, `@`, `^`, `[`, `,` or `_`. + type: "string" + tags: ["Container"] + /containers/{id}/stop: + post: + summary: "Stop a container" + operationId: "ContainerStop" + responses: + 204: + description: "no error" + 304: + description: "container already stopped" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "t" + in: "query" + description: "Number of seconds to wait before killing the container" + type: "integer" + tags: ["Container"] + /containers/{id}/restart: + post: + summary: "Restart a container" + operationId: "ContainerRestart" + responses: + 204: + description: "no error" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "t" + in: "query" + description: "Number of seconds to wait before killing the container" + type: "integer" + tags: ["Container"] + /containers/{id}/kill: + post: + summary: "Kill a container" + description: | + Send a POSIX signal to a container, defaulting to killing to the + container. + operationId: "ContainerKill" + responses: + 204: + description: "no error" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 409: + description: "container is not running" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "Container d37cde0fe4ad63c3a7252023b2f9800282894247d145cb5933ddf6e52cc03a28 is not running" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "signal" + in: "query" + description: "Signal to send to the container as an integer or string (e.g. `SIGINT`)" + type: "string" + default: "SIGKILL" + tags: ["Container"] + /containers/{id}/update: + post: + summary: "Update a container" + description: | + Change various configuration options of a container without having to + recreate it. + operationId: "ContainerUpdate" + consumes: ["application/json"] + produces: ["application/json"] + responses: + 200: + description: "The container has been updated." + schema: + type: "object" + title: "ContainerUpdateResponse" + description: "OK response to ContainerUpdate operation" + properties: + Warnings: + type: "array" + items: + type: "string" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "update" + in: "body" + required: true + schema: + allOf: + - $ref: "#/definitions/Resources" + - type: "object" + properties: + RestartPolicy: + $ref: "#/definitions/RestartPolicy" + example: + BlkioWeight: 300 + CpuShares: 512 + CpuPeriod: 100000 + CpuQuota: 50000 + CpuRealtimePeriod: 1000000 + CpuRealtimeRuntime: 10000 + CpusetCpus: "0,1" + CpusetMems: "0" + Memory: 314572800 + MemorySwap: 514288000 + MemoryReservation: 209715200 + KernelMemory: 52428800 + RestartPolicy: + MaximumRetryCount: 4 + Name: "on-failure" + tags: ["Container"] + /containers/{id}/rename: + post: + summary: "Rename a container" + operationId: "ContainerRename" + responses: + 204: + description: "no error" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 409: + description: "name already in use" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "name" + in: "query" + required: true + description: "New name for the container" + type: "string" + tags: ["Container"] + /containers/{id}/pause: + post: + summary: "Pause a container" + description: | + Use the freezer cgroup to suspend all processes in a container. + + Traditionally, when suspending a process the `SIGSTOP` signal is used, + which is observable by the process being suspended. With the freezer + cgroup the process is unaware, and unable to capture, that it is being + suspended, and subsequently resumed. + operationId: "ContainerPause" + responses: + 204: + description: "no error" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + tags: ["Container"] + /containers/{id}/unpause: + post: + summary: "Unpause a container" + description: "Resume a container which has been paused." + operationId: "ContainerUnpause" + responses: + 204: + description: "no error" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + tags: ["Container"] + /containers/{id}/attach: + post: + summary: "Attach to a container" + description: | + Attach to a container to read its output or send it input. You can attach + to the same container multiple times and you can reattach to containers + that have been detached. + + Either the `stream` or `logs` parameter must be `true` for this endpoint + to do anything. + + See the [documentation for the `docker attach` command](https://docs.docker.com/engine/reference/commandline/attach/) + for more details. + + ### Hijacking + + This endpoint hijacks the HTTP connection to transport `stdin`, `stdout`, + and `stderr` on the same socket. + + This is the response from the daemon for an attach request: + + ``` + HTTP/1.1 200 OK + Content-Type: application/vnd.docker.raw-stream + + [STREAM] + ``` + + After the headers and two new lines, the TCP connection can now be used + for raw, bidirectional communication between the client and server. + + To hint potential proxies about connection hijacking, the Docker client + can also optionally send connection upgrade headers. + + For example, the client sends this request to upgrade the connection: + + ``` + POST /containers/16253994b7c4/attach?stream=1&stdout=1 HTTP/1.1 + Upgrade: tcp + Connection: Upgrade + ``` + + The Docker daemon will respond with a `101 UPGRADED` response, and will + similarly follow with the raw stream: + + ``` + HTTP/1.1 101 UPGRADED + Content-Type: application/vnd.docker.raw-stream + Connection: Upgrade + Upgrade: tcp + + [STREAM] + ``` + + ### Stream format + + When the TTY setting is disabled in [`POST /containers/create`](#operation/ContainerCreate), + the stream over the hijacked connected is multiplexed to separate out + `stdout` and `stderr`. The stream consists of a series of frames, each + containing a header and a payload. + + The header contains the information which the stream writes (`stdout` or + `stderr`). It also contains the size of the associated frame encoded in + the last four bytes (`uint32`). + + It is encoded on the first eight bytes like this: + + ```go + header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4} + ``` + + `STREAM_TYPE` can be: + + - 0: `stdin` (is written on `stdout`) + - 1: `stdout` + - 2: `stderr` + + `SIZE1, SIZE2, SIZE3, SIZE4` are the four bytes of the `uint32` size + encoded as big endian. + + Following the header is the payload, which is the specified number of + bytes of `STREAM_TYPE`. + + The simplest way to implement this protocol is the following: + + 1. Read 8 bytes. + 2. Choose `stdout` or `stderr` depending on the first byte. + 3. Extract the frame size from the last four bytes. + 4. Read the extracted size and output it on the correct output. + 5. Goto 1. + + ### Stream format when using a TTY + + When the TTY setting is enabled in [`POST /containers/create`](#operation/ContainerCreate), + the stream is not multiplexed. The data exchanged over the hijacked + connection is simply the raw data from the process PTY and client's + `stdin`. + + operationId: "ContainerAttach" + produces: + - "application/vnd.docker.raw-stream" + responses: + 101: + description: "no error, hints proxy about hijacking" + 200: + description: "no error, no upgrade header found" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "detachKeys" + in: "query" + description: | + Override the key sequence for detaching a container.Format is a single + character `[a-Z]` or `ctrl-` where `` is one of: `a-z`, + `@`, `^`, `[`, `,` or `_`. + type: "string" + - name: "logs" + in: "query" + description: | + Replay previous logs from the container. + + This is useful for attaching to a container that has started and you + want to output everything since the container started. + + If `stream` is also enabled, once all the previous output has been + returned, it will seamlessly transition into streaming current + output. + type: "boolean" + default: false + - name: "stream" + in: "query" + description: | + Stream attached streams from the time the request was made onwards. + type: "boolean" + default: false + - name: "stdin" + in: "query" + description: "Attach to `stdin`" + type: "boolean" + default: false + - name: "stdout" + in: "query" + description: "Attach to `stdout`" + type: "boolean" + default: false + - name: "stderr" + in: "query" + description: "Attach to `stderr`" + type: "boolean" + default: false + tags: ["Container"] + /containers/{id}/attach/ws: + get: + summary: "Attach to a container via a websocket" + operationId: "ContainerAttachWebsocket" + responses: + 101: + description: "no error, hints proxy about hijacking" + 200: + description: "no error, no upgrade header found" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "detachKeys" + in: "query" + description: | + Override the key sequence for detaching a container.Format is a single + character `[a-Z]` or `ctrl-` where `` is one of: `a-z`, + `@`, `^`, `[`, `,`, or `_`. + type: "string" + - name: "logs" + in: "query" + description: "Return logs" + type: "boolean" + default: false + - name: "stream" + in: "query" + description: "Return stream" + type: "boolean" + default: false + - name: "stdin" + in: "query" + description: "Attach to `stdin`" + type: "boolean" + default: false + - name: "stdout" + in: "query" + description: "Attach to `stdout`" + type: "boolean" + default: false + - name: "stderr" + in: "query" + description: "Attach to `stderr`" + type: "boolean" + default: false + tags: ["Container"] + /containers/{id}/wait: + post: + summary: "Wait for a container" + description: "Block until a container stops, then returns the exit code." + operationId: "ContainerWait" + produces: ["application/json"] + responses: + 200: + description: "The container has exit." + schema: + type: "object" + title: "ContainerWaitResponse" + description: "OK response to ContainerWait operation" + required: [StatusCode] + properties: + StatusCode: + description: "Exit code of the container" + type: "integer" + x-nullable: false + Error: + description: "container waiting error, if any" + type: "object" + properties: + Message: + description: "Details of an error" + type: "string" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "condition" + in: "query" + description: | + Wait until a container state reaches the given condition, either + 'not-running' (default), 'next-exit', or 'removed'. + type: "string" + default: "not-running" + tags: ["Container"] + /containers/{id}: + delete: + summary: "Remove a container" + operationId: "ContainerDelete" + responses: + 204: + description: "no error" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 409: + description: "conflict" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: | + You cannot remove a running container: c2ada9df5af8. Stop the + container before attempting removal or force remove + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "v" + in: "query" + description: "Remove anonymous volumes associated with the container." + type: "boolean" + default: false + - name: "force" + in: "query" + description: "If the container is running, kill it before removing it." + type: "boolean" + default: false + - name: "link" + in: "query" + description: "Remove the specified link associated with the container." + type: "boolean" + default: false + tags: ["Container"] + /containers/{id}/archive: + head: + summary: "Get information about files in a container" + description: | + A response header `X-Docker-Container-Path-Stat` is returned, containing + a base64 - encoded JSON object with some filesystem header information + about the path. + operationId: "ContainerArchiveInfo" + responses: + 200: + description: "no error" + headers: + X-Docker-Container-Path-Stat: + type: "string" + description: | + A base64 - encoded JSON object with some filesystem header + information about the path + 400: + description: "Bad parameter" + schema: + allOf: + - $ref: "#/definitions/ErrorResponse" + - type: "object" + properties: + message: + description: | + The error message. Either "must specify path parameter" + (path cannot be empty) or "not a directory" (path was + asserted to be a directory but exists as a file). + type: "string" + x-nullable: false + 404: + description: "Container or path does not exist" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "path" + in: "query" + required: true + description: "Resource in the container’s filesystem to archive." + type: "string" + tags: ["Container"] + get: + summary: "Get an archive of a filesystem resource in a container" + description: "Get a tar archive of a resource in the filesystem of container id." + operationId: "ContainerArchive" + produces: ["application/x-tar"] + responses: + 200: + description: "no error" + 400: + description: "Bad parameter" + schema: + allOf: + - $ref: "#/definitions/ErrorResponse" + - type: "object" + properties: + message: + description: | + The error message. Either "must specify path parameter" + (path cannot be empty) or "not a directory" (path was + asserted to be a directory but exists as a file). + type: "string" + x-nullable: false + 404: + description: "Container or path does not exist" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "path" + in: "query" + required: true + description: "Resource in the container’s filesystem to archive." + type: "string" + tags: ["Container"] + put: + summary: "Extract an archive of files or folders to a directory in a container" + description: "Upload a tar archive to be extracted to a path in the filesystem of container id." + operationId: "PutContainerArchive" + consumes: ["application/x-tar", "application/octet-stream"] + responses: + 200: + description: "The content was extracted successfully" + 400: + description: "Bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 403: + description: "Permission denied, the volume or container rootfs is marked as read-only." + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "No such container or path does not exist inside the container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the container" + type: "string" + - name: "path" + in: "query" + required: true + description: "Path to a directory in the container to extract the archive’s contents into. " + type: "string" + - name: "noOverwriteDirNonDir" + in: "query" + description: | + If `1`, `true`, or `True` then it will be an error if unpacking the + given content would cause an existing directory to be replaced with + a non-directory and vice versa. + type: "string" + - name: "copyUIDGID" + in: "query" + description: | + If `1`, `true`, then it will copy UID/GID maps to the dest file or + dir + type: "string" + - name: "inputStream" + in: "body" + required: true + description: | + The input stream must be a tar archive compressed with one of the + following algorithms: `identity` (no compression), `gzip`, `bzip2`, + or `xz`. + schema: + type: "string" + format: "binary" + tags: ["Container"] + /containers/prune: + post: + summary: "Delete stopped containers" + produces: + - "application/json" + operationId: "ContainerPrune" + parameters: + - name: "filters" + in: "query" + description: | + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + + Available filters: + - `until=` Prune containers created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. + - `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune containers with (or without, in case `label!=...` is used) the specified labels. + type: "string" + responses: + 200: + description: "No error" + schema: + type: "object" + title: "ContainerPruneResponse" + properties: + ContainersDeleted: + description: "Container IDs that were deleted" + type: "array" + items: + type: "string" + SpaceReclaimed: + description: "Disk space reclaimed in bytes" + type: "integer" + format: "int64" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Container"] + /images/json: + get: + summary: "List Images" + description: "Returns a list of images on the server. Note that it uses a different, smaller representation of an image than inspecting a single image." + operationId: "ImageList" + produces: + - "application/json" + responses: + 200: + description: "Summary image data for the images matching the query" + schema: + type: "array" + items: + $ref: "#/definitions/ImageSummary" + examples: + application/json: + - Id: "sha256:e216a057b1cb1efc11f8a268f37ef62083e70b1b38323ba252e25ac88904a7e8" + ParentId: "" + RepoTags: + - "ubuntu:12.04" + - "ubuntu:precise" + RepoDigests: + - "ubuntu@sha256:992069aee4016783df6345315302fa59681aae51a8eeb2f889dea59290f21787" + Created: 1474925151 + Size: 103579269 + VirtualSize: 103579269 + SharedSize: 0 + Labels: {} + Containers: 2 + - Id: "sha256:3e314f95dcace0f5e4fd37b10862fe8398e3c60ed36600bc0ca5fda78b087175" + ParentId: "" + RepoTags: + - "ubuntu:12.10" + - "ubuntu:quantal" + RepoDigests: + - "ubuntu@sha256:002fba3e3255af10be97ea26e476692a7ebed0bb074a9ab960b2e7a1526b15d7" + - "ubuntu@sha256:68ea0200f0b90df725d99d823905b04cf844f6039ef60c60bf3e019915017bd3" + Created: 1403128455 + Size: 172064416 + VirtualSize: 172064416 + SharedSize: 0 + Labels: {} + Containers: 5 + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "all" + in: "query" + description: "Show all images. Only images from a final layer (no children) are shown by default." + type: "boolean" + default: false + - name: "filters" + in: "query" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to + process on the images list. + + Available filters: + + - `before`=(`[:]`, `` or ``) + - `dangling=true` + - `label=key` or `label="key=value"` of an image label + - `reference`=(`[:]`) + - `since`=(`[:]`, `` or ``) + type: "string" + - name: "digests" + in: "query" + description: "Show digest information as a `RepoDigests` field on each image." + type: "boolean" + default: false + tags: ["Image"] + /build: + post: + summary: "Build an image" + description: | + Build an image from a tar archive with a `Dockerfile` in it. + + The `Dockerfile` specifies how the image is built from the tar archive. It is typically in the archive's root, but can be at a different path or have a different name by specifying the `dockerfile` parameter. [See the `Dockerfile` reference for more information](https://docs.docker.com/engine/reference/builder/). + + The Docker daemon performs a preliminary validation of the `Dockerfile` before starting the build, and returns an error if the syntax is incorrect. After that, each instruction is run one-by-one until the ID of the new image is output. + + The build is canceled if the client drops the connection by quitting or being killed. + operationId: "ImageBuild" + consumes: + - "application/octet-stream" + produces: + - "application/json" + parameters: + - name: "inputStream" + in: "body" + description: "A tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz." + schema: + type: "string" + format: "binary" + - name: "dockerfile" + in: "query" + description: "Path within the build context to the `Dockerfile`. This is ignored if `remote` is specified and points to an external `Dockerfile`." + type: "string" + default: "Dockerfile" + - name: "t" + in: "query" + description: "A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default `latest` value is assumed. You can provide several `t` parameters." + type: "string" + - name: "extrahosts" + in: "query" + description: "Extra hosts to add to /etc/hosts" + type: "string" + - name: "remote" + in: "query" + description: "A Git repository URI or HTTP/HTTPS context URI. If the URI points to a single text file, the file’s contents are placed into a file called `Dockerfile` and the image is built from that file. If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build. If the URI points to a tarball and the `dockerfile` parameter is also specified, there must be a file with the corresponding path inside the tarball." + type: "string" + - name: "q" + in: "query" + description: "Suppress verbose build output." + type: "boolean" + default: false + - name: "nocache" + in: "query" + description: "Do not use the cache when building the image." + type: "boolean" + default: false + - name: "cachefrom" + in: "query" + description: "JSON array of images used for build cache resolution." + type: "string" + - name: "pull" + in: "query" + description: "Attempt to pull the image even if an older image exists locally." + type: "string" + - name: "rm" + in: "query" + description: "Remove intermediate containers after a successful build." + type: "boolean" + default: true + - name: "forcerm" + in: "query" + description: "Always remove intermediate containers, even upon failure." + type: "boolean" + default: false + - name: "memory" + in: "query" + description: "Set memory limit for build." + type: "integer" + - name: "memswap" + in: "query" + description: "Total memory (memory + swap). Set as `-1` to disable swap." + type: "integer" + - name: "cpushares" + in: "query" + description: "CPU shares (relative weight)." + type: "integer" + - name: "cpusetcpus" + in: "query" + description: "CPUs in which to allow execution (e.g., `0-3`, `0,1`)." + type: "string" + - name: "cpuperiod" + in: "query" + description: "The length of a CPU period in microseconds." + type: "integer" + - name: "cpuquota" + in: "query" + description: "Microseconds of CPU time that the container can get in a CPU period." + type: "integer" + - name: "buildargs" + in: "query" + description: > + JSON map of string pairs for build-time variables. Users pass these values at build-time. Docker + uses the buildargs as the environment context for commands run via the `Dockerfile` RUN + instruction, or for variable expansion in other `Dockerfile` instructions. This is not meant for + passing secret values. + + + For example, the build arg `FOO=bar` would become `{"FOO":"bar"}` in JSON. This would result in the + query parameter `buildargs={"FOO":"bar"}`. Note that `{"FOO":"bar"}` should be URI component encoded. + + + [Read more about the buildargs instruction.](https://docs.docker.com/engine/reference/builder/#arg) + type: "string" + - name: "shmsize" + in: "query" + description: "Size of `/dev/shm` in bytes. The size must be greater than 0. If omitted the system uses 64MB." + type: "integer" + - name: "squash" + in: "query" + description: "Squash the resulting images layers into a single layer. *(Experimental release only.)*" + type: "boolean" + - name: "labels" + in: "query" + description: "Arbitrary key/value labels to set on the image, as a JSON map of string pairs." + type: "string" + - name: "networkmode" + in: "query" + description: | + Sets the networking mode for the run commands during build. Supported + standard values are: `bridge`, `host`, `none`, and `container:`. + Any other value is taken as a custom network's name or ID to which this + container should connect to. + type: "string" + - name: "Content-type" + in: "header" + type: "string" + enum: + - "application/x-tar" + default: "application/x-tar" + - name: "X-Registry-Config" + in: "header" + description: | + This is a base64-encoded JSON object with auth configurations for multiple registries that a build may refer to. + + The key is a registry URL, and the value is an auth configuration object, [as described in the authentication section](#section/Authentication). For example: + + ``` + { + "docker.example.com": { + "username": "janedoe", + "password": "hunter2" + }, + "https://index.docker.io/v1/": { + "username": "mobydock", + "password": "conta1n3rize14" + } + } + ``` + + Only the registry domain name (and port if not the default 443) are required. However, for legacy reasons, the Docker Hub registry must be specified with both a `https://` prefix and a `/v1/` suffix even though Docker will prefer to use the v2 registry API. + type: "string" + - name: "platform" + in: "query" + description: "Platform in the format os[/arch[/variant]]" + type: "string" + default: "" + - name: "target" + in: "query" + description: "Target build stage" + type: "string" + default: "" + - name: "outputs" + in: "query" + description: "BuildKit output configuration" + type: "string" + default: "" + responses: + 200: + description: "no error" + 400: + description: "Bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Image"] + /build/prune: + post: + summary: "Delete builder cache" + produces: + - "application/json" + operationId: "BuildPrune" + parameters: + - name: "keep-storage" + in: "query" + description: "Amount of disk space in bytes to keep for cache" + type: "integer" + format: "int64" + - name: "all" + in: "query" + type: "boolean" + description: "Remove all types of build cache" + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to + process on the list of build cache objects. + + Available filters: + + - `until=`: duration relative to daemon's time, during which build cache was not used, in Go's duration format (e.g., '24h') + - `id=` + - `parent=` + - `type=` + - `description=` + - `inuse` + - `shared` + - `private` + responses: + 200: + description: "No error" + schema: + type: "object" + title: "BuildPruneResponse" + properties: + CachesDeleted: + type: "array" + items: + description: "ID of build cache object" + type: "string" + SpaceReclaimed: + description: "Disk space reclaimed in bytes" + type: "integer" + format: "int64" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Image"] + /images/create: + post: + summary: "Create an image" + description: "Create an image by either pulling it from a registry or importing it." + operationId: "ImageCreate" + consumes: + - "text/plain" + - "application/octet-stream" + produces: + - "application/json" + responses: + 200: + description: "no error" + 404: + description: "repository does not exist or no read access" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "fromImage" + in: "query" + description: "Name of the image to pull. The name may include a tag or digest. This parameter may only be used when pulling an image. The pull is cancelled if the HTTP connection is closed." + type: "string" + - name: "fromSrc" + in: "query" + description: "Source to import. The value may be a URL from which the image can be retrieved or `-` to read the image from the request body. This parameter may only be used when importing an image." + type: "string" + - name: "repo" + in: "query" + description: "Repository name given to an image when it is imported. The repo may include a tag. This parameter may only be used when importing an image." + type: "string" + - name: "tag" + in: "query" + description: "Tag or digest. If empty when pulling an image, this causes all tags for the given image to be pulled." + type: "string" + - name: "message" + in: "query" + description: "Set commit message for imported image." + type: "string" + - name: "inputImage" + in: "body" + description: "Image content if the value `-` has been specified in fromSrc query parameter" + schema: + type: "string" + required: false + - name: "X-Registry-Auth" + in: "header" + description: | + A base64url-encoded auth configuration. + + Refer to the [authentication section](#section/Authentication) for + details. + type: "string" + - name: "platform" + in: "query" + description: "Platform in the format os[/arch[/variant]]" + type: "string" + default: "" + tags: ["Image"] + /images/{name}/json: + get: + summary: "Inspect an image" + description: "Return low-level information about an image." + operationId: "ImageInspect" + produces: + - "application/json" + responses: + 200: + description: "No error" + schema: + $ref: "#/definitions/Image" + examples: + application/json: + Id: "sha256:85f05633ddc1c50679be2b16a0479ab6f7637f8884e0cfe0f4d20e1ebb3d6e7c" + Container: "cb91e48a60d01f1e27028b4fc6819f4f290b3cf12496c8176ec714d0d390984a" + Comment: "" + Os: "linux" + Architecture: "amd64" + Parent: "sha256:91e54dfb11794fad694460162bf0cb0a4fa710cfa3f60979c177d920813e267c" + ContainerConfig: + Tty: false + Hostname: "e611e15f9c9d" + Domainname: "" + AttachStdout: false + PublishService: "" + AttachStdin: false + OpenStdin: false + StdinOnce: false + NetworkDisabled: false + OnBuild: [] + Image: "91e54dfb11794fad694460162bf0cb0a4fa710cfa3f60979c177d920813e267c" + User: "" + WorkingDir: "" + MacAddress: "" + AttachStderr: false + Labels: + com.example.license: "GPL" + com.example.version: "1.0" + com.example.vendor: "Acme" + Env: + - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + Cmd: + - "/bin/sh" + - "-c" + - "#(nop) LABEL com.example.vendor=Acme com.example.license=GPL com.example.version=1.0" + DockerVersion: "1.9.0-dev" + VirtualSize: 188359297 + Size: 0 + Author: "" + Created: "2015-09-10T08:30:53.26995814Z" + GraphDriver: + Name: "aufs" + Data: {} + RepoDigests: + - "localhost:5000/test/busybox/example@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf" + RepoTags: + - "example:1.0" + - "example:latest" + - "example:stable" + Config: + Image: "91e54dfb11794fad694460162bf0cb0a4fa710cfa3f60979c177d920813e267c" + NetworkDisabled: false + OnBuild: [] + StdinOnce: false + PublishService: "" + AttachStdin: false + OpenStdin: false + Domainname: "" + AttachStdout: false + Tty: false + Hostname: "e611e15f9c9d" + Cmd: + - "/bin/bash" + Env: + - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + Labels: + com.example.vendor: "Acme" + com.example.version: "1.0" + com.example.license: "GPL" + MacAddress: "" + AttachStderr: false + WorkingDir: "" + User: "" + RootFS: + Type: "layers" + Layers: + - "sha256:1834950e52ce4d5a88a1bbd131c537f4d0e56d10ff0dd69e66be3b7dfa9df7e6" + - "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef" + 404: + description: "No such image" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such image: someimage (tag: latest)" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: "Image name or id" + type: "string" + required: true + tags: ["Image"] + /images/{name}/history: + get: + summary: "Get the history of an image" + description: "Return parent layers of an image." + operationId: "ImageHistory" + produces: ["application/json"] + responses: + 200: + description: "List of image layers" + schema: + type: "array" + items: + type: "object" + x-go-name: HistoryResponseItem + title: "HistoryResponseItem" + description: "individual image layer information in response to ImageHistory operation" + required: [Id, Created, CreatedBy, Tags, Size, Comment] + properties: + Id: + type: "string" + x-nullable: false + Created: + type: "integer" + format: "int64" + x-nullable: false + CreatedBy: + type: "string" + x-nullable: false + Tags: + type: "array" + items: + type: "string" + Size: + type: "integer" + format: "int64" + x-nullable: false + Comment: + type: "string" + x-nullable: false + examples: + application/json: + - Id: "3db9c44f45209632d6050b35958829c3a2aa256d81b9a7be45b362ff85c54710" + Created: 1398108230 + CreatedBy: "/bin/sh -c #(nop) ADD file:eb15dbd63394e063b805a3c32ca7bf0266ef64676d5a6fab4801f2e81e2a5148 in /" + Tags: + - "ubuntu:lucid" + - "ubuntu:10.04" + Size: 182964289 + Comment: "" + - Id: "6cfa4d1f33fb861d4d114f43b25abd0ac737509268065cdfd69d544a59c85ab8" + Created: 1398108222 + CreatedBy: "/bin/sh -c #(nop) MAINTAINER Tianon Gravi - mkimage-debootstrap.sh -i iproute,iputils-ping,ubuntu-minimal -t lucid.tar.xz lucid http://archive.ubuntu.com/ubuntu/" + Tags: [] + Size: 0 + Comment: "" + - Id: "511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158" + Created: 1371157430 + CreatedBy: "" + Tags: + - "scratch12:latest" + - "scratch:latest" + Size: 0 + Comment: "Imported from -" + 404: + description: "No such image" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: "Image name or ID" + type: "string" + required: true + tags: ["Image"] + /images/{name}/push: + post: + summary: "Push an image" + description: | + Push an image to a registry. + + If you wish to push an image on to a private registry, that image must + already have a tag which references the registry. For example, + `registry.example.com/myimage:latest`. + + The push is cancelled if the HTTP connection is closed. + operationId: "ImagePush" + consumes: + - "application/octet-stream" + responses: + 200: + description: "No error" + 404: + description: "No such image" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: "Image name or ID." + type: "string" + required: true + - name: "tag" + in: "query" + description: "The tag to associate with the image on the registry." + type: "string" + - name: "X-Registry-Auth" + in: "header" + description: | + A base64url-encoded auth configuration. + + Refer to the [authentication section](#section/Authentication) for + details. + type: "string" + required: true + tags: ["Image"] + /images/{name}/tag: + post: + summary: "Tag an image" + description: "Tag an image so that it becomes part of a repository." + operationId: "ImageTag" + responses: + 201: + description: "No error" + 400: + description: "Bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "No such image" + schema: + $ref: "#/definitions/ErrorResponse" + 409: + description: "Conflict" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: "Image name or ID to tag." + type: "string" + required: true + - name: "repo" + in: "query" + description: "The repository to tag in. For example, `someuser/someimage`." + type: "string" + - name: "tag" + in: "query" + description: "The name of the new tag." + type: "string" + tags: ["Image"] + /images/{name}: + delete: + summary: "Remove an image" + description: | + Remove an image, along with any untagged parent images that were + referenced by that image. + + Images can't be removed if they have descendant images, are being + used by a running container or are being used by a build. + operationId: "ImageDelete" + produces: ["application/json"] + responses: + 200: + description: "The image was deleted successfully" + schema: + type: "array" + items: + $ref: "#/definitions/ImageDeleteResponseItem" + examples: + application/json: + - Untagged: "3e2f21a89f" + - Deleted: "3e2f21a89f" + - Deleted: "53b4f83ac9" + 404: + description: "No such image" + schema: + $ref: "#/definitions/ErrorResponse" + 409: + description: "Conflict" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: "Image name or ID" + type: "string" + required: true + - name: "force" + in: "query" + description: "Remove the image even if it is being used by stopped containers or has other tags" + type: "boolean" + default: false + - name: "noprune" + in: "query" + description: "Do not delete untagged parent images" + type: "boolean" + default: false + tags: ["Image"] + /images/search: + get: + summary: "Search images" + description: "Search for an image on Docker Hub." + operationId: "ImageSearch" + produces: + - "application/json" + responses: + 200: + description: "No error" + schema: + type: "array" + items: + type: "object" + title: "ImageSearchResponseItem" + properties: + description: + type: "string" + is_official: + type: "boolean" + is_automated: + type: "boolean" + name: + type: "string" + star_count: + type: "integer" + examples: + application/json: + - description: "" + is_official: false + is_automated: false + name: "wma55/u1210sshd" + star_count: 0 + - description: "" + is_official: false + is_automated: false + name: "jdswinbank/sshd" + star_count: 0 + - description: "" + is_official: false + is_automated: false + name: "vgauthier/sshd" + star_count: 0 + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "term" + in: "query" + description: "Term to search" + type: "string" + required: true + - name: "limit" + in: "query" + description: "Maximum number of results to return" + type: "integer" + - name: "filters" + in: "query" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to process on the images list. Available filters: + + - `is-automated=(true|false)` + - `is-official=(true|false)` + - `stars=` Matches images that has at least 'number' stars. + type: "string" + tags: ["Image"] + /images/prune: + post: + summary: "Delete unused images" + produces: + - "application/json" + operationId: "ImagePrune" + parameters: + - name: "filters" + in: "query" + description: | + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). Available filters: + + - `dangling=` When set to `true` (or `1`), prune only + unused *and* untagged images. When set to `false` + (or `0`), all unused images are pruned. + - `until=` Prune images created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. + - `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune images with (or without, in case `label!=...` is used) the specified labels. + type: "string" + responses: + 200: + description: "No error" + schema: + type: "object" + title: "ImagePruneResponse" + properties: + ImagesDeleted: + description: "Images that were deleted" + type: "array" + items: + $ref: "#/definitions/ImageDeleteResponseItem" + SpaceReclaimed: + description: "Disk space reclaimed in bytes" + type: "integer" + format: "int64" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Image"] + /auth: + post: + summary: "Check auth configuration" + description: | + Validate credentials for a registry and, if available, get an identity + token for accessing the registry without password. + operationId: "SystemAuth" + consumes: ["application/json"] + produces: ["application/json"] + responses: + 200: + description: "An identity token was generated successfully." + schema: + type: "object" + title: "SystemAuthResponse" + required: [Status] + properties: + Status: + description: "The status of the authentication" + type: "string" + x-nullable: false + IdentityToken: + description: "An opaque token used to authenticate a user after a successful login" + type: "string" + x-nullable: false + examples: + application/json: + Status: "Login Succeeded" + IdentityToken: "9cbaf023786cd7..." + 204: + description: "No error" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "authConfig" + in: "body" + description: "Authentication to check" + schema: + $ref: "#/definitions/AuthConfig" + tags: ["System"] + /info: + get: + summary: "Get system information" + operationId: "SystemInfo" + produces: + - "application/json" + responses: + 200: + description: "No error" + schema: + $ref: "#/definitions/SystemInfo" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["System"] + /version: + get: + summary: "Get version" + description: "Returns the version of Docker that is running and various information about the system that Docker is running on." + operationId: "SystemVersion" + produces: ["application/json"] + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/SystemVersion" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["System"] + /_ping: + get: + summary: "Ping" + description: "This is a dummy endpoint you can use to test if the server is accessible." + operationId: "SystemPing" + produces: ["text/plain"] + responses: + 200: + description: "no error" + schema: + type: "string" + example: "OK" + headers: + API-Version: + type: "string" + description: "Max API Version the server supports" + Builder-Version: + type: "string" + description: "Default version of docker image builder" + Docker-Experimental: + type: "boolean" + description: "If the server is running with experimental mode enabled" + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + headers: + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" + tags: ["System"] + head: + summary: "Ping" + description: "This is a dummy endpoint you can use to test if the server is accessible." + operationId: "SystemPingHead" + produces: ["text/plain"] + responses: + 200: + description: "no error" + schema: + type: "string" + example: "(empty)" + headers: + API-Version: + type: "string" + description: "Max API Version the server supports" + Builder-Version: + type: "string" + description: "Default version of docker image builder" + Docker-Experimental: + type: "boolean" + description: "If the server is running with experimental mode enabled" + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["System"] + /commit: + post: + summary: "Create a new image from a container" + operationId: "ImageCommit" + consumes: + - "application/json" + produces: + - "application/json" + responses: + 201: + description: "no error" + schema: + $ref: "#/definitions/IdResponse" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "containerConfig" + in: "body" + description: "The container configuration" + schema: + $ref: "#/definitions/ContainerConfig" + - name: "container" + in: "query" + description: "The ID or name of the container to commit" + type: "string" + - name: "repo" + in: "query" + description: "Repository name for the created image" + type: "string" + - name: "tag" + in: "query" + description: "Tag name for the create image" + type: "string" + - name: "comment" + in: "query" + description: "Commit message" + type: "string" + - name: "author" + in: "query" + description: "Author of the image (e.g., `John Hannibal Smith `)" + type: "string" + - name: "pause" + in: "query" + description: "Whether to pause the container before committing" + type: "boolean" + default: true + - name: "changes" + in: "query" + description: "`Dockerfile` instructions to apply while committing" + type: "string" + tags: ["Image"] + /events: + get: + summary: "Monitor events" + description: | + Stream real-time events from the server. + + Various objects within Docker report events when something happens to them. + + Containers report these events: `attach`, `commit`, `copy`, `create`, `destroy`, `detach`, `die`, `exec_create`, `exec_detach`, `exec_start`, `exec_die`, `export`, `health_status`, `kill`, `oom`, `pause`, `rename`, `resize`, `restart`, `start`, `stop`, `top`, `unpause`, `update`, and `prune` + + Images report these events: `delete`, `import`, `load`, `pull`, `push`, `save`, `tag`, `untag`, and `prune` + + Volumes report these events: `create`, `mount`, `unmount`, `destroy`, and `prune` + + Networks report these events: `create`, `connect`, `disconnect`, `destroy`, `update`, `remove`, and `prune` + + The Docker daemon reports these events: `reload` + + Services report these events: `create`, `update`, and `remove` + + Nodes report these events: `create`, `update`, and `remove` + + Secrets report these events: `create`, `update`, and `remove` + + Configs report these events: `create`, `update`, and `remove` + + The Builder reports `prune` events + + operationId: "SystemEvents" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + type: "object" + title: "SystemEventsResponse" + properties: + Type: + description: "The type of object emitting the event" + type: "string" + Action: + description: "The type of event" + type: "string" + Actor: + type: "object" + properties: + ID: + description: "The ID of the object emitting the event" + type: "string" + Attributes: + description: "Various key/value attributes of the object, depending on its type" + type: "object" + additionalProperties: + type: "string" + time: + description: "Timestamp of event" + type: "integer" + timeNano: + description: "Timestamp of event, with nanosecond accuracy" + type: "integer" + format: "int64" + examples: + application/json: + Type: "container" + Action: "create" + Actor: + ID: "ede54ee1afda366ab42f824e8a5ffd195155d853ceaec74a927f249ea270c743" + Attributes: + com.example.some-label: "some-label-value" + image: "alpine" + name: "my-container" + time: 1461943101 + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "since" + in: "query" + description: "Show events created since this timestamp then stream new events." + type: "string" + - name: "until" + in: "query" + description: "Show events created until this timestamp then stop streaming." + type: "string" + - name: "filters" + in: "query" + description: | + A JSON encoded value of filters (a `map[string][]string`) to process on the event list. Available filters: + + - `config=` config name or ID + - `container=` container name or ID + - `daemon=` daemon name or ID + - `event=` event type + - `image=` image name or ID + - `label=` image or container label + - `network=` network name or ID + - `node=` node ID + - `plugin`= plugin name or ID + - `scope`= local or swarm + - `secret=` secret name or ID + - `service=` service name or ID + - `type=` object to filter by, one of `container`, `image`, `volume`, `network`, `daemon`, `plugin`, `node`, `service`, `secret` or `config` + - `volume=` volume name + type: "string" + tags: ["System"] + /system/df: + get: + summary: "Get data usage information" + operationId: "SystemDataUsage" + responses: + 200: + description: "no error" + schema: + type: "object" + title: "SystemDataUsageResponse" + properties: + LayersSize: + type: "integer" + format: "int64" + Images: + type: "array" + items: + $ref: "#/definitions/ImageSummary" + Containers: + type: "array" + items: + $ref: "#/definitions/ContainerSummary" + Volumes: + type: "array" + items: + $ref: "#/definitions/Volume" + BuildCache: + type: "array" + items: + $ref: "#/definitions/BuildCache" + example: + LayersSize: 1092588 + Images: + - + Id: "sha256:2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749" + ParentId: "" + RepoTags: + - "busybox:latest" + RepoDigests: + - "busybox@sha256:a59906e33509d14c036c8678d687bd4eec81ed7c4b8ce907b888c607f6a1e0e6" + Created: 1466724217 + Size: 1092588 + SharedSize: 0 + VirtualSize: 1092588 + Labels: {} + Containers: 1 + Containers: + - + Id: "e575172ed11dc01bfce087fb27bee502db149e1a0fad7c296ad300bbff178148" + Names: + - "/top" + Image: "busybox" + ImageID: "sha256:2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749" + Command: "top" + Created: 1472592424 + Ports: [] + SizeRootFs: 1092588 + Labels: {} + State: "exited" + Status: "Exited (0) 56 minutes ago" + HostConfig: + NetworkMode: "default" + NetworkSettings: + Networks: + bridge: + IPAMConfig: null + Links: null + Aliases: null + NetworkID: "d687bc59335f0e5c9ee8193e5612e8aee000c8c62ea170cfb99c098f95899d92" + EndpointID: "8ed5115aeaad9abb174f68dcf135b49f11daf597678315231a32ca28441dec6a" + Gateway: "172.18.0.1" + IPAddress: "172.18.0.2" + IPPrefixLen: 16 + IPv6Gateway: "" + GlobalIPv6Address: "" + GlobalIPv6PrefixLen: 0 + MacAddress: "02:42:ac:12:00:02" + Mounts: [] + Volumes: + - + Name: "my-volume" + Driver: "local" + Mountpoint: "/var/lib/docker/volumes/my-volume/_data" + Labels: null + Scope: "local" + Options: null + UsageData: + Size: 10920104 + RefCount: 2 + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["System"] + /images/{name}/get: + get: + summary: "Export an image" + description: | + Get a tarball containing all images and metadata for a repository. + + If `name` is a specific name and tag (e.g. `ubuntu:latest`), then only that image (and its parents) are returned. If `name` is an image ID, similarly only that image (and its parents) are returned, but with the exclusion of the `repositories` file in the tarball, as there were no image names referenced. + + ### Image tarball format + + An image tarball contains one directory per image layer (named using its long ID), each containing these files: + + - `VERSION`: currently `1.0` - the file format version + - `json`: detailed layer information, similar to `docker inspect layer_id` + - `layer.tar`: A tarfile containing the filesystem changes in this layer + + The `layer.tar` file contains `aufs` style `.wh..wh.aufs` files and directories for storing attribute changes and deletions. + + If the tarball defines a repository, the tarball should also include a `repositories` file at the root that contains a list of repository and tag names mapped to layer IDs. + + ```json + { + "hello-world": { + "latest": "565a9d68a73f6706862bfe8409a7f659776d4d60a8d096eb4a3cbce6999cc2a1" + } + } + ``` + operationId: "ImageGet" + produces: + - "application/x-tar" + responses: + 200: + description: "no error" + schema: + type: "string" + format: "binary" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: "Image name or ID" + type: "string" + required: true + tags: ["Image"] + /images/get: + get: + summary: "Export several images" + description: | + Get a tarball containing all images and metadata for several image + repositories. + + For each value of the `names` parameter: if it is a specific name and + tag (e.g. `ubuntu:latest`), then only that image (and its parents) are + returned; if it is an image ID, similarly only that image (and its parents) + are returned and there would be no names referenced in the 'repositories' + file for this image ID. + + For details on the format, see the [export image endpoint](#operation/ImageGet). + operationId: "ImageGetAll" + produces: + - "application/x-tar" + responses: + 200: + description: "no error" + schema: + type: "string" + format: "binary" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "names" + in: "query" + description: "Image names to filter by" + type: "array" + items: + type: "string" + tags: ["Image"] + /images/load: + post: + summary: "Import images" + description: | + Load a set of images and tags into a repository. + + For details on the format, see the [export image endpoint](#operation/ImageGet). + operationId: "ImageLoad" + consumes: + - "application/x-tar" + produces: + - "application/json" + responses: + 200: + description: "no error" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "imagesTarball" + in: "body" + description: "Tar archive containing images" + schema: + type: "string" + format: "binary" + - name: "quiet" + in: "query" + description: "Suppress progress details during load." + type: "boolean" + default: false + tags: ["Image"] + /containers/{id}/exec: + post: + summary: "Create an exec instance" + description: "Run a command inside a running container." + operationId: "ContainerExec" + consumes: + - "application/json" + produces: + - "application/json" + responses: + 201: + description: "no error" + schema: + $ref: "#/definitions/IdResponse" + 404: + description: "no such container" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such container: c2ada9df5af8" + 409: + description: "container is paused" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "execConfig" + in: "body" + description: "Exec configuration" + schema: + type: "object" + properties: + AttachStdin: + type: "boolean" + description: "Attach to `stdin` of the exec command." + AttachStdout: + type: "boolean" + description: "Attach to `stdout` of the exec command." + AttachStderr: + type: "boolean" + description: "Attach to `stderr` of the exec command." + DetachKeys: + type: "string" + description: | + Override the key sequence for detaching a container. Format is + a single character `[a-Z]` or `ctrl-` where `` + is one of: `a-z`, `@`, `^`, `[`, `,` or `_`. + Tty: + type: "boolean" + description: "Allocate a pseudo-TTY." + Env: + description: | + A list of environment variables in the form `["VAR=value", ...]`. + type: "array" + items: + type: "string" + Cmd: + type: "array" + description: "Command to run, as a string or array of strings." + items: + type: "string" + Privileged: + type: "boolean" + description: "Runs the exec process with extended privileges." + default: false + User: + type: "string" + description: | + The user, and optionally, group to run the exec process inside + the container. Format is one of: `user`, `user:group`, `uid`, + or `uid:gid`. + WorkingDir: + type: "string" + description: | + The working directory for the exec process inside the container. + example: + AttachStdin: false + AttachStdout: true + AttachStderr: true + DetachKeys: "ctrl-p,ctrl-q" + Tty: false + Cmd: + - "date" + Env: + - "FOO=bar" + - "BAZ=quux" + required: true + - name: "id" + in: "path" + description: "ID or name of container" + type: "string" + required: true + tags: ["Exec"] + /exec/{id}/start: + post: + summary: "Start an exec instance" + description: | + Starts a previously set up exec instance. If detach is true, this endpoint + returns immediately after starting the command. Otherwise, it sets up an + interactive session with the command. + operationId: "ExecStart" + consumes: + - "application/json" + produces: + - "application/vnd.docker.raw-stream" + responses: + 200: + description: "No error" + 404: + description: "No such exec instance" + schema: + $ref: "#/definitions/ErrorResponse" + 409: + description: "Container is stopped or paused" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "execStartConfig" + in: "body" + schema: + type: "object" + properties: + Detach: + type: "boolean" + description: "Detach from the command." + Tty: + type: "boolean" + description: "Allocate a pseudo-TTY." + example: + Detach: false + Tty: false + - name: "id" + in: "path" + description: "Exec instance ID" + required: true + type: "string" + tags: ["Exec"] + /exec/{id}/resize: + post: + summary: "Resize an exec instance" + description: | + Resize the TTY session used by an exec instance. This endpoint only works + if `tty` was specified as part of creating and starting the exec instance. + operationId: "ExecResize" + responses: + 201: + description: "No error" + 404: + description: "No such exec instance" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "Exec instance ID" + required: true + type: "string" + - name: "h" + in: "query" + description: "Height of the TTY session in characters" + type: "integer" + - name: "w" + in: "query" + description: "Width of the TTY session in characters" + type: "integer" + tags: ["Exec"] + /exec/{id}/json: + get: + summary: "Inspect an exec instance" + description: "Return low-level information about an exec instance." + operationId: "ExecInspect" + produces: + - "application/json" + responses: + 200: + description: "No error" + schema: + type: "object" + title: "ExecInspectResponse" + properties: + CanRemove: + type: "boolean" + DetachKeys: + type: "string" + ID: + type: "string" + Running: + type: "boolean" + ExitCode: + type: "integer" + ProcessConfig: + $ref: "#/definitions/ProcessConfig" + OpenStdin: + type: "boolean" + OpenStderr: + type: "boolean" + OpenStdout: + type: "boolean" + ContainerID: + type: "string" + Pid: + type: "integer" + description: "The system process ID for the exec process." + examples: + application/json: + CanRemove: false + ContainerID: "b53ee82b53a40c7dca428523e34f741f3abc51d9f297a14ff874bf761b995126" + DetachKeys: "" + ExitCode: 2 + ID: "f33bbfb39f5b142420f4759b2348913bd4a8d1a6d7fd56499cb41a1bb91d7b3b" + OpenStderr: true + OpenStdin: true + OpenStdout: true + ProcessConfig: + arguments: + - "-c" + - "exit 2" + entrypoint: "sh" + privileged: false + tty: true + user: "1000" + Running: false + Pid: 42000 + 404: + description: "No such exec instance" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "Exec instance ID" + required: true + type: "string" + tags: ["Exec"] + + /volumes: + get: + summary: "List volumes" + operationId: "VolumeList" + produces: ["application/json"] + responses: + 200: + description: "Summary volume data that matches the query" + schema: + type: "object" + title: "VolumeListResponse" + description: "Volume list response" + required: [Volumes, Warnings] + properties: + Volumes: + type: "array" + x-nullable: false + description: "List of volumes" + items: + $ref: "#/definitions/Volume" + Warnings: + type: "array" + x-nullable: false + description: | + Warnings that occurred when fetching the list of volumes. + items: + type: "string" + + examples: + application/json: + Volumes: + - CreatedAt: "2017-07-19T12:00:26Z" + Name: "tardis" + Driver: "local" + Mountpoint: "/var/lib/docker/volumes/tardis" + Labels: + com.example.some-label: "some-value" + com.example.some-other-label: "some-other-value" + Scope: "local" + Options: + device: "tmpfs" + o: "size=100m,uid=1000" + type: "tmpfs" + Warnings: [] + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + description: | + JSON encoded value of the filters (a `map[string][]string`) to + process on the volumes list. Available filters: + + - `dangling=` When set to `true` (or `1`), returns all + volumes that are not in use by a container. When set to `false` + (or `0`), only volumes that are in use by one or more + containers are returned. + - `driver=` Matches volumes based on their driver. + - `label=` or `label=:` Matches volumes based on + the presence of a `label` alone or a `label` and a value. + - `name=` Matches all or part of a volume name. + type: "string" + format: "json" + tags: ["Volume"] + + /volumes/create: + post: + summary: "Create a volume" + operationId: "VolumeCreate" + consumes: ["application/json"] + produces: ["application/json"] + responses: + 201: + description: "The volume was created successfully" + schema: + $ref: "#/definitions/Volume" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "volumeConfig" + in: "body" + required: true + description: "Volume configuration" + schema: + type: "object" + description: "Volume configuration" + title: "VolumeConfig" + properties: + Name: + description: | + The new volume's name. If not specified, Docker generates a name. + type: "string" + x-nullable: false + Driver: + description: "Name of the volume driver to use." + type: "string" + default: "local" + x-nullable: false + DriverOpts: + description: | + A mapping of driver options and values. These options are + passed directly to the driver and are driver specific. + type: "object" + additionalProperties: + type: "string" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + example: + Name: "tardis" + Labels: + com.example.some-label: "some-value" + com.example.some-other-label: "some-other-value" + Driver: "custom" + tags: ["Volume"] + + /volumes/{name}: + get: + summary: "Inspect a volume" + operationId: "VolumeInspect" + produces: ["application/json"] + responses: + 200: + description: "No error" + schema: + $ref: "#/definitions/Volume" + 404: + description: "No such volume" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + required: true + description: "Volume name or ID" + type: "string" + tags: ["Volume"] + + delete: + summary: "Remove a volume" + description: "Instruct the driver to remove the volume." + operationId: "VolumeDelete" + responses: + 204: + description: "The volume was removed" + 404: + description: "No such volume or volume driver" + schema: + $ref: "#/definitions/ErrorResponse" + 409: + description: "Volume is in use and cannot be removed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + required: true + description: "Volume name or ID" + type: "string" + - name: "force" + in: "query" + description: "Force the removal of the volume" + type: "boolean" + default: false + tags: ["Volume"] + /volumes/prune: + post: + summary: "Delete unused volumes" + produces: + - "application/json" + operationId: "VolumePrune" + parameters: + - name: "filters" + in: "query" + description: | + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + + Available filters: + - `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune volumes with (or without, in case `label!=...` is used) the specified labels. + type: "string" + responses: + 200: + description: "No error" + schema: + type: "object" + title: "VolumePruneResponse" + properties: + VolumesDeleted: + description: "Volumes that were deleted" + type: "array" + items: + type: "string" + SpaceReclaimed: + description: "Disk space reclaimed in bytes" + type: "integer" + format: "int64" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Volume"] + /networks: + get: + summary: "List networks" + description: | + Returns a list of networks. For details on the format, see the + [network inspect endpoint](#operation/NetworkInspect). + + Note that it uses a different, smaller representation of a network than + inspecting a single network. For example, the list of containers attached + to the network is not propagated in API versions 1.28 and up. + operationId: "NetworkList" + produces: + - "application/json" + responses: + 200: + description: "No error" + schema: + type: "array" + items: + $ref: "#/definitions/Network" + examples: + application/json: + - Name: "bridge" + Id: "f2de39df4171b0dc801e8002d1d999b77256983dfc63041c0f34030aa3977566" + Created: "2016-10-19T06:21:00.416543526Z" + Scope: "local" + Driver: "bridge" + EnableIPv6: false + Internal: false + Attachable: false + Ingress: false + IPAM: + Driver: "default" + Config: + - + Subnet: "172.17.0.0/16" + Options: + com.docker.network.bridge.default_bridge: "true" + com.docker.network.bridge.enable_icc: "true" + com.docker.network.bridge.enable_ip_masquerade: "true" + com.docker.network.bridge.host_binding_ipv4: "0.0.0.0" + com.docker.network.bridge.name: "docker0" + com.docker.network.driver.mtu: "1500" + - Name: "none" + Id: "e086a3893b05ab69242d3c44e49483a3bbbd3a26b46baa8f61ab797c1088d794" + Created: "0001-01-01T00:00:00Z" + Scope: "local" + Driver: "null" + EnableIPv6: false + Internal: false + Attachable: false + Ingress: false + IPAM: + Driver: "default" + Config: [] + Containers: {} + Options: {} + - Name: "host" + Id: "13e871235c677f196c4e1ecebb9dc733b9b2d2ab589e30c539efeda84a24215e" + Created: "0001-01-01T00:00:00Z" + Scope: "local" + Driver: "host" + EnableIPv6: false + Internal: false + Attachable: false + Ingress: false + IPAM: + Driver: "default" + Config: [] + Containers: {} + Options: {} + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + description: | + JSON encoded value of the filters (a `map[string][]string`) to process + on the networks list. + + Available filters: + + - `dangling=` When set to `true` (or `1`), returns all + networks that are not in use by a container. When set to `false` + (or `0`), only networks that are in use by one or more + containers are returned. + - `driver=` Matches a network's driver. + - `id=` Matches all or part of a network ID. + - `label=` or `label==` of a network label. + - `name=` Matches all or part of a network name. + - `scope=["swarm"|"global"|"local"]` Filters networks by scope (`swarm`, `global`, or `local`). + - `type=["custom"|"builtin"]` Filters networks by type. The `custom` keyword returns all user-defined networks. + type: "string" + tags: ["Network"] + + /networks/{id}: + get: + summary: "Inspect a network" + operationId: "NetworkInspect" + produces: + - "application/json" + responses: + 200: + description: "No error" + schema: + $ref: "#/definitions/Network" + 404: + description: "Network not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "Network ID or name" + required: true + type: "string" + - name: "verbose" + in: "query" + description: "Detailed inspect output for troubleshooting" + type: "boolean" + default: false + - name: "scope" + in: "query" + description: "Filter the network by scope (swarm, global, or local)" + type: "string" + tags: ["Network"] + + delete: + summary: "Remove a network" + operationId: "NetworkDelete" + responses: + 204: + description: "No error" + 403: + description: "operation not supported for pre-defined networks" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such network" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "Network ID or name" + required: true + type: "string" + tags: ["Network"] + + /networks/create: + post: + summary: "Create a network" + operationId: "NetworkCreate" + consumes: + - "application/json" + produces: + - "application/json" + responses: + 201: + description: "No error" + schema: + type: "object" + title: "NetworkCreateResponse" + properties: + Id: + description: "The ID of the created network." + type: "string" + Warning: + type: "string" + example: + Id: "22be93d5babb089c5aab8dbc369042fad48ff791584ca2da2100db837a1c7c30" + Warning: "" + 403: + description: "operation not supported for pre-defined networks" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "plugin not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "networkConfig" + in: "body" + description: "Network configuration" + required: true + schema: + type: "object" + required: ["Name"] + properties: + Name: + description: "The network's name." + type: "string" + CheckDuplicate: + description: | + Check for networks with duplicate names. Since Network is + primarily keyed based on a random ID and not on the name, and + network name is strictly a user-friendly alias to the network + which is uniquely identified using ID, there is no guaranteed + way to check for duplicates. CheckDuplicate is there to provide + a best effort checking of any networks which has the same name + but it is not guaranteed to catch all name collisions. + type: "boolean" + Driver: + description: "Name of the network driver plugin to use." + type: "string" + default: "bridge" + Internal: + description: "Restrict external access to the network." + type: "boolean" + Attachable: + description: | + Globally scoped network is manually attachable by regular + containers from workers in swarm mode. + type: "boolean" + Ingress: + description: | + Ingress network is the network which provides the routing-mesh + in swarm mode. + type: "boolean" + IPAM: + description: "Optional custom IP scheme for the network." + $ref: "#/definitions/IPAM" + EnableIPv6: + description: "Enable IPv6 on the network." + type: "boolean" + Options: + description: "Network specific options to be used by the drivers." + type: "object" + additionalProperties: + type: "string" + Labels: + description: "User-defined key/value metadata." + type: "object" + additionalProperties: + type: "string" + example: + Name: "isolated_nw" + CheckDuplicate: false + Driver: "bridge" + EnableIPv6: true + IPAM: + Driver: "default" + Config: + - Subnet: "172.20.0.0/16" + IPRange: "172.20.10.0/24" + Gateway: "172.20.10.11" + - Subnet: "2001:db8:abcd::/64" + Gateway: "2001:db8:abcd::1011" + Options: + foo: "bar" + Internal: true + Attachable: false + Ingress: false + Options: + com.docker.network.bridge.default_bridge: "true" + com.docker.network.bridge.enable_icc: "true" + com.docker.network.bridge.enable_ip_masquerade: "true" + com.docker.network.bridge.host_binding_ipv4: "0.0.0.0" + com.docker.network.bridge.name: "docker0" + com.docker.network.driver.mtu: "1500" + Labels: + com.example.some-label: "some-value" + com.example.some-other-label: "some-other-value" + tags: ["Network"] + + /networks/{id}/connect: + post: + summary: "Connect a container to a network" + operationId: "NetworkConnect" + consumes: + - "application/json" + responses: + 200: + description: "No error" + 403: + description: "Operation not supported for swarm scoped networks" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "Network or container not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "Network ID or name" + required: true + type: "string" + - name: "container" + in: "body" + required: true + schema: + type: "object" + properties: + Container: + type: "string" + description: "The ID or name of the container to connect to the network." + EndpointConfig: + $ref: "#/definitions/EndpointSettings" + example: + Container: "3613f73ba0e4" + EndpointConfig: + IPAMConfig: + IPv4Address: "172.24.56.89" + IPv6Address: "2001:db8::5689" + tags: ["Network"] + + /networks/{id}/disconnect: + post: + summary: "Disconnect a container from a network" + operationId: "NetworkDisconnect" + consumes: + - "application/json" + responses: + 200: + description: "No error" + 403: + description: "Operation not supported for swarm scoped networks" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "Network or container not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "Network ID or name" + required: true + type: "string" + - name: "container" + in: "body" + required: true + schema: + type: "object" + properties: + Container: + type: "string" + description: | + The ID or name of the container to disconnect from the network. + Force: + type: "boolean" + description: | + Force the container to disconnect from the network. + tags: ["Network"] + /networks/prune: + post: + summary: "Delete unused networks" + produces: + - "application/json" + operationId: "NetworkPrune" + parameters: + - name: "filters" + in: "query" + description: | + Filters to process on the prune list, encoded as JSON (a `map[string][]string`). + + Available filters: + - `until=` Prune networks created before this timestamp. The `` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time. + - `label` (`label=`, `label==`, `label!=`, or `label!==`) Prune networks with (or without, in case `label!=...` is used) the specified labels. + type: "string" + responses: + 200: + description: "No error" + schema: + type: "object" + title: "NetworkPruneResponse" + properties: + NetworksDeleted: + description: "Networks that were deleted" + type: "array" + items: + type: "string" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Network"] + /plugins: + get: + summary: "List plugins" + operationId: "PluginList" + description: "Returns information about installed plugins." + produces: ["application/json"] + responses: + 200: + description: "No error" + schema: + type: "array" + items: + $ref: "#/definitions/Plugin" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to + process on the plugin list. + + Available filters: + + - `capability=` + - `enable=|` + tags: ["Plugin"] + + /plugins/privileges: + get: + summary: "Get plugin privileges" + operationId: "GetPluginPrivileges" + responses: + 200: + description: "no error" + schema: + type: "array" + items: + description: | + Describes a permission the user has to accept upon installing + the plugin. + type: "object" + title: "PluginPrivilegeItem" + properties: + Name: + type: "string" + Description: + type: "string" + Value: + type: "array" + items: + type: "string" + example: + - Name: "network" + Description: "" + Value: + - "host" + - Name: "mount" + Description: "" + Value: + - "/data" + - Name: "device" + Description: "" + Value: + - "/dev/cpu_dma_latency" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "remote" + in: "query" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + tags: + - "Plugin" + + /plugins/pull: + post: + summary: "Install a plugin" + operationId: "PluginPull" + description: | + Pulls and installs a plugin. After the plugin is installed, it can be + enabled using the [`POST /plugins/{name}/enable` endpoint](#operation/PostPluginsEnable). + produces: + - "application/json" + responses: + 204: + description: "no error" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "remote" + in: "query" + description: | + Remote reference for plugin to install. + + The `:latest` tag is optional, and is used as the default if omitted. + required: true + type: "string" + - name: "name" + in: "query" + description: | + Local name for the pulled plugin. + + The `:latest` tag is optional, and is used as the default if omitted. + required: false + type: "string" + - name: "X-Registry-Auth" + in: "header" + description: | + A base64url-encoded auth configuration to use when pulling a plugin + from a registry. + + Refer to the [authentication section](#section/Authentication) for + details. + type: "string" + - name: "body" + in: "body" + schema: + type: "array" + items: + description: | + Describes a permission accepted by the user upon installing the + plugin. + type: "object" + properties: + Name: + type: "string" + Description: + type: "string" + Value: + type: "array" + items: + type: "string" + example: + - Name: "network" + Description: "" + Value: + - "host" + - Name: "mount" + Description: "" + Value: + - "/data" + - Name: "device" + Description: "" + Value: + - "/dev/cpu_dma_latency" + tags: ["Plugin"] + /plugins/{name}/json: + get: + summary: "Inspect a plugin" + operationId: "PluginInspect" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Plugin" + 404: + description: "plugin is not installed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + tags: ["Plugin"] + /plugins/{name}: + delete: + summary: "Remove a plugin" + operationId: "PluginDelete" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Plugin" + 404: + description: "plugin is not installed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + - name: "force" + in: "query" + description: | + Disable the plugin before removing. This may result in issues if the + plugin is in use by a container. + type: "boolean" + default: false + tags: ["Plugin"] + /plugins/{name}/enable: + post: + summary: "Enable a plugin" + operationId: "PluginEnable" + responses: + 200: + description: "no error" + 404: + description: "plugin is not installed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + - name: "timeout" + in: "query" + description: "Set the HTTP client timeout (in seconds)" + type: "integer" + default: 0 + tags: ["Plugin"] + /plugins/{name}/disable: + post: + summary: "Disable a plugin" + operationId: "PluginDisable" + responses: + 200: + description: "no error" + 404: + description: "plugin is not installed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + tags: ["Plugin"] + /plugins/{name}/upgrade: + post: + summary: "Upgrade a plugin" + operationId: "PluginUpgrade" + responses: + 204: + description: "no error" + 404: + description: "plugin not installed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + - name: "remote" + in: "query" + description: | + Remote reference to upgrade to. + + The `:latest` tag is optional, and is used as the default if omitted. + required: true + type: "string" + - name: "X-Registry-Auth" + in: "header" + description: | + A base64url-encoded auth configuration to use when pulling a plugin + from a registry. + + Refer to the [authentication section](#section/Authentication) for + details. + type: "string" + - name: "body" + in: "body" + schema: + type: "array" + items: + description: | + Describes a permission accepted by the user upon installing the + plugin. + type: "object" + properties: + Name: + type: "string" + Description: + type: "string" + Value: + type: "array" + items: + type: "string" + example: + - Name: "network" + Description: "" + Value: + - "host" + - Name: "mount" + Description: "" + Value: + - "/data" + - Name: "device" + Description: "" + Value: + - "/dev/cpu_dma_latency" + tags: ["Plugin"] + /plugins/create: + post: + summary: "Create a plugin" + operationId: "PluginCreate" + consumes: + - "application/x-tar" + responses: + 204: + description: "no error" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "query" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + - name: "tarContext" + in: "body" + description: "Path to tar containing plugin rootfs and manifest" + schema: + type: "string" + format: "binary" + tags: ["Plugin"] + /plugins/{name}/push: + post: + summary: "Push a plugin" + operationId: "PluginPush" + description: | + Push a plugin to the registry. + parameters: + - name: "name" + in: "path" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + responses: + 200: + description: "no error" + 404: + description: "plugin not installed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Plugin"] + /plugins/{name}/set: + post: + summary: "Configure a plugin" + operationId: "PluginSet" + consumes: + - "application/json" + parameters: + - name: "name" + in: "path" + description: | + The name of the plugin. The `:latest` tag is optional, and is the + default if omitted. + required: true + type: "string" + - name: "body" + in: "body" + schema: + type: "array" + items: + type: "string" + example: ["DEBUG=1"] + responses: + 204: + description: "No error" + 404: + description: "Plugin not installed" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Plugin"] + /nodes: + get: + summary: "List nodes" + operationId: "NodeList" + responses: + 200: + description: "no error" + schema: + type: "array" + items: + $ref: "#/definitions/Node" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + description: | + Filters to process on the nodes list, encoded as JSON (a `map[string][]string`). + + Available filters: + - `id=` + - `label=` + - `membership=`(`accepted`|`pending`)` + - `name=` + - `node.label=` + - `role=`(`manager`|`worker`)` + type: "string" + tags: ["Node"] + /nodes/{id}: + get: + summary: "Inspect a node" + operationId: "NodeInspect" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Node" + 404: + description: "no such node" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "The ID or name of the node" + type: "string" + required: true + tags: ["Node"] + delete: + summary: "Delete a node" + operationId: "NodeDelete" + responses: + 200: + description: "no error" + 404: + description: "no such node" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "The ID or name of the node" + type: "string" + required: true + - name: "force" + in: "query" + description: "Force remove a node from the swarm" + default: false + type: "boolean" + tags: ["Node"] + /nodes/{id}/update: + post: + summary: "Update a node" + operationId: "NodeUpdate" + responses: + 200: + description: "no error" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such node" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "The ID of the node" + type: "string" + required: true + - name: "body" + in: "body" + schema: + $ref: "#/definitions/NodeSpec" + - name: "version" + in: "query" + description: | + The version number of the node object being updated. This is required + to avoid conflicting writes. + type: "integer" + format: "int64" + required: true + tags: ["Node"] + /swarm: + get: + summary: "Inspect swarm" + operationId: "SwarmInspect" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Swarm" + 404: + description: "no such swarm" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Swarm"] + /swarm/init: + post: + summary: "Initialize a new swarm" + operationId: "SwarmInit" + produces: + - "application/json" + - "text/plain" + responses: + 200: + description: "no error" + schema: + description: "The node ID" + type: "string" + example: "7v2t30z9blmxuhnyo6s4cpenp" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is already part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "body" + in: "body" + required: true + schema: + type: "object" + properties: + ListenAddr: + description: | + Listen address used for inter-manager communication, as well + as determining the networking interface used for the VXLAN + Tunnel Endpoint (VTEP). This can either be an address/port + combination in the form `192.168.1.1:4567`, or an interface + followed by a port number, like `eth0:4567`. If the port number + is omitted, the default swarm listening port is used. + type: "string" + AdvertiseAddr: + description: | + Externally reachable address advertised to other nodes. This + can either be an address/port combination in the form + `192.168.1.1:4567`, or an interface followed by a port number, + like `eth0:4567`. If the port number is omitted, the port + number from the listen address is used. If `AdvertiseAddr` is + not specified, it will be automatically detected when possible. + type: "string" + DataPathAddr: + description: | + Address or interface to use for data path traffic (format: + ``), for example, `192.168.1.1`, or an interface, + like `eth0`. If `DataPathAddr` is unspecified, the same address + as `AdvertiseAddr` is used. + + The `DataPathAddr` specifies the address that global scope + network drivers will publish towards other nodes in order to + reach the containers running on this node. Using this parameter + it is possible to separate the container data traffic from the + management traffic of the cluster. + type: "string" + DataPathPort: + description: | + DataPathPort specifies the data path port number for data traffic. + Acceptable port range is 1024 to 49151. + if no port is set or is set to 0, default port 4789 will be used. + type: "integer" + format: "uint32" + DefaultAddrPool: + description: | + Default Address Pool specifies default subnet pools for global + scope networks. + type: "array" + items: + type: "string" + example: ["10.10.0.0/16", "20.20.0.0/16"] + ForceNewCluster: + description: "Force creation of a new swarm." + type: "boolean" + SubnetSize: + description: | + SubnetSize specifies the subnet size of the networks created + from the default subnet pool. + type: "integer" + format: "uint32" + Spec: + $ref: "#/definitions/SwarmSpec" + example: + ListenAddr: "0.0.0.0:2377" + AdvertiseAddr: "192.168.1.1:2377" + DataPathPort: 4789 + DefaultAddrPool: ["10.10.0.0/8", "20.20.0.0/8"] + SubnetSize: 24 + ForceNewCluster: false + Spec: + Orchestration: {} + Raft: {} + Dispatcher: {} + CAConfig: {} + EncryptionConfig: + AutoLockManagers: false + tags: ["Swarm"] + /swarm/join: + post: + summary: "Join an existing swarm" + operationId: "SwarmJoin" + responses: + 200: + description: "no error" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is already part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "body" + in: "body" + required: true + schema: + type: "object" + properties: + ListenAddr: + description: | + Listen address used for inter-manager communication if the node + gets promoted to manager, as well as determining the networking + interface used for the VXLAN Tunnel Endpoint (VTEP). + type: "string" + AdvertiseAddr: + description: | + Externally reachable address advertised to other nodes. This + can either be an address/port combination in the form + `192.168.1.1:4567`, or an interface followed by a port number, + like `eth0:4567`. If the port number is omitted, the port + number from the listen address is used. If `AdvertiseAddr` is + not specified, it will be automatically detected when possible. + type: "string" + DataPathAddr: + description: | + Address or interface to use for data path traffic (format: + ``), for example, `192.168.1.1`, or an interface, + like `eth0`. If `DataPathAddr` is unspecified, the same addres + as `AdvertiseAddr` is used. + + The `DataPathAddr` specifies the address that global scope + network drivers will publish towards other nodes in order to + reach the containers running on this node. Using this parameter + it is possible to separate the container data traffic from the + management traffic of the cluster. + + type: "string" + RemoteAddrs: + description: | + Addresses of manager nodes already participating in the swarm. + type: "array" + items: + type: "string" + JoinToken: + description: "Secret token for joining this swarm." + type: "string" + example: + ListenAddr: "0.0.0.0:2377" + AdvertiseAddr: "192.168.1.1:2377" + RemoteAddrs: + - "node1:2377" + JoinToken: "SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-7p73s1dx5in4tatdymyhg9hu2" + tags: ["Swarm"] + /swarm/leave: + post: + summary: "Leave a swarm" + operationId: "SwarmLeave" + responses: + 200: + description: "no error" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "force" + description: | + Force leave swarm, even if this is the last manager or that it will + break the cluster. + in: "query" + type: "boolean" + default: false + tags: ["Swarm"] + /swarm/update: + post: + summary: "Update a swarm" + operationId: "SwarmUpdate" + responses: + 200: + description: "no error" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "body" + in: "body" + required: true + schema: + $ref: "#/definitions/SwarmSpec" + - name: "version" + in: "query" + description: | + The version number of the swarm object being updated. This is + required to avoid conflicting writes. + type: "integer" + format: "int64" + required: true + - name: "rotateWorkerToken" + in: "query" + description: "Rotate the worker join token." + type: "boolean" + default: false + - name: "rotateManagerToken" + in: "query" + description: "Rotate the manager join token." + type: "boolean" + default: false + - name: "rotateManagerUnlockKey" + in: "query" + description: "Rotate the manager unlock key." + type: "boolean" + default: false + tags: ["Swarm"] + /swarm/unlockkey: + get: + summary: "Get the unlock key" + operationId: "SwarmUnlockkey" + consumes: + - "application/json" + responses: + 200: + description: "no error" + schema: + type: "object" + title: "UnlockKeyResponse" + properties: + UnlockKey: + description: "The swarm's unlock key." + type: "string" + example: + UnlockKey: "SWMKEY-1-7c37Cc8654o6p38HnroywCi19pllOnGtbdZEgtKxZu8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Swarm"] + /swarm/unlock: + post: + summary: "Unlock a locked manager" + operationId: "SwarmUnlock" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - name: "body" + in: "body" + required: true + schema: + type: "object" + properties: + UnlockKey: + description: "The swarm's unlock key." + type: "string" + example: + UnlockKey: "SWMKEY-1-7c37Cc8654o6p38HnroywCi19pllOnGtbdZEgtKxZu8" + responses: + 200: + description: "no error" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Swarm"] + /services: + get: + summary: "List services" + operationId: "ServiceList" + responses: + 200: + description: "no error" + schema: + type: "array" + items: + $ref: "#/definitions/Service" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to + process on the services list. + + Available filters: + + - `id=` + - `label=` + - `mode=["replicated"|"global"]` + - `name=` + - name: "status" + in: "query" + type: "boolean" + description: | + Include service status, with count of running and desired tasks. + tags: ["Service"] + /services/create: + post: + summary: "Create a service" + operationId: "ServiceCreate" + consumes: + - "application/json" + produces: + - "application/json" + responses: + 201: + description: "no error" + schema: + type: "object" + title: "ServiceCreateResponse" + properties: + ID: + description: "The ID of the created service." + type: "string" + Warning: + description: "Optional warning message" + type: "string" + example: + ID: "ak7w3gjqoa3kuz8xcpnyy0pvl" + Warning: "unable to pin image doesnotexist:latest to digest: image library/doesnotexist:latest not found" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 403: + description: "network is not eligible for services" + schema: + $ref: "#/definitions/ErrorResponse" + 409: + description: "name conflicts with an existing service" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "body" + in: "body" + required: true + schema: + allOf: + - $ref: "#/definitions/ServiceSpec" + - type: "object" + example: + Name: "web" + TaskTemplate: + ContainerSpec: + Image: "nginx:alpine" + Mounts: + - + ReadOnly: true + Source: "web-data" + Target: "/usr/share/nginx/html" + Type: "volume" + VolumeOptions: + DriverConfig: {} + Labels: + com.example.something: "something-value" + Hosts: ["10.10.10.10 host1", "ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 host2"] + User: "33" + DNSConfig: + Nameservers: ["8.8.8.8"] + Search: ["example.org"] + Options: ["timeout:3"] + Secrets: + - + File: + Name: "www.example.org.key" + UID: "33" + GID: "33" + Mode: 384 + SecretID: "fpjqlhnwb19zds35k8wn80lq9" + SecretName: "example_org_domain_key" + LogDriver: + Name: "json-file" + Options: + max-file: "3" + max-size: "10M" + Placement: {} + Resources: + Limits: + MemoryBytes: 104857600 + Reservations: {} + RestartPolicy: + Condition: "on-failure" + Delay: 10000000000 + MaxAttempts: 10 + Mode: + Replicated: + Replicas: 4 + UpdateConfig: + Parallelism: 2 + Delay: 1000000000 + FailureAction: "pause" + Monitor: 15000000000 + MaxFailureRatio: 0.15 + RollbackConfig: + Parallelism: 1 + Delay: 1000000000 + FailureAction: "pause" + Monitor: 15000000000 + MaxFailureRatio: 0.15 + EndpointSpec: + Ports: + - + Protocol: "tcp" + PublishedPort: 8080 + TargetPort: 80 + Labels: + foo: "bar" + - name: "X-Registry-Auth" + in: "header" + description: | + A base64url-encoded auth configuration for pulling from private + registries. + + Refer to the [authentication section](#section/Authentication) for + details. + type: "string" + tags: ["Service"] + /services/{id}: + get: + summary: "Inspect a service" + operationId: "ServiceInspect" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Service" + 404: + description: "no such service" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "ID or name of service." + required: true + type: "string" + - name: "insertDefaults" + in: "query" + description: "Fill empty fields with default values." + type: "boolean" + default: false + tags: ["Service"] + delete: + summary: "Delete a service" + operationId: "ServiceDelete" + responses: + 200: + description: "no error" + 404: + description: "no such service" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "ID or name of service." + required: true + type: "string" + tags: ["Service"] + /services/{id}/update: + post: + summary: "Update a service" + operationId: "ServiceUpdate" + consumes: ["application/json"] + produces: ["application/json"] + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/ServiceUpdateResponse" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such service" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "ID or name of service." + required: true + type: "string" + - name: "body" + in: "body" + required: true + schema: + allOf: + - $ref: "#/definitions/ServiceSpec" + - type: "object" + example: + Name: "top" + TaskTemplate: + ContainerSpec: + Image: "busybox" + Args: + - "top" + Resources: + Limits: {} + Reservations: {} + RestartPolicy: + Condition: "any" + MaxAttempts: 0 + Placement: {} + ForceUpdate: 0 + Mode: + Replicated: + Replicas: 1 + UpdateConfig: + Parallelism: 2 + Delay: 1000000000 + FailureAction: "pause" + Monitor: 15000000000 + MaxFailureRatio: 0.15 + RollbackConfig: + Parallelism: 1 + Delay: 1000000000 + FailureAction: "pause" + Monitor: 15000000000 + MaxFailureRatio: 0.15 + EndpointSpec: + Mode: "vip" + + - name: "version" + in: "query" + description: | + The version number of the service object being updated. This is + required to avoid conflicting writes. + This version number should be the value as currently set on the + service *before* the update. You can find the current version by + calling `GET /services/{id}` + required: true + type: "integer" + - name: "registryAuthFrom" + in: "query" + description: | + If the `X-Registry-Auth` header is not specified, this parameter + indicates where to find registry authorization credentials. + type: "string" + enum: ["spec", "previous-spec"] + default: "spec" + - name: "rollback" + in: "query" + description: | + Set to this parameter to `previous` to cause a server-side rollback + to the previous service spec. The supplied spec will be ignored in + this case. + type: "string" + - name: "X-Registry-Auth" + in: "header" + description: | + A base64url-encoded auth configuration for pulling from private + registries. + + Refer to the [authentication section](#section/Authentication) for + details. + type: "string" + + tags: ["Service"] + /services/{id}/logs: + get: + summary: "Get service logs" + description: | + Get `stdout` and `stderr` logs from a service. See also + [`/containers/{id}/logs`](#operation/ContainerLogs). + + **Note**: This endpoint works only for services with the `local`, + `json-file` or `journald` logging drivers. + operationId: "ServiceLogs" + responses: + 200: + description: "logs returned as a stream in response body" + schema: + type: "string" + format: "binary" + 404: + description: "no such service" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such service: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID or name of the service" + type: "string" + - name: "details" + in: "query" + description: "Show service context and extra details provided to logs." + type: "boolean" + default: false + - name: "follow" + in: "query" + description: "Keep connection after returning logs." + type: "boolean" + default: false + - name: "stdout" + in: "query" + description: "Return logs from `stdout`" + type: "boolean" + default: false + - name: "stderr" + in: "query" + description: "Return logs from `stderr`" + type: "boolean" + default: false + - name: "since" + in: "query" + description: "Only return logs since this time, as a UNIX timestamp" + type: "integer" + default: 0 + - name: "timestamps" + in: "query" + description: "Add timestamps to every log line" + type: "boolean" + default: false + - name: "tail" + in: "query" + description: | + Only return this number of log lines from the end of the logs. + Specify as an integer or `all` to output all log lines. + type: "string" + default: "all" + tags: ["Service"] + /tasks: + get: + summary: "List tasks" + operationId: "TaskList" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + type: "array" + items: + $ref: "#/definitions/Task" + example: + - ID: "0kzzo1i0y4jz6027t0k7aezc7" + Version: + Index: 71 + CreatedAt: "2016-06-07T21:07:31.171892745Z" + UpdatedAt: "2016-06-07T21:07:31.376370513Z" + Spec: + ContainerSpec: + Image: "redis" + Resources: + Limits: {} + Reservations: {} + RestartPolicy: + Condition: "any" + MaxAttempts: 0 + Placement: {} + ServiceID: "9mnpnzenvg8p8tdbtq4wvbkcz" + Slot: 1 + NodeID: "60gvrl6tm78dmak4yl7srz94v" + Status: + Timestamp: "2016-06-07T21:07:31.290032978Z" + State: "running" + Message: "started" + ContainerStatus: + ContainerID: "e5d62702a1b48d01c3e02ca1e0212a250801fa8d67caca0b6f35919ebc12f035" + PID: 677 + DesiredState: "running" + NetworksAttachments: + - Network: + ID: "4qvuz4ko70xaltuqbt8956gd1" + Version: + Index: 18 + CreatedAt: "2016-06-07T20:31:11.912919752Z" + UpdatedAt: "2016-06-07T21:07:29.955277358Z" + Spec: + Name: "ingress" + Labels: + com.docker.swarm.internal: "true" + DriverConfiguration: {} + IPAMOptions: + Driver: {} + Configs: + - Subnet: "10.255.0.0/16" + Gateway: "10.255.0.1" + DriverState: + Name: "overlay" + Options: + com.docker.network.driver.overlay.vxlanid_list: "256" + IPAMOptions: + Driver: + Name: "default" + Configs: + - Subnet: "10.255.0.0/16" + Gateway: "10.255.0.1" + Addresses: + - "10.255.0.10/16" + - ID: "1yljwbmlr8er2waf8orvqpwms" + Version: + Index: 30 + CreatedAt: "2016-06-07T21:07:30.019104782Z" + UpdatedAt: "2016-06-07T21:07:30.231958098Z" + Name: "hopeful_cori" + Spec: + ContainerSpec: + Image: "redis" + Resources: + Limits: {} + Reservations: {} + RestartPolicy: + Condition: "any" + MaxAttempts: 0 + Placement: {} + ServiceID: "9mnpnzenvg8p8tdbtq4wvbkcz" + Slot: 1 + NodeID: "60gvrl6tm78dmak4yl7srz94v" + Status: + Timestamp: "2016-06-07T21:07:30.202183143Z" + State: "shutdown" + Message: "shutdown" + ContainerStatus: + ContainerID: "1cf8d63d18e79668b0004a4be4c6ee58cddfad2dae29506d8781581d0688a213" + DesiredState: "shutdown" + NetworksAttachments: + - Network: + ID: "4qvuz4ko70xaltuqbt8956gd1" + Version: + Index: 18 + CreatedAt: "2016-06-07T20:31:11.912919752Z" + UpdatedAt: "2016-06-07T21:07:29.955277358Z" + Spec: + Name: "ingress" + Labels: + com.docker.swarm.internal: "true" + DriverConfiguration: {} + IPAMOptions: + Driver: {} + Configs: + - Subnet: "10.255.0.0/16" + Gateway: "10.255.0.1" + DriverState: + Name: "overlay" + Options: + com.docker.network.driver.overlay.vxlanid_list: "256" + IPAMOptions: + Driver: + Name: "default" + Configs: + - Subnet: "10.255.0.0/16" + Gateway: "10.255.0.1" + Addresses: + - "10.255.0.5/16" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to + process on the tasks list. + + Available filters: + + - `desired-state=(running | shutdown | accepted)` + - `id=` + - `label=key` or `label="key=value"` + - `name=` + - `node=` + - `service=` + tags: ["Task"] + /tasks/{id}: + get: + summary: "Inspect a task" + operationId: "TaskInspect" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Task" + 404: + description: "no such task" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "ID of the task" + required: true + type: "string" + tags: ["Task"] + /tasks/{id}/logs: + get: + summary: "Get task logs" + description: | + Get `stdout` and `stderr` logs from a task. + See also [`/containers/{id}/logs`](#operation/ContainerLogs). + + **Note**: This endpoint works only for services with the `local`, + `json-file` or `journald` logging drivers. + operationId: "TaskLogs" + responses: + 200: + description: "logs returned as a stream in response body" + schema: + type: "string" + format: "binary" + 404: + description: "no such task" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such task: c2ada9df5af8" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + description: "ID of the task" + type: "string" + - name: "details" + in: "query" + description: "Show task context and extra details provided to logs." + type: "boolean" + default: false + - name: "follow" + in: "query" + description: "Keep connection after returning logs." + type: "boolean" + default: false + - name: "stdout" + in: "query" + description: "Return logs from `stdout`" + type: "boolean" + default: false + - name: "stderr" + in: "query" + description: "Return logs from `stderr`" + type: "boolean" + default: false + - name: "since" + in: "query" + description: "Only return logs since this time, as a UNIX timestamp" + type: "integer" + default: 0 + - name: "timestamps" + in: "query" + description: "Add timestamps to every log line" + type: "boolean" + default: false + - name: "tail" + in: "query" + description: | + Only return this number of log lines from the end of the logs. + Specify as an integer or `all` to output all log lines. + type: "string" + default: "all" + tags: ["Task"] + /secrets: + get: + summary: "List secrets" + operationId: "SecretList" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + type: "array" + items: + $ref: "#/definitions/Secret" + example: + - ID: "blt1owaxmitz71s9v5zh81zun" + Version: + Index: 85 + CreatedAt: "2017-07-20T13:55:28.678958722Z" + UpdatedAt: "2017-07-20T13:55:28.678958722Z" + Spec: + Name: "mysql-passwd" + Labels: + some.label: "some.value" + Driver: + Name: "secret-bucket" + Options: + OptionA: "value for driver option A" + OptionB: "value for driver option B" + - ID: "ktnbjxoalbkvbvedmg1urrz8h" + Version: + Index: 11 + CreatedAt: "2016-11-05T01:20:17.327670065Z" + UpdatedAt: "2016-11-05T01:20:17.327670065Z" + Spec: + Name: "app-dev.crt" + Labels: + foo: "bar" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to + process on the secrets list. + + Available filters: + + - `id=` + - `label= or label==value` + - `name=` + - `names=` + tags: ["Secret"] + /secrets/create: + post: + summary: "Create a secret" + operationId: "SecretCreate" + consumes: + - "application/json" + produces: + - "application/json" + responses: + 201: + description: "no error" + schema: + $ref: "#/definitions/IdResponse" + 409: + description: "name conflicts with an existing object" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "body" + in: "body" + schema: + allOf: + - $ref: "#/definitions/SecretSpec" + - type: "object" + example: + Name: "app-key.crt" + Labels: + foo: "bar" + Data: "VEhJUyBJUyBOT1QgQSBSRUFMIENFUlRJRklDQVRFCg==" + Driver: + Name: "secret-bucket" + Options: + OptionA: "value for driver option A" + OptionB: "value for driver option B" + tags: ["Secret"] + /secrets/{id}: + get: + summary: "Inspect a secret" + operationId: "SecretInspect" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Secret" + examples: + application/json: + ID: "ktnbjxoalbkvbvedmg1urrz8h" + Version: + Index: 11 + CreatedAt: "2016-11-05T01:20:17.327670065Z" + UpdatedAt: "2016-11-05T01:20:17.327670065Z" + Spec: + Name: "app-dev.crt" + Labels: + foo: "bar" + Driver: + Name: "secret-bucket" + Options: + OptionA: "value for driver option A" + OptionB: "value for driver option B" + + 404: + description: "secret not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + type: "string" + description: "ID of the secret" + tags: ["Secret"] + delete: + summary: "Delete a secret" + operationId: "SecretDelete" + produces: + - "application/json" + responses: + 204: + description: "no error" + 404: + description: "secret not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + type: "string" + description: "ID of the secret" + tags: ["Secret"] + /secrets/{id}/update: + post: + summary: "Update a Secret" + operationId: "SecretUpdate" + responses: + 200: + description: "no error" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such secret" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "The ID or name of the secret" + type: "string" + required: true + - name: "body" + in: "body" + schema: + $ref: "#/definitions/SecretSpec" + description: | + The spec of the secret to update. Currently, only the Labels field + can be updated. All other fields must remain unchanged from the + [SecretInspect endpoint](#operation/SecretInspect) response values. + - name: "version" + in: "query" + description: | + The version number of the secret object being updated. This is + required to avoid conflicting writes. + type: "integer" + format: "int64" + required: true + tags: ["Secret"] + /configs: + get: + summary: "List configs" + operationId: "ConfigList" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + type: "array" + items: + $ref: "#/definitions/Config" + example: + - ID: "ktnbjxoalbkvbvedmg1urrz8h" + Version: + Index: 11 + CreatedAt: "2016-11-05T01:20:17.327670065Z" + UpdatedAt: "2016-11-05T01:20:17.327670065Z" + Spec: + Name: "server.conf" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to + process on the configs list. + + Available filters: + + - `id=` + - `label= or label==value` + - `name=` + - `names=` + tags: ["Config"] + /configs/create: + post: + summary: "Create a config" + operationId: "ConfigCreate" + consumes: + - "application/json" + produces: + - "application/json" + responses: + 201: + description: "no error" + schema: + $ref: "#/definitions/IdResponse" + 409: + description: "name conflicts with an existing object" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "body" + in: "body" + schema: + allOf: + - $ref: "#/definitions/ConfigSpec" + - type: "object" + example: + Name: "server.conf" + Labels: + foo: "bar" + Data: "VEhJUyBJUyBOT1QgQSBSRUFMIENFUlRJRklDQVRFCg==" + tags: ["Config"] + /configs/{id}: + get: + summary: "Inspect a config" + operationId: "ConfigInspect" + produces: + - "application/json" + responses: + 200: + description: "no error" + schema: + $ref: "#/definitions/Config" + examples: + application/json: + ID: "ktnbjxoalbkvbvedmg1urrz8h" + Version: + Index: 11 + CreatedAt: "2016-11-05T01:20:17.327670065Z" + UpdatedAt: "2016-11-05T01:20:17.327670065Z" + Spec: + Name: "app-dev.crt" + 404: + description: "config not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + type: "string" + description: "ID of the config" + tags: ["Config"] + delete: + summary: "Delete a config" + operationId: "ConfigDelete" + produces: + - "application/json" + responses: + 204: + description: "no error" + 404: + description: "config not found" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + required: true + type: "string" + description: "ID of the config" + tags: ["Config"] + /configs/{id}/update: + post: + summary: "Update a Config" + operationId: "ConfigUpdate" + responses: + 200: + description: "no error" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 404: + description: "no such config" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + 503: + description: "node is not part of a swarm" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "id" + in: "path" + description: "The ID or name of the config" + type: "string" + required: true + - name: "body" + in: "body" + schema: + $ref: "#/definitions/ConfigSpec" + description: | + The spec of the config to update. Currently, only the Labels field + can be updated. All other fields must remain unchanged from the + [ConfigInspect endpoint](#operation/ConfigInspect) response values. + - name: "version" + in: "query" + description: | + The version number of the config object being updated. This is + required to avoid conflicting writes. + type: "integer" + format: "int64" + required: true + tags: ["Config"] + /distribution/{name}/json: + get: + summary: "Get image information from the registry" + description: | + Return image digest and platform information by contacting the registry. + operationId: "DistributionInspect" + produces: + - "application/json" + responses: + 200: + description: "descriptor and platform information" + schema: + type: "object" + x-go-name: DistributionInspect + title: "DistributionInspectResponse" + required: [Descriptor, Platforms] + properties: + Descriptor: + type: "object" + description: | + A descriptor struct containing digest, media type, and size. + properties: + MediaType: + type: "string" + Size: + type: "integer" + format: "int64" + Digest: + type: "string" + URLs: + type: "array" + items: + type: "string" + Platforms: + type: "array" + description: | + An array containing all platforms supported by the image. + items: + type: "object" + properties: + Architecture: + type: "string" + OS: + type: "string" + OSVersion: + type: "string" + OSFeatures: + type: "array" + items: + type: "string" + Variant: + type: "string" + Features: + type: "array" + items: + type: "string" + examples: + application/json: + Descriptor: + MediaType: "application/vnd.docker.distribution.manifest.v2+json" + Digest: "sha256:c0537ff6a5218ef531ece93d4984efc99bbf3f7497c0a7726c88e2bb7584dc96" + Size: 3987495 + URLs: + - "" + Platforms: + - Architecture: "amd64" + OS: "linux" + OSVersion: "" + OSFeatures: + - "" + Variant: "" + Features: + - "" + 401: + description: "Failed authentication or no image found" + schema: + $ref: "#/definitions/ErrorResponse" + examples: + application/json: + message: "No such image: someimage (tag: latest)" + 500: + description: "Server error" + schema: + $ref: "#/definitions/ErrorResponse" + parameters: + - name: "name" + in: "path" + description: "Image name or id" + type: "string" + required: true + tags: ["Distribution"] + /session: + post: + summary: "Initialize interactive session" + description: | + Start a new interactive session with a server. Session allows server to + call back to the client for advanced capabilities. + + ### Hijacking + + This endpoint hijacks the HTTP connection to HTTP2 transport that allows + the client to expose gPRC services on that connection. + + For example, the client sends this request to upgrade the connection: + + ``` + POST /session HTTP/1.1 + Upgrade: h2c + Connection: Upgrade + ``` + + The Docker daemon responds with a `101 UPGRADED` response follow with + the raw stream: + + ``` + HTTP/1.1 101 UPGRADED + Connection: Upgrade + Upgrade: h2c + ``` + operationId: "Session" + produces: + - "application/vnd.docker.raw-stream" + responses: + 101: + description: "no error, hijacking successful" + 400: + description: "bad parameter" + schema: + $ref: "#/definitions/ErrorResponse" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + tags: ["Session"]