github.com/slene/docker@v1.8.0-rc1/docs/reference/api/docker_remote_api_v1.0.md (about)

     1  <!--[metadata]>
     2  +++
     3  draft = true
     4  title = "Remote API v1.0"
     5  description = "API Documentation for Docker"
     6  keywords = ["API, Docker, rcli, REST,  documentation"]
     7  [menu.main]
     8  parent = "smn_remoteapi"
     9  +++
    10  <![end-metadata]-->
    11  
    12  # Docker Remote API v1.0
    13  
    14  # 1. Brief introduction
    15  
    16  -   The Remote API is replacing rcli
    17  -   Default port in the docker daemon is 2375
    18  -   The API tends to be REST, but for some complex commands, like attach
    19      or pull, the HTTP connection is hijacked to transport stdout stdin
    20      and stderr
    21  
    22  # 2. Endpoints
    23  
    24  ## 2.1 Containers
    25  
    26  ### List containers
    27  
    28  `GET /containers/json`
    29  
    30  List containers
    31  
    32  **Example request**:
    33  
    34          GET /containers/json?all=1&before=8dfafdbc3a40 HTTP/1.1
    35  
    36  **Example response**:
    37  
    38          HTTP/1.1 200 OK
    39          Content-Type: application/json
    40  
    41          [
    42               {
    43                       "Id": "8dfafdbc3a40",
    44                       "Image": "ubuntu:latest",
    45                       "Command": "echo 1",
    46                       "Created": 1367854155,
    47                       "Status": "Exit 0"
    48               },
    49               {
    50                       "Id": "9cd87474be90",
    51                       "Image": "ubuntu:latest",
    52                       "Command": "echo 222222",
    53                       "Created": 1367854155,
    54                       "Status": "Exit 0"
    55               },
    56               {
    57                       "Id": "3176a2479c92",
    58                       "Image": "centos:latest",
    59                       "Command": "echo 3333333333333333",
    60                       "Created": 1367854154,
    61                       "Status": "Exit 0"
    62               },
    63               {
    64                       "Id": "4cb07b47f9fb",
    65                       "Image": "fedora:latest",
    66                       "Command": "echo 444444444444444444444444444444444",
    67                       "Created": 1367854152,
    68                       "Status": "Exit 0"
    69               }
    70          ]
    71  
    72  Query Parameters:
    73  
    74  -   **all** – 1/True/true or 0/False/false, Show all containers.
    75          Only running containers are shown by default
    76  -   **limit** – Show `limit` last created
    77          containers, include non-running ones.
    78  -   **since** – Show only containers created since Id, include
    79          non-running ones.
    80  -   **before** – Show only containers created before Id, include
    81          non-running ones.
    82  
    83  Status Codes:
    84  
    85  -   **200** – no error
    86  -   **400** – bad parameter
    87  -   **500** – server error
    88  
    89  ### Create a container
    90  
    91  `POST /containers/create`
    92  
    93  Create a container
    94  
    95  **Example request**:
    96  
    97          POST /containers/create HTTP/1.1
    98          Content-Type: application/json
    99  
   100          {
   101               "Hostname":"",
   102               "User":"",
   103               "Memory":0,
   104               "MemorySwap":0,
   105               "AttachStdin":false,
   106               "AttachStdout":true,
   107               "AttachStderr":true,
   108               "PortSpecs":null,
   109               "Tty":false,
   110               "OpenStdin":false,
   111               "StdinOnce":false,
   112               "Env":null,
   113               "Cmd":[
   114                       "date"
   115               ],
   116               "Dns":null,
   117               "Image":"ubuntu",
   118               "Volumes":{},
   119               "VolumesFrom":""
   120          }
   121  
   122  **Example response**:
   123  
   124          HTTP/1.1 201 Created
   125          Content-Type: application/json
   126  
   127          {
   128               "Id":"e90e34656806"
   129               "Warnings":[]
   130          }
   131  
   132  Json Parameters:
   133  
   134  -   **config** – the container's configuration
   135  
   136  Status Codes:
   137  
   138  -   **201** – no error
   139  -   **404** – no such container
   140  -   **406** – impossible to attach (container not running)
   141  -   **500** – server error
   142  
   143  ### Inspect a container
   144  
   145  `GET /containers/(id)/json`
   146  
   147  Return low-level information on the container `id`
   148  
   149  
   150  **Example request**:
   151  
   152          GET /containers/4fa6e0f0c678/json HTTP/1.1
   153  
   154  **Example response**:
   155  
   156          HTTP/1.1 200 OK
   157          Content-Type: application/json
   158  
   159          {
   160                       "Id": "4fa6e0f0c6786287e131c3852c58a2e01cc697a68231826813597e4994f1d6e2",
   161                       "Created": "2013-05-07T14:51:42.041847+02:00",
   162                       "Path": "date",
   163                       "Args": [],
   164                       "Config": {
   165                               "Hostname": "4fa6e0f0c678",
   166                               "User": "",
   167                               "Memory": 0,
   168                               "MemorySwap": 0,
   169                               "AttachStdin": false,
   170                               "AttachStdout": true,
   171                               "AttachStderr": true,
   172                               "PortSpecs": null,
   173                               "Tty": false,
   174                               "OpenStdin": false,
   175                               "StdinOnce": false,
   176                               "Env": null,
   177                               "Cmd": [
   178                                       "date"
   179                               ],
   180                               "Dns": null,
   181                               "Image": "ubuntu",
   182                               "Volumes": {},
   183                               "VolumesFrom": ""
   184                       },
   185                       "State": {
   186                               "Running": false,
   187                               "Pid": 0,
   188                               "ExitCode": 0,
   189                               "StartedAt": "2013-05-07T14:51:42.087658+02:01360",
   190                               "Ghost": false
   191                       },
   192                       "Image": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
   193                       "NetworkSettings": {
   194                               "IpAddress": "",
   195                               "IpPrefixLen": 0,
   196                               "Gateway": "",
   197                               "Bridge": "",
   198                               "PortMapping": null
   199                       },
   200                       "SysInitPath": "/home/kitty/go/src/github.com/docker/docker/bin/docker",
   201                       "ResolvConfPath": "/etc/resolv.conf",
   202                       "Volumes": {}
   203          }
   204  
   205  Status Codes:
   206  
   207  -   **200** – no error
   208  -   **404** – no such container
   209  -   **500** – server error
   210  
   211  ### Inspect changes on a container's filesystem
   212  
   213  `GET /containers/(id)/changes`
   214  
   215  Inspect changes on container `id`'s filesystem
   216  
   217  **Example request**:
   218  
   219          GET /containers/4fa6e0f0c678/changes HTTP/1.1
   220  
   221  **Example response**:
   222  
   223          HTTP/1.1 200 OK
   224          Content-Type: application/json
   225  
   226          [
   227               {
   228                       "Path": "/dev",
   229                       "Kind": 0
   230               },
   231               {
   232                       "Path": "/dev/kmsg",
   233                       "Kind": 1
   234               },
   235               {
   236                       "Path": "/test",
   237                       "Kind": 1
   238               }
   239          ]
   240  
   241  Status Codes:
   242  
   243  -   **200** – no error
   244  -   **404** – no such container
   245  -   **500** – server error
   246  
   247  ### Export a container
   248  
   249  `GET /containers/(id)/export`
   250  
   251  Export the contents of container `id`
   252  
   253  **Example request**:
   254  
   255          GET /containers/4fa6e0f0c678/export HTTP/1.1
   256  
   257  **Example response**:
   258  
   259          HTTP/1.1 200 OK
   260          Content-Type: application/octet-stream
   261  
   262          {{ TAR STREAM }}
   263  
   264  Status Codes:
   265  
   266  -   **200** – no error
   267  -   **404** – no such container
   268  -   **500** – server error
   269  
   270  ### Start a container
   271  
   272  `POST /containers/(id)/start`
   273  
   274  Start the container `id`
   275  
   276  **Example request**:
   277  
   278          POST /containers/e90e34656806/start HTTP/1.1
   279  
   280  **Example response**:
   281  
   282          HTTP/1.1 200 OK
   283  
   284  Status Codes:
   285  
   286  -   **200** – no error
   287  -   **404** – no such container
   288  -   **500** – server error
   289  
   290  ### Stop a container
   291  
   292  `POST /containers/(id)/stop`
   293  
   294  Stop the container `id`
   295  
   296  **Example request**:
   297  
   298          POST /containers/e90e34656806/stop?t=5 HTTP/1.1
   299  
   300  **Example response**:
   301  
   302          HTTP/1.1 204 OK
   303  
   304  Query Parameters:
   305  
   306  -   **t** – number of seconds to wait before killing the container
   307  
   308  Status Codes:
   309  
   310  -   **204** – no error
   311  -   **404** – no such container
   312  -   **500** – server error
   313  
   314  ### Restart a container
   315  
   316  `POST /containers/(id)/restart`
   317  
   318  Restart the container `id`
   319  
   320  **Example request**:
   321  
   322          POST /containers/e90e34656806/restart?t=5 HTTP/1.1
   323  
   324  **Example response**:
   325  
   326          HTTP/1.1 204 No Content
   327  
   328  Query Parameters:
   329  
   330  -   **t** – number of seconds to wait before killing the container
   331  
   332  Status Codes:
   333  
   334  -   **204** – no error
   335  -   **404** – no such container
   336  -   **500** – server error
   337  
   338  ### Kill a container
   339  
   340  `POST /containers/(id)/kill`
   341  
   342  Kill the container `id`
   343  
   344  **Example request**:
   345  
   346          POST /containers/e90e34656806/kill HTTP/1.1
   347  
   348  **Example response**:
   349  
   350          HTTP/1.1 204 No Content
   351  
   352  Status Codes:
   353  
   354  -   **204** – no error
   355  -   **404** – no such container
   356  -   **500** – server error
   357  
   358  ### Attach to a container
   359  
   360  `POST /containers/(id)/attach`
   361  
   362  Attach to the container `id`
   363  
   364  **Example request**:
   365  
   366          POST /containers/16253994b7c4/attach?logs=1&stream=0&stdout=1 HTTP/1.1
   367  
   368  **Example response**:
   369  
   370          HTTP/1.1 200 OK
   371          Content-Type: application/vnd.docker.raw-stream
   372  
   373          {{ STREAM }}
   374  
   375  Query Parameters:
   376  
   377  -   **logs** – 1/True/true or 0/False/false, return logs. Defaul
   378          false
   379  -   **stream** – 1/True/true or 0/False/false, return stream.
   380          Default false
   381  -   **stdin** – 1/True/true or 0/False/false, if stream=true, attach
   382          to stdin. Default false
   383  -   **stdout** – 1/True/true or 0/False/false, if logs=true, return
   384          stdout log, if stream=true, attach to stdout. Default false
   385  -   **stderr** – 1/True/true or 0/False/false, if logs=true, return
   386          stderr log, if stream=true, attach to stderr. Default false
   387  
   388  Status Codes:
   389  
   390  -   **200** – no error
   391  -   **400** – bad parameter
   392  -   **404** – no such container
   393  -   **500** – server error
   394  
   395  ### Attach to a container (websocket)
   396  
   397  `GET /containers/(id)/attach/ws`
   398  
   399  Attach to the container `id` via websocket
   400  
   401  Implements websocket protocol handshake according to [RFC 6455](http://tools.ietf.org/html/rfc6455)
   402  
   403  **Example request**
   404  
   405          GET /containers/e90e34656806/attach/ws?logs=0&stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1
   406  
   407  **Example response**
   408  
   409          {{ STREAM }}
   410  
   411  Query Parameters:
   412  
   413  -   **logs** – 1/True/true or 0/False/false, return logs. Default false
   414  -   **stream** – 1/True/true or 0/False/false, return stream.
   415          Default false
   416  -   **stdin** – 1/True/true or 0/False/false, if stream=true, attach
   417          to stdin. Default false
   418  -   **stdout** – 1/True/true or 0/False/false, if logs=true, return
   419          stdout log, if stream=true, attach to stdout. Default false
   420  -   **stderr** – 1/True/true or 0/False/false, if logs=true, return
   421          stderr log, if stream=true, attach to stderr. Default false
   422  
   423  Status Codes:
   424  
   425  -   **200** – no error
   426  -   **400** – bad parameter
   427  -   **404** – no such container
   428  -   **500** – server error
   429  
   430  ### Wait a container
   431  
   432  `POST /containers/(id)/wait`
   433  
   434  Block until container `id` stops, then returns the exit code
   435  
   436  **Example request**:
   437  
   438          POST /containers/16253994b7c4/wait HTTP/1.1
   439  
   440  **Example response**:
   441  
   442          HTTP/1.1 200 OK
   443          Content-Type: application/json
   444  
   445          {"StatusCode": 0}
   446  
   447  Status Codes:
   448  
   449  -   **200** – no error
   450  -   **404** – no such container
   451  -   **500** – server error
   452  
   453  ### Remove a container
   454  
   455  `DELETE /containers/(id)`
   456  
   457  Remove the container `id` from the filesystem
   458  
   459  **Example request**:
   460  
   461          DELETE /containers/16253994b7c4?v=1 HTTP/1.1
   462  
   463  **Example response**:
   464  
   465          HTTP/1.1 204 OK
   466  
   467  Query Parameters:
   468  
   469  -   **v** – 1/True/true or 0/False/false, Remove the volumes
   470          associated to the container. Default false
   471  
   472  Status Codes:
   473  
   474  -   **204** – no error
   475  -   **400** – bad parameter
   476  -   **404** – no such container
   477  -   **500** – server error
   478  
   479  ## 2.2 Images
   480  
   481  ### List Images
   482  
   483  `GET /images/(format)`
   484  
   485  List images `format` could be json or viz (json default)
   486  
   487  **Example request**:
   488  
   489          GET /images/json?all=0 HTTP/1.1
   490  
   491  **Example response**:
   492  
   493          HTTP/1.1 200 OK
   494          Content-Type: application/json
   495  
   496          [
   497               {
   498                       "Repository":"ubuntu",
   499                       "Tag":"precise",
   500                       "Id":"b750fe79269d",
   501                       "Created":1364102658
   502               },
   503               {
   504                       "Repository":"ubuntu",
   505                       "Tag":"12.04",
   506                       "Id":"b750fe79269d",
   507                       "Created":1364102658
   508               }
   509          ]
   510  
   511  **Example request**:
   512  
   513          GET /images/viz HTTP/1.1
   514  
   515  **Example response**:
   516  
   517          HTTP/1.1 200 OK
   518          Content-Type: text/plain
   519  
   520          digraph docker {
   521          "d82cbacda43a" -> "074be284591f"
   522          "1496068ca813" -> "08306dc45919"
   523          "08306dc45919" -> "0e7893146ac2"
   524          "b750fe79269d" -> "1496068ca813"
   525          base -> "27cf78414709" [style=invis]
   526          "f71189fff3de" -> "9a33b36209ed"
   527          "27cf78414709" -> "b750fe79269d"
   528          "0e7893146ac2" -> "d6434d954665"
   529          "d6434d954665" -> "d82cbacda43a"
   530          base -> "e9aa60c60128" [style=invis]
   531          "074be284591f" -> "f71189fff3de"
   532          "b750fe79269d" [label="b750fe79269d\nubuntu",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
   533          "e9aa60c60128" [label="e9aa60c60128\ncentos",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
   534          "9a33b36209ed" [label="9a33b36209ed\nfedora",shape=box,fillcolor="paleturquoise",style="filled,rounded"];
   535          base [style=invisible]
   536          }
   537  
   538  Query Parameters:
   539  
   540  -   **all** – 1/True/true or 0/False/false, Show all containers.
   541          Only running containers are shown by defaul
   542  
   543  Status Codes:
   544  
   545  -   **200** – no error
   546  -   **400** – bad parameter
   547  -   **500** – server error
   548  
   549  ### Create an image
   550  
   551  `POST /images/create`
   552  
   553  Create an image, either by pull it from the registry or by importing i
   554  
   555  **Example request**:
   556  
   557          POST /images/create?fromImage=ubuntu HTTP/1.1
   558  
   559  **Example response**:
   560  
   561          HTTP/1.1 200 OK
   562          Content-Type: application/vnd.docker.raw-stream
   563  
   564          {{ STREAM }}
   565  
   566  Query Parameters:
   567  
   568  -   **fromImage** – name of the image to pull
   569  -   **fromSrc** – source to import, - means stdin
   570  -   **repo** – repository
   571  -   **tag** – tag
   572  -   **registry** – the registry to pull from
   573  
   574  Status Codes:
   575  
   576  -   **200** – no error
   577  -   **500** – server error
   578  
   579  ### Insert a file in an image
   580  
   581  `POST /images/(name)/insert`
   582  
   583  Insert a file from `url` in the image `name` at `path`
   584  
   585  **Example request**:
   586  
   587          POST /images/test/insert?path=/usr&url=myurl HTTP/1.1
   588  
   589  **Example response**:
   590  
   591          HTTP/1.1 200 OK
   592  
   593          {{ TAR STREAM }}
   594  
   595  Query Parameters:
   596  
   597  -	**url** – The url from where the file is taken
   598  -	**path** – The path where the file is stored
   599  
   600  Status Codes:
   601  
   602  -   **200** – no error
   603  -   **500** – server error
   604  
   605  ### Inspect an image
   606  
   607  `GET /images/(name)/json`
   608  
   609  Return low-level information on the image `name`
   610  
   611  **Example request**:
   612  
   613          GET /images/centos/json HTTP/1.1
   614  
   615  **Example response**:
   616  
   617          HTTP/1.1 200 OK
   618          Content-Type: application/json
   619  
   620          {
   621               "id":"b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
   622               "parent":"27cf784147099545",
   623               "created":"2013-03-23T22:24:18.818426-07:00",
   624               "container":"3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
   625               "container_config":
   626                       {
   627                               "Hostname":"",
   628                               "User":"",
   629                               "Memory":0,
   630                               "MemorySwap":0,
   631                               "AttachStdin":false,
   632                               "AttachStdout":false,
   633                               "AttachStderr":false,
   634                               "PortSpecs":null,
   635                               "Tty":true,
   636                               "OpenStdin":true,
   637                               "StdinOnce":false,
   638                               "Env":null,
   639                               "Cmd": ["/bin/bash"],
   640                               "Dns":null,
   641                               "Image":"centos",
   642                               "Volumes":null,
   643                               "VolumesFrom":""
   644                       }
   645          }
   646  
   647  Status Codes:
   648  
   649  -   **200** – no error
   650  -   **404** – no such image
   651  -   **500** – server error
   652  
   653  ### Get the history of an image
   654  
   655  `GET /images/(name)/history`
   656  
   657  Return the history of the image `name`
   658  
   659  **Example request**:
   660  
   661          GET /images/fedora/history HTTP/1.1
   662  
   663  **Example response**:
   664  
   665          HTTP/1.1 200 OK
   666          Content-Type: application/json
   667  
   668          [
   669               {
   670                       "Id": "b750fe79269d",
   671                       "Created": 1364102658,
   672                       "CreatedBy": "/bin/bash"
   673               },
   674               {
   675                       "Id": "27cf78414709",
   676                       "Created": 1364068391,
   677                       "CreatedBy": ""
   678               }
   679          ]
   680  
   681  Status Codes:
   682  
   683  -   **200** – no error
   684  -   **404** – no such image
   685  -   **500** – server error
   686  
   687  ### Push an image on the registry
   688  
   689  `POST /images/(name)/push`
   690  
   691  Push the image `name` on the registry
   692  
   693      > **Example request**:
   694      >
   695      >     POST /images/test/push HTTP/1.1
   696      >
   697      > **Example response**:
   698  
   699          HTTP/1.1 200 OK
   700          Content-Type: application/vnd.docker.raw-stream
   701  
   702          {{ STREAM }}
   703  
   704  Status Codes:
   705  
   706  -   **200** – no error
   707  -   **404** – no such image
   708  -   **500** – server error
   709  
   710  ### Tag an image into a repository
   711  
   712  `POST /images/(name)/tag`
   713  
   714  Tag the image `name` into a repository
   715  
   716  **Example request**:
   717  
   718          POST /images/test/tag?repo=myrepo&force=0&tag=v42 HTTP/1.1
   719  
   720  **Example response**:
   721  
   722          HTTP/1.1 201 OK
   723  
   724  Query Parameters:
   725  
   726  -   **repo** – The repository to tag in
   727  -   **force** – 1/True/true or 0/False/false, default false
   728  -   **tag** - The new tag name
   729  
   730  Status Codes:
   731  
   732  -   **201** – no error
   733  -   **400** – bad parameter
   734  -   **404** – no such image
   735  -   **500** – server error
   736  
   737  ### Remove an image
   738  
   739  `DELETE /images/(name)`
   740  
   741  Remove the image `name` from the filesystem
   742  
   743  **Example request**:
   744  
   745          DELETE /images/test HTTP/1.1
   746  
   747  **Example response**:
   748  
   749          HTTP/1.1 204 No Content
   750  
   751  Status Codes:
   752  
   753  -   **204** – no error
   754  -   **404** – no such image
   755  -   **500** – server error
   756  
   757  ### Search images
   758  
   759  `GET /images/search`
   760  
   761  Search for an image on [Docker Hub](https://hub.docker.com)
   762  
   763  **Example request**:
   764  
   765          GET /images/search?term=sshd HTTP/1.1
   766  
   767  **Example response**:
   768  
   769          HTTP/1.1 200 OK
   770          Content-Type: application/json
   771  
   772          [
   773               {
   774                       "Name":"cespare/sshd",
   775                       "Description":""
   776               },
   777               {
   778                       "Name":"johnfuller/sshd",
   779                       "Description":""
   780               },
   781               {
   782                       "Name":"dhrp/mongodb-sshd",
   783                       "Description":""
   784               }
   785          ]
   786  
   787          :query term: term to search
   788          :statuscode 200: no error
   789          :statuscode 500: server error
   790  
   791  ## 2.3 Misc
   792  
   793  ### Build an image from Dockerfile via stdin
   794  
   795  `POST /build`
   796  
   797  Build an image from Dockerfile via stdin
   798  
   799  **Example request**:
   800  
   801          POST /build HTTP/1.1
   802  
   803          {{ TAR STREAM }}
   804  
   805  **Example response**:
   806  
   807          HTTP/1.1 200 OK
   808  
   809          {{ STREAM }}
   810  
   811  Query Parameters:
   812  
   813  -   **t** – repository name to be applied to the resulting image in
   814          case of success
   815  
   816  Status Codes:
   817  
   818  -   **200** – no error
   819  -   **500** – server error
   820  
   821  ### Get default username and email
   822  
   823  `GET /auth`
   824  
   825  Get the default username and email
   826  
   827  **Example request**:
   828  
   829          GET /auth HTTP/1.1
   830  
   831  **Example response**:
   832  
   833          HTTP/1.1 200 OK
   834          Content-Type: application/json
   835  
   836          {
   837               "username":"hannibal",
   838               "email":"hannibal@a-team.com"
   839          }
   840  
   841  Status Codes:
   842  
   843  -   **200** – no error
   844  -   **500** – server error
   845  
   846  ### Check auth configuration and store i
   847  
   848  `POST /auth`
   849  
   850  Get the default username and email
   851  
   852  **Example request**:
   853  
   854          POST /auth HTTP/1.1
   855          Content-Type: application/json
   856  
   857          {
   858               "username":"hannibal",
   859               "password:"xxxx",
   860               "email":"hannibal@a-team.com"
   861          }
   862  
   863  **Example response**:
   864  
   865          HTTP/1.1 200 OK
   866          Content-Type: text/plain
   867  
   868  Status Codes:
   869  
   870  -   **200** – no error
   871  -   **204** – no error
   872  -   **500** – server error
   873  
   874  ### Display system-wide information
   875  
   876  `GET /info`
   877  
   878  Display system-wide information
   879  
   880  **Example request**:
   881  
   882          GET /info HTTP/1.1
   883  
   884  **Example response**:
   885  
   886          HTTP/1.1 200 OK
   887          Content-Type: application/json
   888  
   889          {
   890               "Containers":11,
   891               "Images":16,
   892               "Debug":false,
   893               "NFd": 11,
   894               "NGoroutines":21,
   895               "MemoryLimit":true,
   896               "SwapLimit":false
   897          }
   898  
   899  Status Codes:
   900  
   901  -   **200** – no error
   902  -   **500** – server error
   903  
   904  ### Show the docker version information
   905  
   906  `GET /version`
   907  
   908  Show the docker version information
   909  
   910  **Example request**:
   911  
   912          GET /version HTTP/1.1
   913  
   914  **Example response**:
   915  
   916          HTTP/1.1 200 OK
   917          Content-Type: application/json
   918  
   919          {
   920               "Version":"0.2.2",
   921               "GitCommit":"5a2a5cc+CHANGES",
   922               "GoVersion":"go1.0.3"
   923          }
   924  
   925  Status Codes:
   926  
   927  -   **200** – no error
   928  -   **500** – server error
   929  
   930  ### Create a new image from a container's changes
   931  
   932  `POST /commit`
   933  
   934  Create a new image from a container's changes
   935      >
   936      > **Example request**:
   937  
   938          POST /commit?container=44c004db4b17&m=message&repo=myrepo HTTP/1.1
   939          Content-Type: application/json
   940  
   941          {
   942              "Cmd": ["cat", "/world"],
   943              "PortSpecs":["22"]
   944          }
   945  
   946  **Example response**:
   947  
   948          HTTP/1.1 201 OK
   949          Content-Type: application/vnd.docker.raw-stream
   950  
   951          {"Id": "596069db4bf5"}
   952  
   953  Query Parameters:
   954  
   955  -   **container** – source container
   956  -   **repo** – repository
   957  -   **tag** – tag
   958  -   **m** – commit message
   959  -   **author** – author (e.g., "John Hannibal Smith
   960          <[hannibal@a-team.com](mailto:hannibal%40a-team.com)>")
   961  
   962  Status Codes:
   963  
   964  -   **201** – no error
   965  -   **404** – no such container
   966  -   **500** – server error
   967  
   968  # 3. Going further
   969  
   970  ## 3.1 Inside `docker run`
   971  
   972  As an example, the `docker run` command line makes the following API calls:
   973  
   974  - Create the container
   975  
   976  - If the status code is 404, it means the image doesn't exist:
   977      - Try to pull it
   978      - Then retry to create the container
   979  
   980  - Start the container
   981  
   982  - If you are not in detached mode:
   983      - Attach to the container, using logs=1 (to have stdout and
   984            stderr from the container's start) and stream=1
   985  
   986  - If in detached mode or only stdin is attached:
   987      - Display the container's
   988  
   989  ## 3.2 Hijacking
   990  
   991  In this first version of the API, some of the endpoints, like /attach,
   992  /pull or /push uses hijacking to transport stdin, stdout and stderr on
   993  the same socket. This might change in the future.