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