Docker API イメージの作成/プル (/v1.6/images/create) は明らかに常に返されます
HTTP/1.1 200 OK
Content-Type: application/json
プロセスが成功するか失敗するかは関係ありません。
さらに、ペイロードは有効な json ではありません。
例: /v1.6/images/create?fromImage=whatevertheflush
戻り値:
{"status":"Pulling repository whatevertheflush"}{"error":"Server error: 404 trying to fetch remote history for whatevertheflush","errorDetail":{"code":404,"message":"Server error: 404 trying to fetch remote history for whatevertheflush"}}
有効なjsonではなく、HTTPエラーが転送/使用されていないため、クライアントのエラーを処理するのが面倒です.
実際、docker-py はペイロードを吐くだけです ( https://github.com/dotcloud/docker-py/blob/master/docker/client.py#L374 )。そして、openstack の DockerHTTPClient は、常に 200 である http エラー コードに基づいて値を返そうとします... ( https://github.com/openstack/nova/blob/master/nova/virt/docker/client.py# L191 )
さて、プルには長い時間がかかる可能性があり、クライアントへの回答のストリーミングを開始することはある程度理にかなっていることを理解していますが、ここで何かがおかしいと思わずにはいられません.
したがって、これは 3 つの折り方です。
- ここで何かが完全に欠けていますか?
- そうでない場合: クライアント アプリケーションを (たとえば、Python で) 実装している場合、これをどのように処理しますか (可能であればエレガントに:))? 有効なjsonブロックを検出してロードし、何かがおかしいと「思う」たびに終了しようとしますか?
- そうでない場合: これは将来の docker バージョンで (より良い方向に) 変更されますか?