github.com/eikeon/docker@v1.5.0-rc4/docs/sources/reference/api/docker_remote_api_v1.7.md (about)

     1  page_title: Remote API v1.7
     2  page_description: API Documentation for Docker
     3  page_keywords: API, Docker, rcli, REST, documentation
     4  
     5  # Docker Remote API v1.7
     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 bind
    11     Docker to another host/port or a Unix socket.
    12   - The API tends to be REST, but for some complex commands, like `attach`
    13     or `pull`, the HTTP connection is hijacked to transport `stdout, stdin`
    14     and `stderr`
    15  
    16  # 2. Endpoints
    17  
    18  ## 2.1 Containers
    19  
    20  ### List containers
    21  
    22  `GET /containers/json`
    23  
    24  List containers
    25  
    26  **Example request**:
    27  
    28          GET /containers/json?all=1&before=8dfafdbc3a40&size=1 HTTP/1.1
    29  
    30  **Example response**:
    31  
    32          HTTP/1.1 200 OK
    33          Content-Type: application/json
    34  
    35          [
    36               {
    37                       "Id": "8dfafdbc3a40",
    38                       "Image": "base:latest",
    39                       "Command": "echo 1",
    40                       "Created": 1367854155,
    41                       "Status": "Exit 0",
    42                       "Ports": [{"PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp"}],
    43                       "SizeRw": 12288,
    44                       "SizeRootFs": 0
    45               },
    46               {
    47                       "Id": "9cd87474be90",
    48                       "Image": "base:latest",
    49                       "Command": "echo 222222",
    50                       "Created": 1367854155,
    51                       "Status": "Exit 0",
    52                       "Ports": [],
    53                       "SizeRw": 12288,
    54                       "SizeRootFs": 0
    55               },
    56               {
    57                       "Id": "3176a2479c92",
    58                       "Image": "base:latest",
    59                       "Command": "echo 3333333333333333",
    60                       "Created": 1367854154,
    61                       "Status": "Exit 0",
    62                       "Ports":[],
    63                       "SizeRw":12288,
    64                       "SizeRootFs":0
    65               },
    66               {
    67                       "Id": "4cb07b47f9fb",
    68                       "Image": "base:latest",
    69                       "Command": "echo 444444444444444444444444444444444",
    70                       "Created": 1367854152,
    71                       "Status": "Exit 0",
    72                       "Ports": [],
    73                       "SizeRw": 12288,
    74                       "SizeRootFs": 0
    75               }
    76          ]
    77  
    78  Query Parameters:
    79  
    80  -   **all** – 1/True/true or 0/False/false, Show all containers.
    81      Only running containers are shown by default (i.e., this defaults to false)
    82  -   **limit** – Show `limit` last created containers, include non-running ones.
    83  -   **since** – Show only containers created since Id, include non-running ones.
    84  -   **before** – Show only containers created before Id, include non-running ones.
    85  -   **size** – 1/True/true or 0/False/false, Show the containers sizes
    86  
    87  Status Codes:
    88  
    89  -   **200** – no error
    90  -   **400** – bad parameter
    91  -   **500** – server error
    92  
    93  ### Create a container
    94  
    95  `POST /containers/create`
    96  
    97  Create a container
    98  
    99  **Example request**:
   100  
   101          POST /containers/create HTTP/1.1
   102          Content-Type: application/json
   103  
   104          {
   105               "Hostname":"",
   106               "User":"",
   107               "Memory":0,
   108               "MemorySwap":0,
   109               "AttachStdin":false,
   110               "AttachStdout":true,
   111               "AttachStderr":true,
   112               "PortSpecs":null,
   113               "Tty":false,
   114               "OpenStdin":false,
   115               "StdinOnce":false,
   116               "Env":null,
   117               "Cmd":[
   118                       "date"
   119               ],
   120               "Dns":null,
   121               "Image":"base",
   122               "Volumes":{
   123                       "/tmp": {}
   124               },
   125               "VolumesFrom":"",
   126               "WorkingDir":"",
   127               "ExposedPorts":{
   128                       "22/tcp": {}
   129               }
   130          }
   131  
   132  **Example response**:
   133  
   134          HTTP/1.1 201 Created
   135          Content-Type: application/json
   136  
   137          {
   138               "Id":"e90e34656806"
   139               "Warnings":[]
   140          }
   141  
   142  Json Parameters:
   143  
   144  -   **config** – the container's configuration
   145  
   146  Status Codes:
   147  
   148  -   **201** – no error
   149  -   **404** – no such container
   150  -   **406** – impossible to attach (container not running)
   151  -   **500** – server error
   152  
   153  ### Inspect a container
   154  
   155  `GET /containers/(id)/json`
   156  
   157  Return low-level information on the container `id`
   158  
   159  
   160  **Example request**:
   161  
   162          GET /containers/4fa6e0f0c678/json HTTP/1.1
   163  
   164  **Example response**:
   165  
   166          HTTP/1.1 200 OK
   167          Content-Type: application/json
   168  
   169          {
   170                       "Id": "4fa6e0f0c6786287e131c3852c58a2e01cc697a68231826813597e4994f1d6e2",
   171                       "Created": "2013-05-07T14:51:42.041847+02:00",
   172                       "Path": "date",
   173                       "Args": [],
   174                       "Config": {
   175                               "Hostname": "4fa6e0f0c678",
   176                               "User": "",
   177                               "Memory": 0,
   178                               "MemorySwap": 0,
   179                               "AttachStdin": false,
   180                               "AttachStdout": true,
   181                               "AttachStderr": true,
   182                               "PortSpecs": null,
   183                               "Tty": false,
   184                               "OpenStdin": false,
   185                               "StdinOnce": false,
   186                               "Env": null,
   187                               "Cmd": [
   188                                       "date"
   189                               ],
   190                               "Dns": null,
   191                               "Image": "base",
   192                               "Volumes": {},
   193                               "VolumesFrom": "",
   194                               "WorkingDir": ""
   195                       },
   196                       "State": {
   197                               "Running": false,
   198                               "Pid": 0,
   199                               "ExitCode": 0,
   200                               "StartedAt": "2013-05-07T14:51:42.087658+02:01360",
   201                               "Ghost": false
   202                       },
   203                       "Image": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
   204                       "NetworkSettings": {
   205                               "IpAddress": "",
   206                               "IpPrefixLen": 0,
   207                               "Gateway": "",
   208                               "Bridge": "",
   209                               "PortMapping": null
   210                       },
   211                       "SysInitPath": "/home/kitty/go/src/github.com/docker/docker/bin/docker",
   212                       "ResolvConfPath": "/etc/resolv.conf",
   213                       "Volumes": {}
   214          }
   215  
   216  Status Codes:
   217  
   218  -   **200** – no error
   219  -   **404** – no such container
   220  -   **500** – server error
   221  
   222  ### List processes running inside a container
   223  
   224  `GET /containers/(id)/top`
   225  
   226  List processes running inside the container `id`
   227  
   228  **Example request**:
   229  
   230          GET /containers/4fa6e0f0c678/top HTTP/1.1
   231  
   232  **Example response**:
   233  
   234          HTTP/1.1 200 OK
   235          Content-Type: application/json
   236  
   237          {
   238               "Titles": [
   239                       "USER",
   240                       "PID",
   241                       "%CPU",
   242                       "%MEM",
   243                       "VSZ",
   244                       "RSS",
   245                       "TTY",
   246                       "STAT",
   247                       "START",
   248                       "TIME",
   249                       "COMMAND"
   250                       ],
   251               "Processes": [
   252                       ["root","20147","0.0","0.1","18060","1864","pts/4","S","10:06","0:00","bash"],
   253                       ["root","20271","0.0","0.0","4312","352","pts/4","S+","10:07","0:00","sleep","10"]
   254               ]
   255          }
   256  
   257  Query Parameters:
   258  
   259  -   **ps_args** – ps arguments to use (e.g., aux)
   260  
   261  Status Codes:
   262  
   263  -   **200** – no error
   264  -   **404** – no such container
   265  -   **500** – server error
   266  
   267  ### Inspect changes on a container's filesystem
   268  
   269  `GET /containers/(id)/changes`
   270  
   271  Inspect changes on container `id`'s filesystem
   272  
   273  **Example request**:
   274  
   275          GET /containers/4fa6e0f0c678/changes HTTP/1.1
   276  
   277  **Example response**:
   278  
   279          HTTP/1.1 200 OK
   280          Content-Type: application/json
   281  
   282          [
   283               {
   284                       "Path": "/dev",
   285                       "Kind": 0
   286               },
   287               {
   288                       "Path": "/dev/kmsg",
   289                       "Kind": 1
   290               },
   291               {
   292                       "Path": "/test",
   293                       "Kind": 1
   294               }
   295          ]
   296  
   297  Status Codes:
   298  
   299  -   **200** – no error
   300  -   **404** – no such container
   301  -   **500** – server error
   302  
   303  ### Export a container
   304  
   305  `GET /containers/(id)/export`
   306  
   307  Export the contents of container `id`
   308  
   309  **Example request**:
   310  
   311          GET /containers/4fa6e0f0c678/export HTTP/1.1
   312  
   313  **Example response**:
   314  
   315          HTTP/1.1 200 OK
   316          Content-Type: application/octet-stream
   317  
   318          {{ TAR STREAM }}
   319  
   320  Status Codes:
   321  
   322  -   **200** – no error
   323  -   **404** – no such container
   324  -   **500** – server error
   325  
   326  ### Start a container
   327  
   328  `POST /containers/(id)/start`
   329  
   330  Start the container `id`
   331  
   332  **Example request**:
   333  
   334          POST /containers/(id)/start HTTP/1.1
   335          Content-Type: application/json
   336  
   337          {
   338               "Binds":["/tmp:/tmp"],
   339               "LxcConf":[{"Key":"lxc.utsname","Value":"docker"}],
   340               "PortBindings":{ "22/tcp": [{ "HostPort": "11022" }] },
   341               "Privileged":false,
   342               "PublishAllPorts":false
   343          }
   344  
   345      Binds need to reference Volumes that were defined during container
   346      creation.
   347  
   348  **Example response**:
   349  
   350          HTTP/1.1 204 No Content
   351          Content-Type: text/plain
   352  
   353  Json Parameters:
   354  
   355  -   **hostConfig** – the container's host configuration (optional)
   356  
   357  Status Codes:
   358  
   359  -   **204** – no error
   360  -   **404** – no such container
   361  -   **500** – server error
   362  
   363  ### Stop a container
   364  
   365  `POST /containers/(id)/stop`
   366  
   367  Stop the container `id`
   368  
   369  **Example request**:
   370  
   371          POST /containers/e90e34656806/stop?t=5 HTTP/1.1
   372  
   373  **Example response**:
   374  
   375          HTTP/1.1 204 OK
   376  
   377  Query Parameters:
   378  
   379  -   **t** – number of seconds to wait before killing the container
   380  
   381  Status Codes:
   382  
   383  -   **204** – no error
   384  -   **404** – no such container
   385  -   **500** – server error
   386  
   387  ### Restart a container
   388  
   389  `POST /containers/(id)/restart`
   390  
   391  Restart the container `id`
   392  
   393  **Example request**:
   394  
   395          POST /containers/e90e34656806/restart?t=5 HTTP/1.1
   396  
   397  **Example response**:
   398  
   399          HTTP/1.1 204 No Content
   400  
   401  Query Parameters:
   402  
   403  -   **t** – number of seconds to wait before killing the container
   404  
   405  Status Codes:
   406  
   407  -   **204** – no error
   408  -   **404** – no such container
   409  -   **500** – server error
   410  
   411  ### Kill a container
   412  
   413  `POST /containers/(id)/kill`
   414  
   415  Kill the container `id`
   416  
   417  **Example request**:
   418  
   419          POST /containers/e90e34656806/kill HTTP/1.1
   420  
   421  **Example response**:
   422  
   423          HTTP/1.1 204 No Content
   424  
   425  Status Codes:
   426  
   427  -   **204** – no error
   428  -   **404** – no such container
   429  -   **500** – server error
   430  
   431  ### Attach to a container
   432  
   433  `POST /containers/(id)/attach`
   434  
   435  Attach to the container `id`
   436  
   437  **Example request**:
   438  
   439          POST /containers/16253994b7c4/attach?logs=1&stream=0&stdout=1 HTTP/1.1
   440  
   441  **Example response**:
   442  
   443          HTTP/1.1 200 OK
   444          Content-Type: application/vnd.docker.raw-stream
   445  
   446          {{ STREAM }}
   447  
   448  Query Parameters:
   449  
   450  -   **logs** – 1/True/true or 0/False/false, return logs. Defaul
   451          false
   452  -   **stream** – 1/True/true or 0/False/false, return stream.
   453          Default false
   454  -   **stdin** – 1/True/true or 0/False/false, if stream=true, attach
   455          to stdin. Default false
   456  -   **stdout** – 1/True/true or 0/False/false, if logs=true, return
   457          stdout log, if stream=true, attach to stdout. Default false
   458  -   **stderr** – 1/True/true or 0/False/false, if logs=true, return
   459          stderr log, if stream=true, attach to stderr. Default false
   460  
   461  Status Codes:
   462  
   463  -   **200** – no error
   464  -   **400** – bad parameter
   465  -   **404** – no such container
   466  -   **500** – server error
   467  
   468      **Stream details**:
   469  
   470      When using the TTY setting is enabled in
   471      [`POST /containers/create`
   472      ](/reference/api/docker_remote_api_v1.7/#create-a-container),
   473      the stream is the raw data from the process PTY and client's stdin.
   474      When the TTY is disabled, then the stream is multiplexed to separate
   475      stdout and stderr.
   476  
   477      The format is a **Header** and a **Payload** (frame).
   478  
   479      **HEADER**
   480  
   481      The header will contain the information on which stream write the
   482      stream (stdout or stderr). It also contain the size of the
   483      associated frame encoded on the last 4 bytes (uint32).
   484  
   485      It is encoded on the first 8 bytes like this:
   486  
   487          header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4}
   488  
   489      `STREAM_TYPE` can be:
   490  
   491  -   0: stdin (will be written on stdout)
   492  -   1: stdout
   493  -   2: stderr
   494  
   495      `SIZE1, SIZE2, SIZE3, SIZE4` are the 4 bytes of
   496      the uint32 size encoded as big endian.
   497  
   498      **PAYLOAD**
   499  
   500      The payload is the raw stream.
   501  
   502      **IMPLEMENTATION**
   503  
   504      The simplest way to implement the Attach protocol is the following:
   505  
   506      1.  Read 8 bytes
   507      2.  chose stdout or stderr depending on the first byte
   508      3.  Extract the frame size from the last 4 byets
   509      4.  Read the extracted size and output it on the correct output
   510      5.  Goto 1)
   511  
   512  ### Attach to a container (websocket)
   513  
   514  `GET /containers/(id)/attach/ws`
   515  
   516  Attach to the container `id` via websocket
   517  
   518  Implements websocket protocol handshake according to [RFC 6455](http://tools.ietf.org/html/rfc6455)
   519  
   520  **Example request**
   521  
   522          GET /containers/e90e34656806/attach/ws?logs=0&stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1
   523  
   524  **Example response**
   525  
   526          {{ STREAM }}
   527  
   528  Query Parameters:
   529  
   530  -   **logs** – 1/True/true or 0/False/false, return logs. Default false
   531  -   **stream** – 1/True/true or 0/False/false, return stream.
   532          Default false
   533  -   **stdin** – 1/True/true or 0/False/false, if stream=true, attach
   534          to stdin. Default false
   535  -   **stdout** – 1/True/true or 0/False/false, if logs=true, return
   536          stdout log, if stream=true, attach to stdout. Default false
   537  -   **stderr** – 1/True/true or 0/False/false, if logs=true, return
   538          stderr log, if stream=true, attach to stderr. Default false
   539  
   540  Status Codes:
   541  
   542  -   **200** – no error
   543  -   **400** – bad parameter
   544  -   **404** – no such container
   545  -   **500** – server error
   546  
   547  ### Wait a container
   548  
   549  `POST /containers/(id)/wait`
   550  
   551  Block until container `id` stops, then returns the exit code
   552  
   553  **Example request**:
   554  
   555          POST /containers/16253994b7c4/wait HTTP/1.1
   556  
   557  **Example response**:
   558  
   559          HTTP/1.1 200 OK
   560          Content-Type: application/json
   561  
   562          {"StatusCode": 0}
   563  
   564  Status Codes:
   565  
   566  -   **200** – no error
   567  -   **404** – no such container
   568  -   **500** – server error
   569  
   570  ### Remove a container
   571  
   572  `DELETE /containers/(id)`
   573  
   574  Remove the container `id` from the filesystem
   575  
   576  **Example request**:
   577  
   578          DELETE /containers/16253994b7c4?v=1 HTTP/1.1
   579  
   580  **Example response**:
   581  
   582          HTTP/1.1 204 No Content
   583  
   584  Query Parameters:
   585  
   586  -   **v** – 1/True/true or 0/False/false, Remove the volumes
   587          associated to the container. Default false
   588  
   589  Status Codes:
   590  
   591  -   **204** – no error
   592  -   **400** – bad parameter
   593  -   **404** – no such container
   594  -   **500** – server error
   595  
   596  ### Copy files or folders from a container
   597  
   598  `POST /containers/(id)/copy`
   599  
   600  Copy files or folders of container `id`
   601  
   602  **Example request**:
   603  
   604          POST /containers/4fa6e0f0c678/copy HTTP/1.1
   605          Content-Type: application/json
   606  
   607          {
   608               "Resource": "test.txt"
   609          }
   610  
   611  **Example response**:
   612  
   613          HTTP/1.1 200 OK
   614          Content-Type: application/octet-stream
   615  
   616          {{ TAR STREAM }}
   617  
   618  Status Codes:
   619  
   620  -   **200** – no error
   621  -   **404** – no such container
   622  -   **500** – server error
   623  
   624  ## 2.2 Images
   625  
   626  ### List Images
   627  
   628  `GET /images/json`
   629  
   630  **Example request**:
   631  
   632          GET /images/json?all=0 HTTP/1.1
   633  
   634  **Example response**:
   635  
   636          HTTP/1.1 200 OK
   637          Content-Type: application/json
   638  
   639          [
   640            {
   641               "RepoTags": [
   642                 "ubuntu:12.04",
   643                 "ubuntu:precise",
   644                 "ubuntu:latest"
   645               ],
   646               "Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
   647               "Created": 1365714795,
   648               "Size": 131506275,
   649               "VirtualSize": 131506275
   650            },
   651            {
   652               "RepoTags": [
   653                 "ubuntu:12.10",
   654                 "ubuntu:quantal"
   655               ],
   656               "ParentId": "27cf784147099545",
   657               "Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
   658               "Created": 1364102658,
   659               "Size": 24653,
   660               "VirtualSize": 180116135
   661            }
   662          ]
   663  
   664  ### Create an image
   665  
   666  `POST /images/create`
   667  
   668  Create an image, either by pull it from the registry or by importing i
   669  
   670  **Example request**:
   671  
   672          POST /images/create?fromImage=base HTTP/1.1
   673  
   674  **Example response**:
   675  
   676          HTTP/1.1 200 OK
   677          Content-Type: application/json
   678  
   679          {"status":"Pulling..."}
   680          {"status":"Pulling", "progress":"1/? (n/a)"}
   681          {"error":"Invalid..."}
   682          ...
   683  
   684      When using this endpoint to pull an image from the registry, the
   685      `X-Registry-Auth` header can be used to include
   686      a base64-encoded AuthConfig object.
   687  
   688  Query Parameters:
   689  
   690  -   **fromImage** – name of the image to pull
   691  -   **fromSrc** – source to import, - means stdin
   692  -   **repo** – repository
   693  -   **tag** – tag
   694  -   **registry** – the registry to pull from
   695  
   696  Request Headers:
   697  
   698  -   **X-Registry-Auth** – base64-encoded AuthConfig object
   699  
   700  Status Codes:
   701  
   702  -   **200** – no error
   703  -   **500** – server error
   704  
   705  ### Insert a file in an image
   706  
   707  `POST /images/(name)/insert`
   708  
   709  Insert a file from `url` in the image `name` at `path`
   710  
   711  **Example request**:
   712  
   713          POST /images/test/insert?path=/usr&url=myurl HTTP/1.1
   714  
   715  **Example response**:
   716  
   717          HTTP/1.1 200 OK
   718          Content-Type: application/json
   719  
   720          {"status":"Inserting..."}
   721          {"status":"Inserting", "progress":"1/? (n/a)"}
   722          {"error":"Invalid..."}
   723          ...
   724  
   725  Query Parameters:
   726  
   727  -	**url** – The url from where the file is taken
   728  -	**path** – The path where the file is stored
   729  
   730  Status Codes:
   731  
   732  -   **200** – no error
   733  -   **500** – server error
   734  
   735  ### Inspect an image
   736  
   737  `GET /images/(name)/json`
   738  
   739  Return low-level information on the image `name`
   740  
   741  **Example request**:
   742  
   743          GET /images/base/json HTTP/1.1
   744  
   745  **Example response**:
   746  
   747          HTTP/1.1 200 OK
   748          Content-Type: application/json
   749  
   750          {
   751               "id":"b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
   752               "parent":"27cf784147099545",
   753               "created":"2013-03-23T22:24:18.818426-07:00",
   754               "container":"3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
   755               "container_config":
   756                       {
   757                               "Hostname":"",
   758                               "User":"",
   759                               "Memory":0,
   760                               "MemorySwap":0,
   761                               "AttachStdin":false,
   762                               "AttachStdout":false,
   763                               "AttachStderr":false,
   764                               "PortSpecs":null,
   765                               "Tty":true,
   766                               "OpenStdin":true,
   767                               "StdinOnce":false,
   768                               "Env":null,
   769                               "Cmd": ["/bin/bash"],
   770                               "Dns":null,
   771                               "Image":"base",
   772                               "Volumes":null,
   773                               "VolumesFrom":"",
   774                               "WorkingDir":""
   775                       },
   776               "Size": 6824592
   777          }
   778  
   779  Status Codes:
   780  
   781  -   **200** – no error
   782  -   **404** – no such image
   783  -   **500** – server error
   784  
   785  ### Get the history of an image
   786  
   787  `GET /images/(name)/history`
   788  
   789  Return the history of the image `name`
   790  
   791  **Example request**:
   792  
   793          GET /images/base/history HTTP/1.1
   794  
   795  **Example response**:
   796  
   797          HTTP/1.1 200 OK
   798          Content-Type: application/json
   799  
   800          [
   801               {
   802                       "Id": "b750fe79269d",
   803                       "Created": 1364102658,
   804                       "CreatedBy": "/bin/bash"
   805               },
   806               {
   807                       "Id": "27cf78414709",
   808                       "Created": 1364068391,
   809                       "CreatedBy": ""
   810               }
   811          ]
   812  
   813  Status Codes:
   814  
   815  -   **200** – no error
   816  -   **404** – no such image
   817  -   **500** – server error
   818  
   819  ### Push an image on the registry
   820  
   821  `POST /images/(name)/push`
   822  
   823  Push the image `name` on the registry
   824  
   825  **Example request**:
   826  
   827          POST /images/test/push HTTP/1.1
   828  
   829  **Example response**:
   830  
   831          HTTP/1.1 200 OK
   832          Content-Type: application/json
   833  
   834          {"status":"Pushing..."}
   835          {"status":"Pushing", "progress":"1/? (n/a)"}
   836          {"error":"Invalid..."}
   837          ...
   838  
   839      Request Headers:
   840  
   841       
   842  
   843  -   **X-Registry-Auth** – include a base64-encoded AuthConfig
   844          object.
   845  
   846  Status Codes:
   847  
   848  -   **200** – no error
   849  -   **404** – no such image
   850  -   **500** – server error
   851  
   852  ### Tag an image into a repository
   853  
   854  `POST /images/(name)/tag`
   855  
   856  Tag the image `name` into a repository
   857  
   858  **Example request**:
   859  
   860          POST /images/test/tag?repo=myrepo&force=0&tag=v42 HTTP/1.1
   861  
   862  **Example response**:
   863  
   864          HTTP/1.1 201 OK
   865  
   866  Query Parameters:
   867  
   868  -   **repo** – The repository to tag in
   869  -   **force** – 1/True/true or 0/False/false, default false
   870  -   **tag** - The new tag name
   871  
   872  Status Codes:
   873  
   874  -   **201** – no error
   875  -   **400** – bad parameter
   876  -   **404** – no such image
   877  -   **409** – conflict
   878  -   **500** – server error
   879  
   880  ### Remove an image
   881  
   882  `DELETE /images/(name)`
   883  
   884  Remove the image `name` from the filesystem
   885  
   886  **Example request**:
   887  
   888          DELETE /images/test HTTP/1.1
   889  
   890  **Example response**:
   891  
   892          HTTP/1.1 200 OK
   893          Content-type: application/json
   894  
   895          [
   896           {"Untagged": "3e2f21a89f"},
   897           {"Deleted": "3e2f21a89f"},
   898           {"Deleted": "53b4f83ac9"}
   899          ]
   900  
   901  Status Codes:
   902  
   903  -   **200** – no error
   904  -   **404** – no such image
   905  -   **409** – conflict
   906  -   **500** – server error
   907  
   908  ### Search images
   909  
   910  `GET /images/search`
   911  
   912  Search for an image on [Docker Hub](https://hub.docker.com).
   913  
   914  > **Note**:
   915  > The response keys have changed from API v1.6 to reflect the JSON
   916  > sent by the registry server to the docker daemon's request.
   917  
   918  **Example request**:
   919  
   920          GET /images/search?term=sshd HTTP/1.1
   921  
   922  **Example response**:
   923  
   924          HTTP/1.1 200 OK
   925          Content-Type: application/json
   926  
   927          [
   928                  {
   929                      "description": "",
   930                      "is_official": false,
   931                      "is_trusted": false,
   932                      "name": "wma55/u1210sshd",
   933                      "star_count": 0
   934                  },
   935                  {
   936                      "description": "",
   937                      "is_official": false,
   938                      "is_trusted": false,
   939                      "name": "jdswinbank/sshd",
   940                      "star_count": 0
   941                  },
   942                  {
   943                      "description": "",
   944                      "is_official": false,
   945                      "is_trusted": false,
   946                      "name": "vgauthier/sshd",
   947                      "star_count": 0
   948                  }
   949          ...
   950          ]
   951  
   952  Query Parameters:
   953  
   954  -   **term** – term to search
   955  
   956  Status Codes:
   957  
   958  -   **200** – no error
   959  -   **500** – server error
   960  
   961  ## 2.3 Misc
   962  
   963  ### Build an image from Dockerfile via stdin
   964  
   965  `POST /build`
   966  
   967  Build an image from Dockerfile via stdin
   968  
   969  **Example request**:
   970  
   971          POST /build HTTP/1.1
   972  
   973          {{ TAR STREAM }}
   974  
   975  **Example response**:
   976  
   977          HTTP/1.1 200 OK
   978          Content-Type: application/json
   979  
   980          {{ STREAM }}
   981  
   982      The stream must be a tar archive compressed with one of the
   983      following algorithms: identity (no compression), gzip, bzip2, xz.
   984  
   985      The archive must include a file called `Dockerfile`
   986      at its root. It may include any number of other files,
   987      which will be accessible in the build context (See the [*ADD build
   988      command*](/builder/#dockerbuilder)).
   989  
   990  Query Parameters:
   991  
   992  -   **t** – repository name (and optionally a tag) to be applied to
   993      the resulting image in case of success
   994  -   **q** – suppress verbose build output
   995  -   **nocache** – do not use the cache when building the image
   996  
   997      Request Headers:
   998  
   999       
  1000  
  1001  -   **Content-type** – should be set to
  1002          `"application/tar"`.
  1003  
  1004  Status Codes:
  1005  
  1006  -   **200** – no error
  1007  -   **500** – server error
  1008  
  1009  ### Check auth configuration
  1010  
  1011  `POST /auth`
  1012  
  1013  Get the default username and email
  1014  
  1015  **Example request**:
  1016  
  1017          POST /auth HTTP/1.1
  1018          Content-Type: application/json
  1019  
  1020          {
  1021               "username":" hannibal",
  1022               "password: "xxxx",
  1023               "email": "hannibal@a-team.com",
  1024               "serveraddress": "https://index.docker.io/v1/"
  1025          }
  1026  
  1027  **Example response**:
  1028  
  1029          HTTP/1.1 200 OK
  1030          Content-Type: text/plain
  1031  
  1032  Status Codes:
  1033  
  1034  -   **200** – no error
  1035  -   **204** – no error
  1036  -   **500** – server error
  1037  
  1038  ### Display system-wide information
  1039  
  1040  `GET /info`
  1041  
  1042  Display system-wide information
  1043  
  1044  **Example request**:
  1045  
  1046          GET /info HTTP/1.1
  1047  
  1048  **Example response**:
  1049  
  1050          HTTP/1.1 200 OK
  1051          Content-Type: application/json
  1052  
  1053          {
  1054               "Containers":11,
  1055               "Images":16,
  1056               "Debug":false,
  1057               "NFd": 11,
  1058               "NGoroutines":21,
  1059               "MemoryLimit":true,
  1060               "SwapLimit":false,
  1061               "IPv4Forwarding":true
  1062          }
  1063  
  1064  Status Codes:
  1065  
  1066  -   **200** – no error
  1067  -   **500** – server error
  1068  
  1069  ### Show the docker version information
  1070  
  1071  `GET /version`
  1072  
  1073  Show the docker version information
  1074  
  1075  **Example request**:
  1076  
  1077          GET /version HTTP/1.1
  1078  
  1079  **Example response**:
  1080  
  1081          HTTP/1.1 200 OK
  1082          Content-Type: application/json
  1083  
  1084          {
  1085               "Version":"0.2.2",
  1086               "GitCommit":"5a2a5cc+CHANGES",
  1087               "GoVersion":"go1.0.3"
  1088          }
  1089  
  1090  Status Codes:
  1091  
  1092  -   **200** – no error
  1093  -   **500** – server error
  1094  
  1095  ### Create a new image from a container's changes
  1096  
  1097  `POST /commit`
  1098  
  1099  Create a new image from a container's changes
  1100  
  1101  **Example request**:
  1102  
  1103          POST /commit?container=44c004db4b17&m=message&repo=myrepo HTTP/1.1
  1104  
  1105  **Example response**:
  1106  
  1107          HTTP/1.1 201 OK
  1108              Content-Type: application/vnd.docker.raw-stream
  1109  
  1110          {"Id": "596069db4bf5"}
  1111  
  1112  Query Parameters:
  1113  
  1114  -   **container** – source container
  1115  -   **repo** – repository
  1116  -   **tag** – tag
  1117  -   **m** – commit message
  1118  -   **author** – author (e.g., "John Hannibal Smith
  1119          <[hannibal@a-team.com](mailto:hannibal%40a-team.com)>")
  1120  -   **run** – config automatically applied when the image is run.
  1121          (ex: {"Cmd": ["cat", "/world"], "PortSpecs":["22"]})
  1122  
  1123  Status Codes:
  1124  
  1125  -   **201** – no error
  1126  -   **404** – no such container
  1127  -   **500** – server error
  1128  
  1129  ### Monitor Docker's events
  1130  
  1131  `GET /events`
  1132  
  1133  Get events from docker, either in real time via streaming, or via
  1134  polling (using since).
  1135  
  1136  Docker containers will report the following events:
  1137  
  1138      create, destroy, die, export, kill, pause, restart, start, stop, unpause
  1139  
  1140  and Docker images will report:
  1141  
  1142      untag, delete
  1143  
  1144  **Example request**:
  1145  
  1146          GET /events?since=1374067924
  1147  
  1148  **Example response**:
  1149  
  1150          HTTP/1.1 200 OK
  1151          Content-Type: application/json
  1152  
  1153          {"status": "create", "id": "dfdf82bd3881","from": "base:latest", "time":1374067924}
  1154          {"status": "start", "id": "dfdf82bd3881","from": "base:latest", "time":1374067924}
  1155          {"status": "stop", "id": "dfdf82bd3881","from": "base:latest", "time":1374067966}
  1156          {"status": "destroy", "id": "dfdf82bd3881","from": "base:latest", "time":1374067970}
  1157  
  1158  Query Parameters:
  1159  
  1160  -   **since** – timestamp used for polling
  1161  
  1162  Status Codes:
  1163  
  1164  -   **200** – no error
  1165  -   **500** – server error
  1166  
  1167  ### Get a tarball containing all images and tags in a repository
  1168  
  1169  `GET /images/(name)/get`
  1170  
  1171  Get a tarball containing all images and metadata for the repository
  1172  specified by `name`.
  1173  
  1174  **Example request**
  1175  
  1176                 GET /images/ubuntu/get
  1177  
  1178  **Example response**:
  1179  
  1180             .. sourcecode:: http
  1181  
  1182                HTTP/1.1 200 OK
  1183          Content-Type: application/x-tar
  1184  
  1185          Binary data stream
  1186              :statuscode 200: no error
  1187              :statuscode 500: server error
  1188  
  1189  ### Load a tarball with a set of images and tags into docker
  1190  
  1191  `POST /images/load`
  1192  
  1193  Load a set of images and tags into the docker repository.
  1194  
  1195  **Example request**
  1196  
  1197              POST /images/load
  1198  
  1199            Tarball in body
  1200  
  1201          **Example response**:
  1202  
  1203          .. sourcecode:: http
  1204  
  1205             HTTP/1.1 200 OK
  1206  
  1207           :statuscode 200: no error
  1208           :statuscode 500: server error
  1209  
  1210  # 3. Going further
  1211  
  1212  ## 3.1 Inside `docker run`
  1213  
  1214  Here are the steps of `docker run` :
  1215  
  1216  -   Create the container
  1217  
  1218  -   If the status code is 404, it means the image doesn't exist:
  1219          -   Try to pull it
  1220          -   Then retry to create the container
  1221  
  1222  -   Start the container
  1223  
  1224  -   If you are not in detached mode:
  1225          -   Attach to the container, using logs=1 (to have stdout and
  1226              stderr from the container's start) and stream=1
  1227  
  1228  -   If in detached mode or only stdin is attached:
  1229          -   Display the container's id
  1230  
  1231  ## 3.2 Hijacking
  1232  
  1233  In this version of the API, /attach, uses hijacking to transport stdin,
  1234  stdout and stderr on the same socket. This might change in the future.
  1235  
  1236  ## 3.3 CORS Requests
  1237  
  1238  To enable cross origin requests to the remote api add the flag
  1239  "--api-enable-cors" when running docker in daemon mode.
  1240  
  1241      $ docker -d -H="192.168.1.9:2375" --api-enable-cors