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