github.com/netbrain/docker@v1.9.0-rc2/docs/reference/api/docker_remote_api.md (about)

     1  <!--[metadata]>
     2  +++
     3  title = "Remote API"
     4  description = "API Documentation for Docker"
     5  keywords = ["API, Docker, rcli, REST,  documentation"]
     6  [menu.main]
     7  parent = "smn_remoteapi"
     8  +++
     9  <![end-metadata]-->
    10  
    11  # Docker Remote API
    12  
    13  Docker's Remote API uses an open schema model.  In this model, unknown 
    14  properties in incoming messages are ignored. Client applications need to take
    15  this behavior into account to ensure they do not break when talking to newer
    16  Docker daemons.
    17  
    18  The API tends to be REST, but for some complex commands, like attach or pull,
    19  the HTTP connection is hijacked to transport STDOUT, STDIN, and STDERR.
    20     
    21  By default the Docker daemon listens on `unix:///var/run/docker.sock` and the
    22  client must have `root` access to interact with the daemon. If a group named
    23  `docker` exists on your system, `docker` applies ownership of the socket to the
    24  group.
    25  
    26  The current version of the API is v1.21 which means calling `/info` is the same
    27  as calling `/v1.21/info`. To call an older version of the API use
    28  `/v1.20/info`.
    29  
    30  Use the table below to find the API version for a Docker version:
    31  
    32  Docker version  | API version                                     | Changes
    33  ----------------|-------------------------------------------------|-----------------------------
    34  1.9.x           | [1.21](/reference/api/docker_remote_api_v1.21/) | [API changes](/reference/api/docker_remote_api/#v1-21-api-changes)
    35  1.8.x           | [1.20](/reference/api/docker_remote_api_v1.20/) | [API changes](/reference/api/docker_remote_api/#v1-20-api-changes)
    36  1.7.x           | [1.19](/reference/api/docker_remote_api_v1.19/) | [API changes](/reference/api/docker_remote_api/#v1-19-api-changes)
    37  1.6.x           | [1.18](/reference/api/docker_remote_api_v1.18/) | [API changes](/reference/api/docker_remote_api/#v1-18-api-changes)
    38  1.5.x           | [1.17](/reference/api/docker_remote_api_v1.17/) | [API changes](/reference/api/docker_remote_api/#v1-17-api-changes)
    39  1.4.x           | [1.16](/reference/api/docker_remote_api_v1.16/) | [API changes](/reference/api/docker_remote_api/#v1-16-api-changes)
    40  1.3.x           | [1.15](/reference/api/docker_remote_api_v1.15/) | [API changes](/reference/api/docker_remote_api/#v1-15-api-changes)
    41  1.2.x           | [1.14](/reference/api/docker_remote_api_v1.14/) | [API changes](/reference/api/docker_remote_api/#v1-14-api-changes)
    42  
    43  Refer to the [GitHub repository](
    44  https://github.com/docker/docker/tree/master/docs/reference/api) for
    45  older releases.
    46  
    47  ## Authentication
    48  
    49  Since API version 1.2, the auth configuration is now handled client side, so the
    50  client has to send the `authConfig` as a `POST` in `/images/(name)/push`. The
    51  `authConfig`, set as the `X-Registry-Auth` header, is currently a Base64 encoded
    52  (JSON) string with the following structure:
    53  
    54  ```
    55  {"username": "string", "password": "string", "email": "string",
    56     "serveraddress" : "string", "auth": ""}
    57  ```
    58     
    59  Callers should leave the `auth` empty. The `serveraddress` is a domain/ip
    60  without protocol. Throughout this structure, double quotes are required.
    61  
    62  ## Using Docker Machine with the API
    63  
    64  If you are using `docker-machine`, the Docker daemon is on a virtual host that uses an encrypted TCP socket. This means, for Docker Machine users, you need to add extra parameters to `curl` or `wget` when making test API requests, for example:
    65  
    66  ```
    67  curl --insecure --cert ~/.docker/cert.pem --key ~/.docker/key.pem https://YOUR_VM_IP:2376/images/json
    68  
    69  wget --no-check-certificate --certificate=$DOCKER_CERT_PATH/cert.pem --private-key=$DOCKER_CERT_PATH/key.pem https://your_vm_ip:2376/images/json -O - -q
    70  ```
    71  
    72  ## Docker Events
    73  
    74  The following diagram depicts the container states accessible through the API.
    75  
    76  ![States](images/event_state.png)
    77  
    78  Some container-related events are not affected by container state, so they are not included in this diagram. These events are:
    79  
    80  * **export** emitted by `docker export`
    81  * **exec_create** emitted by `docker exec`
    82  * **exec_start** emitted by `docker exec` after **exec_create**
    83  
    84  Running `docker rmi` emits an **untag** event when removing an image name.  The `rmi` command may also emit **delete** events when images are deleted by ID directly or by deleting the last tag referring to the image.
    85  
    86  > **Acknowledgement**: This diagram and the accompanying text were used with the permission of Matt Good and Gilder Labs. See Matt's original blog post [Docker Events Explained](http://gliderlabs.com/blog/2015/04/14/docker-events-explained/).
    87  
    88  ## Version history
    89  
    90  This section lists each version from latest to oldest.  Each listing includes a link to the full documentation set and the changes relevant in that release.
    91  
    92  ### v1.21 API changes
    93  
    94  [Docker Remote API v1.21](docker_remote_api_v1.21.md) documentation
    95  
    96  * `GET /volumes` lists volumes from all volume drivers.
    97  * `POST /volumes/create` to create a volume.
    98  * `GET /volumes/(name)` get low-level information about a volume.
    99  * `DELETE /volumes/(name)`remove a volume with the specified name.
   100  * `VolumeDriver` has been moved from config to hostConfig to make the configuration portable.
   101  * `GET /images/(name)/json` now returns information about tags and digests of the image.
   102  * The `config` option now accepts the field `StopSignal`, which specifies the signal to use to kill a container.
   103  * `GET /containers/(id)/stats` will return networking information respectively for each interface.
   104  * The `hostConfig` option now accepts the field `DnsOptions`, which specifies a
   105  list of DNS options to be used in the container.
   106  * `POST /build` now optionally takes a serialized map of build-time variables.
   107  * `GET /events` now includes a `timenano` field, in addition to the existing `time` field.
   108  * `GET /events` now supports filtering by image and container labels.
   109  * `GET /info` now lists engine version information.
   110  * `GET /containers/json` will return `ImageID` of the image used by container.
   111  * `POST /exec/(name)/start` will now return an HTTP 409 when the container is either stopped or paused.
   112  * `GET /containers/(name)/json` now accepts a `size` parameter. Setting this parameter to '1' returns container size information in the `SizeRw` and `SizeRootFs` fields.
   113  
   114  ### v1.20 API changes
   115  
   116  [Docker Remote API v1.20](docker_remote_api_v1.20/) documentation
   117  
   118  * `GET /containers/(id)/archive` get an archive of filesystem content from a container.
   119  * `PUT /containers/(id)/archive` upload an archive of content to be extracted to
   120  an existing directory inside a container's filesystem.
   121  * `POST /containers/(id)/copy` is deprecated in favor of the above `archive`
   122  endpoint which can be used to download files and directories from a container.
   123  * The `hostConfig` option now accepts the field `GroupAdd`, which specifies a
   124  list of additional groups that the container process will run as.
   125  
   126  ### v1.19 API changes
   127  
   128  [Docker Remote API v1.19](docker_remote_api_v1.19.md) documentation
   129  
   130  * When the daemon detects a version mismatch with the client, usually when
   131  the client is newer than the daemon, an HTTP 400 is now returned instead
   132  of a 404.
   133  * `GET /containers/(id)/stats` now accepts `stream` bool to get only one set of stats and disconnect.
   134  * `GET /containers/(id)/logs` now accepts a `since` timestamp parameter.
   135  * `GET /info` The fields `Debug`, `IPv4Forwarding`, `MemoryLimit`, and
   136  `SwapLimit` are now returned as boolean instead of as an int. In addition, the
   137  end point now returns the new boolean fields `CpuCfsPeriod`, `CpuCfsQuota`, and
   138  `OomKillDisable`.
   139  * The `hostConfig` option now accepts the fields `CpuPeriod` and `CpuQuota`
   140  * `POST /build` accepts `cpuperiod` and `cpuquota` options
   141  
   142  ### v1.18 API changes
   143  
   144  [Docker Remote API v1.18](docker_remote_api_v1.18.md) documentation
   145  
   146  * `GET /version` now returns `Os`, `Arch` and `KernelVersion`.
   147  * `POST /containers/create` and `POST /containers/(id)/start`allow you to  set ulimit settings for use in the container.
   148  * `GET /info` now returns `SystemTime`, `HttpProxy`,`HttpsProxy` and `NoProxy`.
   149  * `GET /images/json` added a `RepoDigests` field to include image digest information.
   150  * `POST /build` can now set resource constraints for all containers created for the build.
   151  * `CgroupParent` can be passed in the host config to setup container cgroups under a specific cgroup.
   152  * `POST /build` closing the HTTP request cancels the build
   153  * `POST /containers/(id)/exec` includes `Warnings` field to response.
   154  
   155  ### v1.17 API changes
   156  
   157  [Docker Remote API v1.17](docker_remote_api_v1.17.md) documentation
   158  
   159  * The build supports `LABEL` command. Use this to add metadata to an image. For
   160  example you could add data describing the content of an image. `LABEL
   161  "com.example.vendor"="ACME Incorporated"`
   162  * `POST /containers/(id)/attach` and `POST /exec/(id)/start`
   163  * The Docker client now hints potential proxies about connection hijacking using HTTP Upgrade headers.
   164  * `POST /containers/create` sets labels on container create describing the container.
   165  * `GET /containers/json` returns the labels associated with the containers (`Labels`).
   166  * `GET /containers/(id)/json` returns the list current execs associated with the
   167  container (`ExecIDs`). This endpoint now returns the container labels
   168  (`Config.Labels`).
   169  * `POST /containers/(id)/rename` renames a container `id` to a new name.* 
   170  * `POST /containers/create` and `POST /containers/(id)/start` callers can pass
   171  `ReadonlyRootfs` in the host config to mount the container's root filesystem as
   172  read only.
   173  * `GET /containers/(id)/stats` returns a live stream of a container's resource usage statistics.
   174  * `GET /images/json` returns the labels associated with each image (`Labels`).
   175  
   176  
   177  ### v1.16 API changes
   178  
   179  [Docker Remote API v1.16](docker_remote_api_v1.16.md)
   180  
   181  * `GET /info` returns the number of CPUs available on the machine (`NCPU`),
   182  total memory available (`MemTotal`), a user-friendly name describing the running Docker daemon (`Name`), a unique ID identifying the daemon (`ID`), and
   183  a list of daemon labels (`Labels`).
   184  * `POST /containers/create` callers can set the new container's MAC address explicitly.
   185  * Volumes are now initialized when the container is created.
   186  * `POST /containers/(id)/copy` copies data which is contained in a volume.
   187  
   188  ### v1.15 API changes
   189  
   190  [Docker Remote API v1.15](docker_remote_api_v1.15.md) documentation
   191  
   192  `POST /containers/create` you can set a container's `HostConfig` when creating a
   193  container. Previously this was only available when starting a container.
   194  
   195  ### v1.14 API changes
   196  
   197  [Docker Remote API v1.14](docker_remote_api_v1.14.md) documentation
   198  
   199  * `DELETE /containers/(id)` when using `force`, the container will be immediately killed with SIGKILL.
   200  * `POST /containers/(id)/start` the `hostConfig` option accepts the field `CapAdd`, which specifies a list of capabilities
   201  to add, and the field `CapDrop`, which specifies a list of capabilities to drop.
   202  * `POST /images/create` th `fromImage` and `repo` parameters supportthe
   203  `repo:tag` format. Consequently,  the `tag` parameter is now obsolete. Using the
   204  new format and the `tag` parameter at the same time will return an error.