github.com/daaku/docker@v1.5.0/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  -   **remote** – build source URI (git or HTTPS/HTTP)
   995  -   **q** – suppress verbose build output
   996  -   **nocache** – do not use the cache when building the image
   997  
   998      Request Headers:
   999  
  1000       
  1001  
  1002  -   **Content-type** – should be set to
  1003          `"application/tar"`.
  1004  
  1005  Status Codes:
  1006  
  1007  -   **200** – no error
  1008  -   **500** – server error
  1009  
  1010  ### Check auth configuration
  1011  
  1012  `POST /auth`
  1013  
  1014  Get the default username and email
  1015  
  1016  **Example request**:
  1017  
  1018          POST /auth HTTP/1.1
  1019          Content-Type: application/json
  1020  
  1021          {
  1022               "username":" hannibal",
  1023               "password: "xxxx",
  1024               "email": "hannibal@a-team.com",
  1025               "serveraddress": "https://index.docker.io/v1/"
  1026          }
  1027  
  1028  **Example response**:
  1029  
  1030          HTTP/1.1 200 OK
  1031          Content-Type: text/plain
  1032  
  1033  Status Codes:
  1034  
  1035  -   **200** – no error
  1036  -   **204** – no error
  1037  -   **500** – server error
  1038  
  1039  ### Display system-wide information
  1040  
  1041  `GET /info`
  1042  
  1043  Display system-wide information
  1044  
  1045  **Example request**:
  1046  
  1047          GET /info HTTP/1.1
  1048  
  1049  **Example response**:
  1050  
  1051          HTTP/1.1 200 OK
  1052          Content-Type: application/json
  1053  
  1054          {
  1055               "Containers":11,
  1056               "Images":16,
  1057               "Debug":false,
  1058               "NFd": 11,
  1059               "NGoroutines":21,
  1060               "MemoryLimit":true,
  1061               "SwapLimit":false,
  1062               "IPv4Forwarding":true
  1063          }
  1064  
  1065  Status Codes:
  1066  
  1067  -   **200** – no error
  1068  -   **500** – server error
  1069  
  1070  ### Show the docker version information
  1071  
  1072  `GET /version`
  1073  
  1074  Show the docker version information
  1075  
  1076  **Example request**:
  1077  
  1078          GET /version HTTP/1.1
  1079  
  1080  **Example response**:
  1081  
  1082          HTTP/1.1 200 OK
  1083          Content-Type: application/json
  1084  
  1085          {
  1086               "Version":"0.2.2",
  1087               "GitCommit":"5a2a5cc+CHANGES",
  1088               "GoVersion":"go1.0.3"
  1089          }
  1090  
  1091  Status Codes:
  1092  
  1093  -   **200** – no error
  1094  -   **500** – server error
  1095  
  1096  ### Create a new image from a container's changes
  1097  
  1098  `POST /commit`
  1099  
  1100  Create a new image from a container's changes
  1101  
  1102  **Example request**:
  1103  
  1104          POST /commit?container=44c004db4b17&m=message&repo=myrepo HTTP/1.1
  1105  
  1106  **Example response**:
  1107  
  1108          HTTP/1.1 201 OK
  1109              Content-Type: application/vnd.docker.raw-stream
  1110  
  1111          {"Id": "596069db4bf5"}
  1112  
  1113  Query Parameters:
  1114  
  1115  -   **container** – source container
  1116  -   **repo** – repository
  1117  -   **tag** – tag
  1118  -   **m** – commit message
  1119  -   **author** – author (e.g., "John Hannibal Smith
  1120          <[hannibal@a-team.com](mailto:hannibal%40a-team.com)>")
  1121  -   **run** – config automatically applied when the image is run.
  1122          (ex: {"Cmd": ["cat", "/world"], "PortSpecs":["22"]})
  1123  
  1124  Status Codes:
  1125  
  1126  -   **201** – no error
  1127  -   **404** – no such container
  1128  -   **500** – server error
  1129  
  1130  ### Monitor Docker's events
  1131  
  1132  `GET /events`
  1133  
  1134  Get events from docker, either in real time via streaming, or via
  1135  polling (using since).
  1136  
  1137  Docker containers will report the following events:
  1138  
  1139      create, destroy, die, export, kill, pause, restart, start, stop, unpause
  1140  
  1141  and Docker images will report:
  1142  
  1143      untag, delete
  1144  
  1145  **Example request**:
  1146  
  1147          GET /events?since=1374067924
  1148  
  1149  **Example response**:
  1150  
  1151          HTTP/1.1 200 OK
  1152          Content-Type: application/json
  1153  
  1154          {"status": "create", "id": "dfdf82bd3881","from": "base:latest", "time":1374067924}
  1155          {"status": "start", "id": "dfdf82bd3881","from": "base:latest", "time":1374067924}
  1156          {"status": "stop", "id": "dfdf82bd3881","from": "base:latest", "time":1374067966}
  1157          {"status": "destroy", "id": "dfdf82bd3881","from": "base:latest", "time":1374067970}
  1158  
  1159  Query Parameters:
  1160  
  1161  -   **since** – timestamp used for polling
  1162  
  1163  Status Codes:
  1164  
  1165  -   **200** – no error
  1166  -   **500** – server error
  1167  
  1168  ### Get a tarball containing all images and tags in a repository
  1169  
  1170  `GET /images/(name)/get`
  1171  
  1172  Get a tarball containing all images and metadata for the repository
  1173  specified by `name`.
  1174  
  1175  **Example request**
  1176  
  1177                 GET /images/ubuntu/get
  1178  
  1179  **Example response**:
  1180  
  1181             .. sourcecode:: http
  1182  
  1183                HTTP/1.1 200 OK
  1184          Content-Type: application/x-tar
  1185  
  1186          Binary data stream
  1187              :statuscode 200: no error
  1188              :statuscode 500: server error
  1189  
  1190  ### Load a tarball with a set of images and tags into docker
  1191  
  1192  `POST /images/load`
  1193  
  1194  Load a set of images and tags into the docker repository.
  1195  
  1196  **Example request**
  1197  
  1198              POST /images/load
  1199  
  1200            Tarball in body
  1201  
  1202          **Example response**:
  1203  
  1204          .. sourcecode:: http
  1205  
  1206             HTTP/1.1 200 OK
  1207  
  1208           :statuscode 200: no error
  1209           :statuscode 500: server error
  1210  
  1211  # 3. Going further
  1212  
  1213  ## 3.1 Inside `docker run`
  1214  
  1215  Here are the steps of `docker run` :
  1216  
  1217  -   Create the container
  1218  
  1219  -   If the status code is 404, it means the image doesn't exist:
  1220          -   Try to pull it
  1221          -   Then retry to create the container
  1222  
  1223  -   Start the container
  1224  
  1225  -   If you are not in detached mode:
  1226          -   Attach to the container, using logs=1 (to have stdout and
  1227              stderr from the container's start) and stream=1
  1228  
  1229  -   If in detached mode or only stdin is attached:
  1230          -   Display the container's id
  1231  
  1232  ## 3.2 Hijacking
  1233  
  1234  In this version of the API, /attach, uses hijacking to transport stdin,
  1235  stdout and stderr on the same socket. This might change in the future.
  1236  
  1237  ## 3.3 CORS Requests
  1238  
  1239  To enable cross origin requests to the remote api add the flag
  1240  "--api-enable-cors" when running docker in daemon mode.
  1241  
  1242      $ docker -d -H="192.168.1.9:2375" --api-enable-cors