-
-
Notifications
You must be signed in to change notification settings - Fork 18
Closed
Description
Some actions (like pulling images, viewing logs, attaching to containers etc.) produce streaming output. We should parse these HTTP streaming responses into individual virtual streams and forward any events on the virtual stream.
Also notice the difference between HTTP/1.0 and HTTP/1.1 requests.
HTTP/1.0 streaming body:
echo -en "POST /images/create?fromImage=clue/redis-benchmark HTTP/1.0\r\n\r\n" | nc -U /var/run/docker.sock
HTTP/1.0 200 OK
Content-Type: application/json
Date: Thu, 27 Nov 2014 09:42:15 GMT
{"status":"Pulling repository clue/redis-benchmark"}
{"status":"Pulling image (latest) from clue/redis-benchmark","progressDetail":{},"id":"478a1142ea76"}{"status":"Pulling image (latest) from clue/redis-benchmark, endpoint: https://registry-1.docker.io/v1/","progressDetail":{},"id":"478a1142ea76"}{"status":"Pulling dependent layers","progressDetail":{},"id":"478a1142ea76"}{"status":"Download complete","progressDetail":{},"id":"511136ea3c5a"}{"status":"Download complete","progressDetail":{},"id":"f10807909bc5"}{"status":"Download complete","progressDetail":{},"id":"f6fab3b798be"}{"status":"Download complete","progressDetail":{},"id":"1e6ac0ffed3b"}{"status":"Download complete","progressDetail":{},"id":"62ff5003ac9a"}{"status":"Download complete","progressDetail":{},"id":"c6e4fc6c4a10"}{"status":"Download complete","progressDetail":{},"id":"984fd90de307"}{"status":"Download complete","progressDetail":{},"id":"4784dfba86d0"}{"status":"Download complete","progressDetail":{},"id":"4d4120826ad3"}{"status":"Download complete","progressDetail":{},"id":"b2428b25e452"}{"status":"Download complete","progressDetail":{},"id":"28995deeed39"}{"status":"Download complete","progressDetail":{},"id":"9cd1838bd19c"}{"status":"Download complete","progressDetail":{},"id":"c78781ea905b"}{"status":"Download complete","progressDetail":{},"id":"d7173b5f3fc7"}{"status":"Download complete","progressDetail":{},"id":"6a8a6a35a96b"}{"status":"Download complete","progressDetail":{},"id":"28fdd31ac753"}{"status":"Download complete","progressDetail":{},"id":"3ce54e911389"}{"status":"Download complete","progressDetail":{},"id":"b7261e19024d"}{"status":"Download complete","progressDetail":{},"id":"bb182a1a4f8e"}{"status":"Download complete","progressDetail":{},"id":"cabbf32a5995"}{"status":"Download complete","progressDetail":{},"id":"478a1142ea76"}{"status":"Download complete","progressDetail":{},"id":"478a1142ea76"}{"status":"Status: Image is up to date for clue/redis-benchmark"}
…
HTTP/1.1 streaming body uses chunked encoding:
$ echo -en "POST /images/create?fromImage=clue/redis-benchmark HTTP/1.1\r\n\r\n" | nc -U /var/run/docker.sock
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 27 Nov 2014 09:43:27 GMT
Transfer-Encoding: chunked
36
{"status":"Pulling repository clue/redis-benchmark"}
65
{"status":"Pulling image (latest) from clue/redis-benchmark","progressDetail":{},"id":"478a1142ea76"}
91
{"status":"Pulling image (latest) from clue/redis-benchmark, endpoint: https://registry-1.docker.io/v1/","progressDetail":{},"id":"478a1142ea
76"}
4d
{"status":"Pulling dependent layers","progressDetail":{},"id":"478a1142ea76"}
46
{"status":"Download complete","progressDetail":{},"id":"511136ea3c5a"}
46
{"status":"Download complete","progressDetail":{},"id":"f10807909bc5"}
46
{"status":"Download complete","progressDetail":{},"id":"f6fab3b798be"}
46
{"status":"Download complete","progressDetail":{},"id":"1e6ac0ffed3b"}
46
{"status":"Download complete","progressDetail":{},"id":"62ff5003ac9a"}
46
…