github.com/guilhermebr/docker@v1.4.2-0.20150428121140-67da055cebca/docs/sources/reference/api/docker_remote_api_v1.15.md (about)

     1  page_title: Remote API v1.15
     2  page_description: API Documentation for Docker
     3  page_keywords: API, Docker, rcli, REST, documentation
     4  
     5  # Docker Remote API v1.15
     6  
     7  ## 1. Brief introduction
     8  
     9   - The Remote API has replaced `rcli`.
    10   - The daemon listens on `unix:///var/run/docker.sock` but you can
    11     [Bind Docker to another host/port or a Unix socket](
    12     /articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket).
    13   - The API tends to be REST, but for some complex commands, like `attach`
    14     or `pull`, the HTTP connection is hijacked to transport `STDOUT`,
    15     `STDIN` and `STDERR`.
    16  
    17  # 2. Endpoints
    18  
    19  ## 2.1 Containers
    20  
    21  ### List containers
    22  
    23  `GET /containers/json`
    24  
    25  List containers
    26  
    27  **Example request**:
    28  
    29          GET /containers/json?all=1&before=8dfafdbc3a40&size=1 HTTP/1.1
    30  
    31  **Example response**:
    32  
    33          HTTP/1.1 200 OK
    34          Content-Type: application/json
    35  
    36          [
    37               {
    38                       "Id": "8dfafdbc3a40",
    39                       "Image": "ubuntu:latest",
    40                       "Command": "echo 1",
    41                       "Created": 1367854155,
    42                       "Status": "Exit 0",
    43                       "Ports": [{"PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp"}],
    44                       "SizeRw": 12288,
    45                       "SizeRootFs": 0
    46               },
    47               {
    48                       "Id": "9cd87474be90",
    49                       "Image": "ubuntu:latest",
    50                       "Command": "echo 222222",
    51                       "Created": 1367854155,
    52                       "Status": "Exit 0",
    53                       "Ports": [],
    54                       "SizeRw": 12288,
    55                       "SizeRootFs": 0
    56               },
    57               {
    58                       "Id": "3176a2479c92",
    59                       "Image": "ubuntu:latest",
    60                       "Command": "echo 3333333333333333",
    61                       "Created": 1367854154,
    62                       "Status": "Exit 0",
    63                       "Ports":[],
    64                       "SizeRw":12288,
    65                       "SizeRootFs":0
    66               },
    67               {
    68                       "Id": "4cb07b47f9fb",
    69                       "Image": "ubuntu:latest",
    70                       "Command": "echo 444444444444444444444444444444444",
    71                       "Created": 1367854152,
    72                       "Status": "Exit 0",
    73                       "Ports": [],
    74                       "SizeRw": 12288,
    75                       "SizeRootFs": 0
    76               }
    77          ]
    78  
    79  Query Parameters:
    80  
    81  -   **all** – 1/True/true or 0/False/false, Show all containers.
    82          Only running containers are shown by default (i.e., this defaults to false)
    83  -   **limit** – Show `limit` last created
    84          containers, include non-running ones.
    85  -   **since** – Show only containers created since Id, include
    86          non-running ones.
    87  -   **before** – Show only containers created before Id, include
    88          non-running ones.
    89  -   **size** – 1/True/true or 0/False/false, Show the containers
    90          sizes
    91  -   **filters** - a json encoded value of the filters (a map[string][]string) to process on the containers list. Available filters:
    92    -   exited=<int> -- containers with exit code of <int>
    93    -   status=(restarting|running|paused|exited)
    94  
    95  Status Codes:
    96  
    97  -   **200** – no error
    98  -   **400** – bad parameter
    99  -   **500** – server error
   100  
   101  ### Create a container
   102  
   103  `POST /containers/create`
   104  
   105  Create a container
   106  
   107  **Example request**:
   108  
   109          POST /containers/create HTTP/1.1
   110          Content-Type: application/json
   111  
   112          {
   113               "Hostname": "",
   114               "Domainname": "",
   115               "User": "",
   116               "Memory": 0,
   117               "MemorySwap": 0,
   118               "CpuShares": 512,
   119               "Cpuset": "0,1",
   120               "AttachStdin": false,
   121               "AttachStdout": true,
   122               "AttachStderr": true,
   123               "Tty": false,
   124               "OpenStdin": false,
   125               "StdinOnce": false,
   126               "Env": null,
   127               "Cmd": [
   128                       "date"
   129               ],
   130               "Entrypoint": "",
   131               "Image": "ubuntu",
   132               "Volumes": {
   133                       "/tmp": {}
   134               },
   135               "WorkingDir": "",
   136               "NetworkDisabled": false,
   137               "MacAddress": "12:34:56:78:9a:bc",
   138               "ExposedPorts": {
   139                       "22/tcp": {}
   140               },
   141               "SecurityOpts": [""],
   142               "HostConfig": {
   143                 "Binds": ["/tmp:/tmp"],
   144                 "Links": ["redis3:redis"],
   145                 "LxcConf": {"lxc.utsname":"docker"},
   146                 "PortBindings": { "22/tcp": [{ "HostPort": "11022" }] },
   147                 "PublishAllPorts": false,
   148                 "Privileged": false,
   149                 "Dns": ["8.8.8.8"],
   150                 "DnsSearch": [""],
   151                 "ExtraHosts": null,
   152                 "VolumesFrom": ["parent", "other:ro"],
   153                 "CapAdd": ["NET_ADMIN"],
   154                 "CapDrop": ["MKNOD"],
   155                 "RestartPolicy": { "Name": "", "MaximumRetryCount": 0 },
   156                 "NetworkMode": "bridge",
   157                 "Devices": []
   158              }
   159          }
   160  
   161  **Example response**:
   162  
   163          HTTP/1.1 201 Created
   164          Content-Type: application/json
   165  
   166          {
   167               "Id": "f91ddc4b01e079c4481a8340bbbeca4dbd33d6e4a10662e499f8eacbb5bf252b"
   168               "Warnings": []
   169          }
   170  
   171  Json Parameters:
   172  
   173  -   **Hostname** - A string value containing the desired hostname to use for the
   174        container.
   175  -   **Domainname** - A string value containing the desired domain name to use
   176        for the container.
   177  -   **User** - A string value containing the user to use inside the container.
   178  -   **Memory** - Memory limit in bytes.
   179  -   **MemorySwap**- Total memory usage (memory + swap); set `-1` to disable swap.
   180  -   **CpuShares** - An integer value containing the CPU Shares for container
   181        (ie. the relative weight vs other containers).
   182      **CpuSet** - String value containing the cgroups Cpuset to use.
   183  -   **AttachStdin** - Boolean value, attaches to stdin.
   184  -   **AttachStdout** - Boolean value, attaches to stdout.
   185  -   **AttachStderr** - Boolean value, attaches to stderr.
   186  -   **Tty** - Boolean value, Attach standard streams to a tty, including stdin if it is not closed.
   187  -   **OpenStdin** - Boolean value, opens stdin,
   188  -   **StdinOnce** - Boolean value, close stdin after the 1 attached client disconnects.
   189  -   **Env** - A list of environment variables in the form of `VAR=value`
   190  -   **Cmd** - Command to run specified as a string or an array of strings.
   191  -   **Entrypoint** - Set the entrypoint for the container a a string or an array
   192        of strings
   193  -   **Image** - String value containing the image name to use for the container
   194  -   **Volumes** – An object mapping mountpoint paths (strings) inside the
   195          container to empty objects.
   196  -   **WorkingDir** - A string value containing the working dir for commands to
   197        run in.
   198  -   **NetworkDisabled** - Boolean value, when true disables networking for the
   199        container
   200  -   **ExposedPorts** - An object mapping ports to an empty object in the form of:
   201        `"ExposedPorts": { "<port>/<tcp|udp>: {}" }`
   202  -   **SecurityOpts**: A list of string values to customize labels for MLS
   203        systems, such as SELinux.
   204  -   **HostConfig**
   205    -   **Binds** – A list of volume bindings for this container.  Each volume
   206            binding is a string of the form `container_path` (to create a new
   207            volume for the container), `host_path:container_path` (to bind-mount
   208            a host path into the container), or `host_path:container_path:ro`
   209            (to make the bind-mount read-only inside the container).
   210    -   **Links** - A list of links for the container.  Each link entry should be of
   211          of the form "container_name:alias".
   212    -   **LxcConf** - LXC specific configurations.  These configurations will only
   213          work when using the `lxc` execution driver.
   214    -   **PortBindings** - A map of exposed container ports and the host port they
   215          should map to. It should be specified in the form
   216          `{ <port>/<protocol>: [{ "HostPort": "<port>" }] }`
   217          Take note that `port` is specified as a string and not an integer value.
   218    -   **PublishAllPorts** - Allocates a random host port for all of a container's
   219          exposed ports. Specified as a boolean value.
   220    -   **Privileged** - Gives the container full access to the host.  Specified as
   221          a boolean value.
   222    -   **Dns** - A list of dns servers for the container to use.
   223    -   **DnsSearch** - A list of DNS search domains
   224    -   **ExtraHosts** - A list of hostnames/IP mappings to be added to the
   225        container's `/etc/hosts` file. Specified in the form `["hostname:IP"]`.
   226    -   **VolumesFrom** - A list of volumes to inherit from another container.
   227          Specified in the form `<container name>[:<ro|rw>]`
   228    -   **CapAdd** - A list of kernel capabilities to add to the container.
   229    -   **Capdrop** - A list of kernel capabilities to drop from the container.
   230    -   **RestartPolicy** – The behavior to apply when the container exits.  The
   231            value is an object with a `Name` property of either `"always"` to
   232            always restart or `"on-failure"` to restart only when the container
   233            exit code is non-zero.  If `on-failure` is used, `MaximumRetryCount`
   234            controls the number of times to retry before giving up.
   235            The default is not to restart. (optional)
   236            An ever increasing delay (double the previous delay, starting at 100mS)
   237            is added before each restart to prevent flooding the server.
   238    -   **NetworkMode** - Sets the networking mode for the container. Supported
   239          values are: `bridge`, `host`, and `container:<name|id>`
   240    -   **Devices** - A list of devices to add to the container specified in the
   241          form
   242          `{ "PathOnHost": "/dev/deviceName", "PathInContainer": "/dev/deviceName", "CgroupPermissions": "mrw"}`
   243  
   244  Query Parameters:
   245  
   246  -   **name** – Assign the specified name to the container. Must
   247      match `/?[a-zA-Z0-9_-]+`.
   248  
   249  Status Codes:
   250  
   251  -   **201** – no error
   252  -   **404** – no such container
   253  -   **406** – impossible to attach (container not running)
   254  -   **500** – server error
   255  
   256  ### Inspect a container
   257  
   258  `GET /containers/(id)/json`
   259  
   260  Return low-level information on the container `id`
   261  
   262  
   263  **Example request**:
   264  
   265          GET /containers/4fa6e0f0c678/json HTTP/1.1
   266  
   267  **Example response**:
   268  
   269          HTTP/1.1 200 OK
   270          Content-Type: application/json
   271  
   272          {
   273                       "Id": "4fa6e0f0c6786287e131c3852c58a2e01cc697a68231826813597e4994f1d6e2",
   274                       "Created": "2013-05-07T14:51:42.041847+02:00",
   275                       "Path": "date",
   276                       "Args": [],
   277                       "Config": {
   278                               "Hostname": "4fa6e0f0c678",
   279                               "User": "",
   280                               "Memory": 0,
   281                               "MemorySwap": 0,
   282                               "AttachStdin": false,
   283                               "AttachStdout": true,
   284                               "AttachStderr": true,
   285                               "PortSpecs": null,
   286                               "Tty": false,
   287                               "OpenStdin": false,
   288                               "StdinOnce": false,
   289                               "Env": null,
   290                               "Cmd": [
   291                                       "date"
   292                               ],
   293                               "Dns": null,
   294                               "Image": "ubuntu",
   295                               "Volumes": {},
   296                               "VolumesFrom": "",
   297                               "WorkingDir": ""
   298                       },
   299                       "State": {
   300                               "Running": false,
   301                               "Pid": 0,
   302                               "ExitCode": 0,
   303                               "StartedAt": "2013-05-07T14:51:42.087658+02:01360",
   304                               "Ghost": false
   305                       },
   306                       "Image": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
   307                       "NetworkSettings": {
   308                               "IpAddress": "",
   309                               "IpPrefixLen": 0,
   310                               "Gateway": "",
   311                               "Bridge": "",
   312                               "PortMapping": null
   313                       },
   314                       "SysInitPath": "/home/kitty/go/src/github.com/docker/docker/bin/docker",
   315                       "ResolvConfPath": "/etc/resolv.conf",
   316                       "Volumes": {},
   317                       "HostConfig": {
   318                           "Binds": null,
   319                           "ContainerIDFile": "",
   320                           "LxcConf": [],
   321                           "Privileged": false,
   322                           "PortBindings": {
   323                              "80/tcp": [
   324                                  {
   325                                      "HostIp": "0.0.0.0",
   326                                      "HostPort": "49153"
   327                                  }
   328                              ]
   329                           },
   330                           "Links": ["/name:alias"],
   331                           "PublishAllPorts": false,
   332                           "CapAdd": ["NET_ADMIN"],
   333                           "CapDrop": ["MKNOD"]
   334                       }
   335          }
   336  
   337  Status Codes:
   338  
   339  -   **200** – no error
   340  -   **404** – no such container
   341  -   **500** – server error
   342  
   343  ### List processes running inside a container
   344  
   345  `GET /containers/(id)/top`
   346  
   347  List processes running inside the container `id`
   348  
   349  **Example request**:
   350  
   351          GET /containers/4fa6e0f0c678/top HTTP/1.1
   352  
   353  **Example response**:
   354  
   355          HTTP/1.1 200 OK
   356          Content-Type: application/json
   357  
   358          {
   359               "Titles": [
   360                       "USER",
   361                       "PID",
   362                       "%CPU",
   363                       "%MEM",
   364                       "VSZ",
   365                       "RSS",
   366                       "TTY",
   367                       "STAT",
   368                       "START",
   369                       "TIME",
   370                       "COMMAND"
   371                       ],
   372               "Processes": [
   373                       ["root","20147","0.0","0.1","18060","1864","pts/4","S","10:06","0:00","bash"],
   374                       ["root","20271","0.0","0.0","4312","352","pts/4","S+","10:07","0:00","sleep","10"]
   375               ]
   376          }
   377  
   378  Query Parameters:
   379  
   380  -   **ps_args** – ps arguments to use (e.g., aux)
   381  
   382  Status Codes:
   383  
   384  -   **200** – no error
   385  -   **404** – no such container
   386  -   **500** – server error
   387  
   388  ### Get container logs
   389  
   390  `GET /containers/(id)/logs`
   391  
   392  Get stdout and stderr logs from the container ``id``
   393  
   394  **Example request**:
   395  
   396         GET /containers/4fa6e0f0c678/logs?stderr=1&stdout=1&timestamps=1&follow=1&tail=10 HTTP/1.1
   397  
   398  **Example response**:
   399  
   400         HTTP/1.1 200 OK
   401         Content-Type: application/vnd.docker.raw-stream
   402  
   403         {{ STREAM }}
   404  
   405  Query Parameters:
   406  
   407  -   **follow** – 1/True/true or 0/False/false, return stream. Default false
   408  -   **stdout** – 1/True/true or 0/False/false, show stdout log. Default false
   409  -   **stderr** – 1/True/true or 0/False/false, show stderr log. Default false
   410  -   **timestamps** – 1/True/true or 0/False/false, print timestamps for
   411          every log line. Default false
   412  -   **tail** – Output specified number of lines at the end of logs: `all` or `<number>`. Default all
   413  
   414  Status Codes:
   415  
   416  -   **200** – no error
   417  -   **404** – no such container
   418  -   **500** – server error
   419  
   420  ### Inspect changes on a container's filesystem
   421  
   422  `GET /containers/(id)/changes`
   423  
   424  Inspect changes on container `id`'s filesystem
   425  
   426  **Example request**:
   427  
   428          GET /containers/4fa6e0f0c678/changes HTTP/1.1
   429  
   430  **Example response**:
   431  
   432          HTTP/1.1 200 OK
   433          Content-Type: application/json
   434  
   435          [
   436               {
   437                       "Path": "/dev",
   438                       "Kind": 0
   439               },
   440               {
   441                       "Path": "/dev/kmsg",
   442                       "Kind": 1
   443               },
   444               {
   445                       "Path": "/test",
   446                       "Kind": 1
   447               }
   448          ]
   449  
   450  Status Codes:
   451  
   452  -   **200** – no error
   453  -   **404** – no such container
   454  -   **500** – server error
   455  
   456  ### Export a container
   457  
   458  `GET /containers/(id)/export`
   459  
   460  Export the contents of container `id`
   461  
   462  **Example request**:
   463  
   464          GET /containers/4fa6e0f0c678/export HTTP/1.1
   465  
   466  **Example response**:
   467  
   468          HTTP/1.1 200 OK
   469          Content-Type: application/octet-stream
   470  
   471          {{ TAR STREAM }}
   472  
   473  Status Codes:
   474  
   475  -   **200** – no error
   476  -   **404** – no such container
   477  -   **500** – server error
   478  
   479  ### Resize a container TTY
   480  
   481  `GET /containers/(id)/resize?h=<height>&w=<width>`
   482  
   483  Resize the TTY of container `id`
   484  
   485  **Example request**:
   486  
   487          GET /containers/4fa6e0f0c678/resize?h=40&w=80 HTTP/1.1
   488  
   489  **Example response**:
   490  
   491          HTTP/1.1 200 OK
   492          Content-Length: 0
   493          Content-Type: text/plain; charset=utf-8
   494  
   495  Status Codes:
   496  
   497  -   **200** – no error
   498  -   **404** – No such container
   499  -   **500** – bad file descriptor
   500  
   501  ### Start a container
   502  
   503  `POST /containers/(id)/start`
   504  
   505  Start the container `id`
   506  
   507  **Example request**:
   508  
   509          POST /containers/(id)/start HTTP/1.1
   510          Content-Type: application/json
   511  
   512          {
   513               "Binds": ["/tmp:/tmp"],
   514               "Links": ["redis3:redis"],
   515               "LxcConf": {"lxc.utsname":"docker"},
   516               "PortBindings": { "22/tcp": [{ "HostPort": "11022" }] },
   517               "PublishAllPorts": false,
   518               "Privileged": false,
   519               "Dns": ["8.8.8.8"],
   520               "DnsSearch": [""],
   521               "VolumesFrom": ["parent", "other:ro"],
   522               "CapAdd": ["NET_ADMIN"],
   523               "CapDrop": ["MKNOD"],
   524               "RestartPolicy": { "Name": "", "MaximumRetryCount": 0 },
   525               "NetworkMode": "bridge",
   526               "Devices": []
   527          }
   528  
   529  **Example response**:
   530  
   531          HTTP/1.1 204 No Content
   532  
   533  Json Parameters:
   534  
   535  -   **Binds** – A list of volume bindings for this container.  Each volume
   536          binding is a string of the form `container_path` (to create a new
   537          volume for the container), `host_path:container_path` (to bind-mount
   538          a host path into the container), or `host_path:container_path:ro`
   539          (to make the bind-mount read-only inside the container).
   540  -   **Links** - A list of links for the container.  Each link entry should be of
   541        of the form "container_name:alias".
   542  -   **LxcConf** - LXC specific configurations.  These configurations will only
   543        work when using the `lxc` execution driver.
   544  -   **PortBindings** - A map of exposed container ports and the host port they
   545        should map to. It should be specified in the form
   546        `{ <port>/<protocol>: [{ "HostPort": "<port>" }] }`
   547        Take note that `port` is specified as a string and not an integer value.
   548  -   **PublishAllPorts** - Allocates a random host port for all of a container's
   549        exposed ports. Specified as a boolean value.
   550  -   **Privileged** - Gives the container full access to the host.  Specified as
   551        a boolean value.
   552  -   **Dns** - A list of dns servers for the container to use.
   553  -   **DnsSearch** - A list of DNS search domains
   554  -   **VolumesFrom** - A list of volumes to inherit from another container.
   555        Specified in the form `<container name>[:<ro|rw>]`
   556  -   **CapAdd** - A list of kernel capabilities to add to the container.
   557  -   **Capdrop** - A list of kernel capabilities to drop from the container.
   558  -   **RestartPolicy** – The behavior to apply when the container exits.  The
   559          value is an object with a `Name` property of either `"always"` to
   560          always restart or `"on-failure"` to restart only when the container
   561          exit code is non-zero.  If `on-failure` is used, `MaximumRetryCount`
   562          controls the number of times to retry before giving up.
   563          The default is not to restart. (optional)
   564          An ever increasing delay (double the previous delay, starting at 100mS)
   565          is added before each restart to prevent flooding the server.
   566  -   **NetworkMode** - Sets the networking mode for the container. Supported
   567        values are: `bridge`, `host`, and `container:<name|id>`
   568  -   **Devices** - A list of devices to add to the container specified in the
   569        form
   570        `{ "PathOnHost": "/dev/deviceName", "PathInContainer": "/dev/deviceName", "CgroupPermissions": "mrw"}`
   571  
   572  Status Codes:
   573  
   574  -   **204** – no error
   575  -   **304** – container already started
   576  -   **404** – no such container
   577  -   **500** – server error
   578  
   579  ### Stop a container
   580  
   581  `POST /containers/(id)/stop`
   582  
   583  Stop the container `id`
   584  
   585  **Example request**:
   586  
   587          POST /containers/e90e34656806/stop?t=5 HTTP/1.1
   588  
   589  **Example response**:
   590  
   591          HTTP/1.1 204 No Content
   592  
   593  Query Parameters:
   594  
   595  -   **t** – number of seconds to wait before killing the container
   596  
   597  Status Codes:
   598  
   599  -   **204** – no error
   600  -   **304** – container already stopped
   601  -   **404** – no such container
   602  -   **500** – server error
   603  
   604  ### Restart a container
   605  
   606  `POST /containers/(id)/restart`
   607  
   608  Restart the container `id`
   609  
   610  **Example request**:
   611  
   612          POST /containers/e90e34656806/restart?t=5 HTTP/1.1
   613  
   614  **Example response**:
   615  
   616          HTTP/1.1 204 No Content
   617  
   618  Query Parameters:
   619  
   620  -   **t** – number of seconds to wait before killing the container
   621  
   622  Status Codes:
   623  
   624  -   **204** – no error
   625  -   **404** – no such container
   626  -   **500** – server error
   627  
   628  ### Kill a container
   629  
   630  `POST /containers/(id)/kill`
   631  
   632  Kill the container `id`
   633  
   634  **Example request**:
   635  
   636          POST /containers/e90e34656806/kill HTTP/1.1
   637  
   638  **Example response**:
   639  
   640          HTTP/1.1 204 No Content
   641  
   642  Query Parameters
   643  
   644  -   **signal** - Signal to send to the container: integer or string like "SIGINT".
   645          When not set, SIGKILL is assumed and the call will waits for the container to exit.
   646  
   647  Status Codes:
   648  
   649  -   **204** – no error
   650  -   **404** – no such container
   651  -   **500** – server error
   652  
   653  ### Pause a container
   654  
   655  `POST /containers/(id)/pause`
   656  
   657  Pause the container `id`
   658  
   659  **Example request**:
   660  
   661          POST /containers/e90e34656806/pause HTTP/1.1
   662  
   663  **Example response**:
   664  
   665          HTTP/1.1 204 No Content
   666  
   667  Status Codes:
   668  
   669  -   **204** – no error
   670  -   **404** – no such container
   671  -   **500** – server error
   672  
   673  ### Unpause a container
   674  
   675  `POST /containers/(id)/unpause`
   676  
   677  Unpause the container `id`
   678  
   679  **Example request**:
   680  
   681          POST /containers/e90e34656806/unpause HTTP/1.1
   682  
   683  **Example response**:
   684  
   685          HTTP/1.1 204 No Content
   686  
   687  Status Codes:
   688  
   689  -   **204** – no error
   690  -   **404** – no such container
   691  -   **500** – server error
   692  
   693  ### Attach to a container
   694  
   695  `POST /containers/(id)/attach`
   696  
   697  Attach to the container `id`
   698  
   699  **Example request**:
   700  
   701          POST /containers/16253994b7c4/attach?logs=1&stream=0&stdout=1 HTTP/1.1
   702  
   703  **Example response**:
   704  
   705          HTTP/1.1 200 OK
   706          Content-Type: application/vnd.docker.raw-stream
   707  
   708          {{ STREAM }}
   709  
   710  Query Parameters:
   711  
   712  -   **logs** – 1/True/true or 0/False/false, return logs. Default false
   713  -   **stream** – 1/True/true or 0/False/false, return stream.
   714          Default false
   715  -   **stdin** – 1/True/true or 0/False/false, if stream=true, attach
   716          to stdin. Default false
   717  -   **stdout** – 1/True/true or 0/False/false, if logs=true, return
   718          stdout log, if stream=true, attach to stdout. Default false
   719  -   **stderr** – 1/True/true or 0/False/false, if logs=true, return
   720          stderr log, if stream=true, attach to stderr. Default false
   721  
   722  Status Codes:
   723  
   724  -   **200** – no error
   725  -   **400** – bad parameter
   726  -   **404** – no such container
   727  -   **500** – server error
   728  
   729      **Stream details**:
   730  
   731      When using the TTY setting is enabled in
   732      [`POST /containers/create`
   733      ](/reference/api/docker_remote_api_v1.9/#create-a-container "POST /containers/create"),
   734      the stream is the raw data from the process PTY and client's stdin.
   735      When the TTY is disabled, then the stream is multiplexed to separate
   736      stdout and stderr.
   737  
   738      The format is a **Header** and a **Payload** (frame).
   739  
   740      **HEADER**
   741  
   742      The header will contain the information on which stream write the
   743      stream (stdout or stderr). It also contain the size of the
   744      associated frame encoded on the last 4 bytes (uint32).
   745  
   746      It is encoded on the first 8 bytes like this:
   747  
   748          header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4}
   749  
   750      `STREAM_TYPE` can be:
   751  
   752  -   0: stdin (will be written on stdout)
   753  -   1: stdout
   754  -   2: stderr
   755  
   756      `SIZE1, SIZE2, SIZE3, SIZE4` are the 4 bytes of
   757      the uint32 size encoded as big endian.
   758  
   759      **PAYLOAD**
   760  
   761      The payload is the raw stream.
   762  
   763      **IMPLEMENTATION**
   764  
   765      The simplest way to implement the Attach protocol is the following:
   766  
   767      1.  Read 8 bytes
   768      2.  chose stdout or stderr depending on the first byte
   769      3.  Extract the frame size from the last 4 bytes
   770      4.  Read the extracted size and output it on the correct output
   771      5.  Goto 1
   772  
   773  ### Attach to a container (websocket)
   774  
   775  `GET /containers/(id)/attach/ws`
   776  
   777  Attach to the container `id` via websocket
   778  
   779  Implements websocket protocol handshake according to [RFC 6455](http://tools.ietf.org/html/rfc6455)
   780  
   781  **Example request**
   782  
   783          GET /containers/e90e34656806/attach/ws?logs=0&stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1
   784  
   785  **Example response**
   786  
   787          {{ STREAM }}
   788  
   789  Query Parameters:
   790  
   791  -   **logs** – 1/True/true or 0/False/false, return logs. Default false
   792  -   **stream** – 1/True/true or 0/False/false, return stream.
   793          Default false
   794  -   **stdin** – 1/True/true or 0/False/false, if stream=true, attach
   795          to stdin. Default false
   796  -   **stdout** – 1/True/true or 0/False/false, if logs=true, return
   797          stdout log, if stream=true, attach to stdout. Default false
   798  -   **stderr** – 1/True/true or 0/False/false, if logs=true, return
   799          stderr log, if stream=true, attach to stderr. Default false
   800  
   801  Status Codes:
   802  
   803  -   **200** – no error
   804  -   **400** – bad parameter
   805  -   **404** – no such container
   806  -   **500** – server error
   807  
   808  ### Wait a container
   809  
   810  `POST /containers/(id)/wait`
   811  
   812  Block until container `id` stops, then returns the exit code
   813  
   814  **Example request**:
   815  
   816          POST /containers/16253994b7c4/wait HTTP/1.1
   817  
   818  **Example response**:
   819  
   820          HTTP/1.1 200 OK
   821          Content-Type: application/json
   822  
   823          {"StatusCode": 0}
   824  
   825  Status Codes:
   826  
   827  -   **200** – no error
   828  -   **404** – no such container
   829  -   **500** – server error
   830  
   831  ### Remove a container
   832  
   833  `DELETE /containers/(id)`
   834  
   835  Remove the container `id` from the filesystem
   836  
   837  **Example request**:
   838  
   839          DELETE /containers/16253994b7c4?v=1 HTTP/1.1
   840  
   841  **Example response**:
   842  
   843          HTTP/1.1 204 No Content
   844  
   845  Query Parameters:
   846  
   847  -   **v** – 1/True/true or 0/False/false, Remove the volumes
   848          associated to the container. Default false
   849  -   **force** - 1/True/true or 0/False/false, Kill then remove the container.
   850          Default false
   851  
   852  Status Codes:
   853  
   854  -   **204** – no error
   855  -   **400** – bad parameter
   856  -   **404** – no such container
   857  -   **500** – server error
   858  
   859  ### Copy files or folders from a container
   860  
   861  `POST /containers/(id)/copy`
   862  
   863  Copy files or folders of container `id`
   864  
   865  **Example request**:
   866  
   867          POST /containers/4fa6e0f0c678/copy HTTP/1.1
   868          Content-Type: application/json
   869  
   870          {
   871               "Resource": "test.txt"
   872          }
   873  
   874  **Example response**:
   875  
   876          HTTP/1.1 200 OK
   877          Content-Type: application/x-tar
   878  
   879          {{ TAR STREAM }}
   880  
   881  Status Codes:
   882  
   883  -   **200** – no error
   884  -   **404** – no such container
   885  -   **500** – server error
   886  
   887  ## 2.2 Images
   888  
   889  ### List Images
   890  
   891  `GET /images/json`
   892  
   893  **Example request**:
   894  
   895          GET /images/json?all=0 HTTP/1.1
   896  
   897  **Example response**:
   898  
   899          HTTP/1.1 200 OK
   900          Content-Type: application/json
   901  
   902          [
   903            {
   904               "RepoTags": [
   905                 "ubuntu:12.04",
   906                 "ubuntu:precise",
   907                 "ubuntu:latest"
   908               ],
   909               "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
   910               "Created": 1365714795,
   911               "Size": 131506275,
   912               "VirtualSize": 131506275
   913            },
   914            {
   915               "RepoTags": [
   916                 "ubuntu:12.10",
   917                 "ubuntu:quantal"
   918               ],
   919               "ParentId": "27cf784147099545",
   920               "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
   921               "Created": 1364102658,
   922               "Size": 24653,
   923               "VirtualSize": 180116135
   924            }
   925          ]
   926  
   927  
   928  Query Parameters:
   929  
   930  -   **all** – 1/True/true or 0/False/false, default false
   931  -   **filters** – a json encoded value of the filters (a map[string][]string) to process on the images list. Available filters:
   932    -   dangling=true
   933  
   934  ### Create an image
   935  
   936  `POST /images/create`
   937  
   938  Create an image, either by pulling it from the registry or by importing it
   939  
   940  **Example request**:
   941  
   942          POST /images/create?fromImage=ubuntu HTTP/1.1
   943  
   944  **Example response**:
   945  
   946          HTTP/1.1 200 OK
   947          Content-Type: application/json
   948  
   949          {"status": "Pulling..."}
   950          {"status": "Pulling", "progress": "1 B/ 100 B", "progressDetail": {"current": 1, "total": 100}}
   951          {"error": "Invalid..."}
   952          ...
   953  
   954      When using this endpoint to pull an image from the registry, the
   955      `X-Registry-Auth` header can be used to include
   956      a base64-encoded AuthConfig object.
   957  
   958  Query Parameters:
   959  
   960  -   **fromImage** – name of the image to pull
   961  -   **fromSrc** – source to import.  The value may be a URL from which the image
   962          can be retrieved or `-` to read the image from the request body.
   963  -   **repo** – repository
   964  -   **tag** – tag
   965  -   **registry** – the registry to pull from
   966  
   967      Request Headers:
   968  
   969  -   **X-Registry-Auth** – base64-encoded AuthConfig object
   970  
   971  Status Codes:
   972  
   973  -   **200** – no error
   974  -   **500** – server error
   975  
   976  
   977  
   978  ### Inspect an image
   979  
   980  `GET /images/(name)/json`
   981  
   982  Return low-level information on the image `name`
   983  
   984  **Example request**:
   985  
   986          GET /images/ubuntu/json HTTP/1.1
   987  
   988  **Example response**:
   989  
   990          HTTP/1.1 200 OK
   991          Content-Type: application/json
   992  
   993          {
   994               "Created": "2013-03-23T22:24:18.818426-07:00",
   995               "Container": "3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
   996               "ContainerConfig":
   997                       {
   998                               "Hostname": "",
   999                               "User": "",
  1000                               "Memory": 0,
  1001                               "MemorySwap": 0,
  1002                               "AttachStdin": false,
  1003                               "AttachStdout": false,
  1004                               "AttachStderr": false,
  1005                               "PortSpecs": null,
  1006                               "Tty": true,
  1007                               "OpenStdin": true,
  1008                               "StdinOnce": false,
  1009                               "Env": null,
  1010                               "Cmd": ["/bin/bash"],
  1011                               "Dns": null,
  1012                               "Image": "ubuntu",
  1013                               "Volumes": null,
  1014                               "VolumesFrom": "",
  1015                               "WorkingDir": ""
  1016                       },
  1017               "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
  1018               "Parent": "27cf784147099545",
  1019               "Size": 6824592
  1020          }
  1021  
  1022  Status Codes:
  1023  
  1024  -   **200** – no error
  1025  -   **404** – no such image
  1026  -   **500** – server error
  1027  
  1028  ### Get the history of an image
  1029  
  1030  `GET /images/(name)/history`
  1031  
  1032  Return the history of the image `name`
  1033  
  1034  **Example request**:
  1035  
  1036          GET /images/ubuntu/history HTTP/1.1
  1037  
  1038  **Example response**:
  1039  
  1040          HTTP/1.1 200 OK
  1041          Content-Type: application/json
  1042  
  1043          [
  1044               {
  1045                       "Id": "b750fe79269d",
  1046                       "Created": 1364102658,
  1047                       "CreatedBy": "/bin/bash"
  1048               },
  1049               {
  1050                       "Id": "27cf78414709",
  1051                       "Created": 1364068391,
  1052                       "CreatedBy": ""
  1053               }
  1054          ]
  1055  
  1056  Status Codes:
  1057  
  1058  -   **200** – no error
  1059  -   **404** – no such image
  1060  -   **500** – server error
  1061  
  1062  ### Push an image on the registry
  1063  
  1064  `POST /images/(name)/push`
  1065  
  1066  Push the image `name` on the registry
  1067  
  1068  **Example request**:
  1069  
  1070          POST /images/test/push HTTP/1.1
  1071  
  1072  **Example response**:
  1073  
  1074          HTTP/1.1 200 OK
  1075          Content-Type: application/json
  1076  
  1077          {"status": "Pushing..."}
  1078          {"status": "Pushing", "progress": "1/? (n/a)", "progressDetail": {"current": 1}}}
  1079          {"error": "Invalid..."}
  1080          ...
  1081  
  1082      If you wish to push an image on to a private registry, that image must already have been tagged
  1083      into a repository which references that registry host name and port.  This repository name should
  1084      then be used in the URL. This mirrors the flow of the CLI.
  1085  
  1086  **Example request**:
  1087  
  1088          POST /images/registry.acme.com:5000/test/push HTTP/1.1
  1089  
  1090  
  1091  Query Parameters:
  1092  
  1093  -   **tag** – the tag to associate with the image on the registry, optional
  1094  
  1095  Request Headers:
  1096  
  1097  -   **X-Registry-Auth** – include a base64-encoded AuthConfig
  1098          object.
  1099  
  1100  Status Codes:
  1101  
  1102  -   **200** – no error
  1103  -   **404** – no such image
  1104  -   **500** – server error
  1105  
  1106  ### Tag an image into a repository
  1107  
  1108  `POST /images/(name)/tag`
  1109  
  1110  Tag the image `name` into a repository
  1111  
  1112  **Example request**:
  1113  
  1114          POST /images/test/tag?repo=myrepo&force=0&tag=v42 HTTP/1.1
  1115  
  1116  **Example response**:
  1117  
  1118          HTTP/1.1 201 OK
  1119  
  1120  Query Parameters:
  1121  
  1122  -   **repo** – The repository to tag in
  1123  -   **force** – 1/True/true or 0/False/false, default false
  1124  -   **tag** - The new tag name
  1125  
  1126  Status Codes:
  1127  
  1128  -   **201** – no error
  1129  -   **400** – bad parameter
  1130  -   **404** – no such image
  1131  -   **409** – conflict
  1132  -   **500** – server error
  1133  
  1134  ### Remove an image
  1135  
  1136  `DELETE /images/(name)`
  1137  
  1138  Remove the image `name` from the filesystem
  1139  
  1140  **Example request**:
  1141  
  1142          DELETE /images/test HTTP/1.1
  1143  
  1144  **Example response**:
  1145  
  1146          HTTP/1.1 200 OK
  1147          Content-type: application/json
  1148  
  1149          [
  1150           {"Untagged": "3e2f21a89f"},
  1151           {"Deleted": "3e2f21a89f"},
  1152           {"Deleted": "53b4f83ac9"}
  1153          ]
  1154  
  1155  Query Parameters:
  1156  
  1157  -   **force** – 1/True/true or 0/False/false, default false
  1158  -   **noprune** – 1/True/true or 0/False/false, default false
  1159  
  1160  Status Codes:
  1161  
  1162  -   **200** – no error
  1163  -   **404** – no such image
  1164  -   **409** – conflict
  1165  -   **500** – server error
  1166  
  1167  ### Search images
  1168  
  1169  `GET /images/search`
  1170  
  1171  Search for an image on [Docker Hub](https://hub.docker.com).
  1172  
  1173  > **Note**:
  1174  > The response keys have changed from API v1.6 to reflect the JSON
  1175  > sent by the registry server to the docker daemon's request.
  1176  
  1177  **Example request**:
  1178  
  1179          GET /images/search?term=sshd HTTP/1.1
  1180  
  1181  **Example response**:
  1182  
  1183          HTTP/1.1 200 OK
  1184          Content-Type: application/json
  1185  
  1186          [
  1187                  {
  1188                      "description": "",
  1189                      "is_official": false,
  1190                      "is_automated": false,
  1191                      "name": "wma55/u1210sshd",
  1192                      "star_count": 0
  1193                  },
  1194                  {
  1195                      "description": "",
  1196                      "is_official": false,
  1197                      "is_automated": false,
  1198                      "name": "jdswinbank/sshd",
  1199                      "star_count": 0
  1200                  },
  1201                  {
  1202                      "description": "",
  1203                      "is_official": false,
  1204                      "is_automated": false,
  1205                      "name": "vgauthier/sshd",
  1206                      "star_count": 0
  1207                  }
  1208          ...
  1209          ]
  1210  
  1211  Query Parameters:
  1212  
  1213  -   **term** – term to search
  1214  
  1215  Status Codes:
  1216  
  1217  -   **200** – no error
  1218  -   **500** – server error
  1219  
  1220  ## 2.3 Misc
  1221  
  1222  ### Build an image from Dockerfile via stdin
  1223  
  1224  `POST /build`
  1225  
  1226  Build an image from Dockerfile via stdin
  1227  
  1228  **Example request**:
  1229  
  1230          POST /build HTTP/1.1
  1231  
  1232          {{ TAR STREAM }}
  1233  
  1234  **Example response**:
  1235  
  1236          HTTP/1.1 200 OK
  1237          Content-Type: application/json
  1238  
  1239          {"stream": "Step 1..."}
  1240          {"stream": "..."}
  1241          {"error": "Error...", "errorDetail": {"code": 123, "message": "Error..."}}
  1242  
  1243      The stream must be a tar archive compressed with one of the
  1244      following algorithms: identity (no compression), gzip, bzip2, xz.
  1245  
  1246      The archive must include a file called `Dockerfile`
  1247      at its root. It may include any number of other files,
  1248      which will be accessible in the build context (See the [*ADD build
  1249      command*](/reference/builder/#dockerbuilder)).
  1250  
  1251  Query Parameters:
  1252  
  1253  -   **t** – repository name (and optionally a tag) to be applied to
  1254          the resulting image in case of success
  1255  -   **remote** – git or HTTP/HTTPS URI build source
  1256  -   **q** – suppress verbose build output
  1257  -   **nocache** – do not use the cache when building the image
  1258  -   **rm** - remove intermediate containers after a successful build (default behavior)
  1259  -   **forcerm** - always remove intermediate containers (includes rm)
  1260  
  1261      Request Headers:
  1262  
  1263  -   **Content-type** – should be set to `"application/tar"`.
  1264  -   **X-Registry-Config** – base64-encoded ConfigFile object
  1265  
  1266  Status Codes:
  1267  
  1268  -   **200** – no error
  1269  -   **500** – server error
  1270  
  1271  ### Check auth configuration
  1272  
  1273  `POST /auth`
  1274  
  1275  Get the default username and email
  1276  
  1277  **Example request**:
  1278  
  1279          POST /auth HTTP/1.1
  1280          Content-Type: application/json
  1281  
  1282          {
  1283               "username":" hannibal",
  1284               "password: "xxxx",
  1285               "email": "hannibal@a-team.com",
  1286               "serveraddress": "https://index.docker.io/v1/"
  1287          }
  1288  
  1289  **Example response**:
  1290  
  1291          HTTP/1.1 200 OK
  1292  
  1293  Status Codes:
  1294  
  1295  -   **200** – no error
  1296  -   **204** – no error
  1297  -   **500** – server error
  1298  
  1299  ### Display system-wide information
  1300  
  1301  `GET /info`
  1302  
  1303  Display system-wide information
  1304  
  1305  **Example request**:
  1306  
  1307          GET /info HTTP/1.1
  1308  
  1309  **Example response**:
  1310  
  1311          HTTP/1.1 200 OK
  1312          Content-Type: application/json
  1313  
  1314          {
  1315               "Containers": 11,
  1316               "Images": 16,
  1317               "Driver": "btrfs",
  1318               "ExecutionDriver": "native-0.1",
  1319               "KernelVersion": "3.12.0-1-amd64"
  1320               "Debug": false,
  1321               "NFd": 11,
  1322               "NGoroutines": 21,
  1323               "NEventsListener": 0,
  1324               "InitPath": "/usr/bin/docker",
  1325               "IndexServerAddress": ["https://index.docker.io/v1/"],
  1326               "MemoryLimit": true,
  1327               "SwapLimit": false,
  1328               "IPv4Forwarding": true
  1329          }
  1330  
  1331  Status Codes:
  1332  
  1333  -   **200** – no error
  1334  -   **500** – server error
  1335  
  1336  ### Show the docker version information
  1337  
  1338  `GET /version`
  1339  
  1340  Show the docker version information
  1341  
  1342  **Example request**:
  1343  
  1344          GET /version HTTP/1.1
  1345  
  1346  **Example response**:
  1347  
  1348          HTTP/1.1 200 OK
  1349          Content-Type: application/json
  1350  
  1351          {
  1352               "ApiVersion": "1.12",
  1353               "Version": "0.2.2",
  1354               "GitCommit": "5a2a5cc+CHANGES",
  1355               "GoVersion": "go1.0.3"
  1356          }
  1357  
  1358  Status Codes:
  1359  
  1360  -   **200** – no error
  1361  -   **500** – server error
  1362  
  1363  ### Ping the docker server
  1364  
  1365  `GET /_ping`
  1366  
  1367  Ping the docker server
  1368  
  1369  **Example request**:
  1370  
  1371          GET /_ping HTTP/1.1
  1372  
  1373  **Example response**:
  1374  
  1375          HTTP/1.1 200 OK
  1376          Content-Type: text/plain
  1377  
  1378          OK
  1379  
  1380  Status Codes:
  1381  
  1382  -   **200** - no error
  1383  -   **500** - server error
  1384  
  1385  ### Create a new image from a container's changes
  1386  
  1387  `POST /commit`
  1388  
  1389  Create a new image from a container's changes
  1390  
  1391  **Example request**:
  1392  
  1393          POST /commit?container=44c004db4b17&comment=message&repo=myrepo HTTP/1.1
  1394          Content-Type: application/json
  1395  
  1396          {
  1397               "Hostname": "",
  1398               "Domainname": "",
  1399               "User": "",
  1400               "Memory": 0,
  1401               "MemorySwap": 0,
  1402               "CpuShares": 512,
  1403               "Cpuset": "0,1",
  1404               "AttachStdin": false,
  1405               "AttachStdout": true,
  1406               "AttachStderr": true,
  1407               "PortSpecs": null,
  1408               "Tty": false,
  1409               "OpenStdin": false,
  1410               "StdinOnce": false,
  1411               "Env": null,
  1412               "Cmd": [
  1413                       "date"
  1414               ],
  1415               "Volumes": {
  1416                       "/tmp": {}
  1417               },
  1418               "WorkingDir": "",
  1419               "NetworkDisabled": false,
  1420               "ExposedPorts": {
  1421                       "22/tcp": {}
  1422               }
  1423          }
  1424  
  1425  **Example response**:
  1426  
  1427          HTTP/1.1 201 Created
  1428          Content-Type: application/vnd.docker.raw-stream
  1429  
  1430          {"Id": "596069db4bf5"}
  1431  
  1432  Json Parameters:
  1433  
  1434  -  **config** - the container's configuration
  1435  
  1436  Query Parameters:
  1437  
  1438  -   **container** – source container
  1439  -   **repo** – repository
  1440  -   **tag** – tag
  1441  -   **comment** – commit message
  1442  -   **author** – author (e.g., "John Hannibal Smith
  1443      <[hannibal@a-team.com](mailto:hannibal%40a-team.com)>")
  1444  
  1445  Status Codes:
  1446  
  1447  -   **201** – no error
  1448  -   **404** – no such container
  1449  -   **500** – server error
  1450  
  1451  ### Monitor Docker's events
  1452  
  1453  `GET /events`
  1454  
  1455  Get container events from docker, either in real time via streaming, or via
  1456  polling (using since).
  1457  
  1458  Docker containers will report the following events:
  1459  
  1460      create, destroy, die, export, kill, pause, restart, start, stop, unpause
  1461  
  1462  and Docker images will report:
  1463  
  1464      untag, delete
  1465  
  1466  **Example request**:
  1467  
  1468          GET /events?since=1374067924
  1469  
  1470  **Example response**:
  1471  
  1472          HTTP/1.1 200 OK
  1473          Content-Type: application/json
  1474  
  1475          {"status": "create", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067924}
  1476          {"status": "start", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067924}
  1477          {"status": "stop", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067966}
  1478          {"status": "destroy", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067970}
  1479  
  1480  Query Parameters:
  1481  
  1482  -   **since** – timestamp used for polling
  1483  -   **until** – timestamp used for polling
  1484  
  1485  Status Codes:
  1486  
  1487  -   **200** – no error
  1488  -   **500** – server error
  1489  
  1490  ### Get a tarball containing all images in a repository
  1491  
  1492  `GET /images/(name)/get`
  1493  
  1494  Get a tarball containing all images and metadata for the repository specified
  1495  by `name`.
  1496  
  1497  If `name` is a specific name and tag (e.g. ubuntu:latest), then only that image
  1498  (and its parents) are returned. If `name` is an image ID, similarly only that
  1499  image (and its parents) are returned, but with the exclusion of the
  1500  'repositories' file in the tarball, as there were no image names referenced.
  1501  
  1502  See the [image tarball format](#image-tarball-format) for more details.
  1503  
  1504  **Example request**
  1505  
  1506          GET /images/ubuntu/get
  1507  
  1508  **Example response**:
  1509  
  1510          HTTP/1.1 200 OK
  1511          Content-Type: application/x-tar
  1512  
  1513          Binary data stream
  1514  
  1515  Status Codes:
  1516  
  1517  -   **200** – no error
  1518  -   **500** – server error
  1519  
  1520  ### Get a tarball containing all images.
  1521  
  1522  `GET /images/get`
  1523  
  1524  Get a tarball containing all images and metadata for one or more repositories.
  1525  
  1526  For each value of the `names` parameter: if it is a specific name and tag (e.g.
  1527  ubuntu:latest), then only that image (and its parents) are returned; if it is
  1528  an image ID, similarly only that image (and its parents) are returned and there
  1529  would be no names referenced in the 'repositories' file for this image ID.
  1530  
  1531  See the [image tarball format](#image-tarball-format) for more details.
  1532  
  1533  **Example request**
  1534  
  1535          GET /images/get?names=myname%2Fmyapp%3Alatest&names=busybox
  1536  
  1537  **Example response**:
  1538  
  1539          HTTP/1.1 200 OK
  1540          Content-Type: application/x-tar
  1541  
  1542          Binary data stream
  1543  
  1544  Status Codes:
  1545  
  1546  -   **200** – no error
  1547  -   **500** – server error
  1548  
  1549  ### Load a tarball with a set of images and tags into docker
  1550  
  1551  `POST /images/load`
  1552  
  1553  Load a set of images and tags into the docker repository.
  1554  See the [image tarball format](#image-tarball-format) for more details.
  1555  
  1556  **Example request**
  1557  
  1558          POST /images/load
  1559  
  1560          Tarball in body
  1561  
  1562  **Example response**:
  1563  
  1564          HTTP/1.1 200 OK
  1565  
  1566  Status Codes:
  1567  
  1568  -   **200** – no error
  1569  -   **500** – server error
  1570  
  1571  ### Image tarball format
  1572  
  1573  An image tarball contains one directory per image layer (named using its long ID),
  1574  each containing three files:
  1575  
  1576  1. `VERSION`: currently `1.0` - the file format version
  1577  2. `json`: detailed layer information, similar to `docker inspect layer_id`
  1578  3. `layer.tar`: A tarfile containing the filesystem changes in this layer
  1579  
  1580  The `layer.tar` file will contain `aufs` style `.wh..wh.aufs` files and directories
  1581  for storing attribute changes and deletions.
  1582  
  1583  If the tarball defines a repository, there will also be a `repositories` file at
  1584  the root that contains a list of repository and tag names mapped to layer IDs.
  1585  
  1586  ```
  1587  {"hello-world":
  1588      {"latest": "565a9d68a73f6706862bfe8409a7f659776d4d60a8d096eb4a3cbce6999cc2a1"}
  1589  }
  1590  ```
  1591  
  1592  ### Exec Create
  1593  
  1594  `POST /containers/(id)/exec`
  1595  
  1596  Sets up an exec instance in a running container `id`
  1597  
  1598  **Example request**:
  1599  
  1600          POST /containers/e90e34656806/exec HTTP/1.1
  1601          Content-Type: application/json
  1602  
  1603          {
  1604  	     "AttachStdin": false,
  1605  	     "AttachStdout": true,
  1606  	     "AttachStderr": true,
  1607  	     "Tty": false,
  1608  	     "Cmd": [
  1609                       "date"
  1610               ],
  1611          }
  1612  
  1613  **Example response**:
  1614  
  1615          HTTP/1.1 201 OK
  1616          Content-Type: application/json
  1617  
  1618          {
  1619               "Id": "f90e34656806"
  1620          }
  1621  
  1622  Json Parameters:
  1623  
  1624  -   **AttachStdin** - Boolean value, attaches to stdin of the exec command.
  1625  -   **AttachStdout** - Boolean value, attaches to stdout of the exec command.
  1626  -   **AttachStderr** - Boolean value, attaches to stderr of the exec command.
  1627  -   **Tty** - Boolean value to allocate a pseudo-TTY
  1628  -   **Cmd** - Command to run specified as a string or an array of strings.
  1629  
  1630  
  1631  Status Codes:
  1632  
  1633  -   **201** – no error
  1634  -   **404** – no such container
  1635  
  1636  ### Exec Start
  1637  
  1638  `POST /exec/(id)/start`
  1639  
  1640  Starts a previously set up exec instance `id`. If `detach` is true, this API
  1641  returns after starting the `exec` command. Otherwise, this API sets up an
  1642  interactive session with the `exec` command.
  1643  
  1644  **Example request**:
  1645  
  1646          POST /exec/e90e34656806/start HTTP/1.1
  1647          Content-Type: application/json
  1648  
  1649          {
  1650  	     "Detach": false,
  1651  	     "Tty": false,
  1652          }
  1653  
  1654  **Example response**:
  1655  
  1656          HTTP/1.1 201 OK
  1657          Content-Type: application/json
  1658  
  1659          {{ STREAM }}
  1660  
  1661  Json Parameters:
  1662  
  1663  -   **Detach** - Detach from the exec command
  1664  -   **Tty** - Boolean value to allocate a pseudo-TTY
  1665  
  1666  Status Codes:
  1667  
  1668  -   **201** – no error
  1669  -   **404** – no such exec instance
  1670  
  1671      **Stream details**:
  1672      Similar to the stream behavior of `POST /container/(id)/attach` API
  1673  
  1674  ### Exec Resize
  1675  
  1676  `POST /exec/(id)/resize`
  1677  
  1678  Resizes the tty session used by the exec command `id`.
  1679  This API is valid only if `tty` was specified as part of creating and starting the exec command.
  1680  
  1681  **Example request**:
  1682  
  1683          POST /exec/e90e34656806/resize HTTP/1.1
  1684          Content-Type: plain/text
  1685  
  1686  **Example response**:
  1687  
  1688          HTTP/1.1 201 OK
  1689          Content-Type: plain/text
  1690  
  1691  Query Parameters:
  1692  
  1693  -   **h** – height of tty session
  1694  -   **w** – width
  1695  
  1696  Status Codes:
  1697  
  1698  -   **201** – no error
  1699  -   **404** – no such exec instance
  1700  
  1701  # 3. Going further
  1702  
  1703  ## 3.1 Inside `docker run`
  1704  
  1705  As an example, the `docker run` command line makes the following API calls:
  1706  
  1707  - Create the container
  1708  
  1709  - If the status code is 404, it means the image doesn't exist:
  1710      - Try to pull it
  1711      - Then retry to create the container
  1712  
  1713  - Start the container
  1714  
  1715  - If you are not in detached mode:
  1716  - Attach to the container, using logs=1 (to have stdout and
  1717        stderr from the container's start) and stream=1
  1718  
  1719  - If in detached mode or only stdin is attached:
  1720  - Display the container's id
  1721  
  1722  ## 3.2 Hijacking
  1723  
  1724  In this version of the API, /attach, uses hijacking to transport stdin,
  1725  stdout and stderr on the same socket. This might change in the future.
  1726  
  1727  ## 3.3 CORS Requests
  1728  
  1729  To enable cross origin requests to the remote api add the flag
  1730  "--api-enable-cors" when running docker in daemon mode.
  1731  
  1732      $ docker -d -H="192.168.1.9:2375" --api-enable-cors