Docker Remote API を使用していくつかのコマンドを実行していますが、渡したコマンドが失敗してもステータスが 200 になっていることに気付きました。
例:
curl -H "Content-Type: application/json" -X POST -d '{"AttachStdin":false,"AttachStdout":true,"AttachStderr":true,"Tty":true,"Cmd":["wrong"]}' http://localhost:2375/containers/console/exec
これは ID を返します。
curl -v -H "Content-Type: application/json" -d '{"Detach":false,"Tty":false}' http://localhost:2375/exec/b64592543bc59e08de4d1d11c8a68415148a608b00aa62448284635f47eaa734/start
POST /exec/b64592543bc59e08de4d1d11c8a68415148a608b00aa62448284635f47eaa734/start HTTP/1.1 ホスト: myip:2375 ユーザーエージェント: curl/7.47.1 Accept: / Content-Type: application/json Content-Length: 28
HTTP/1.1 200 OK Content-Type: application/vnd.docker.raw-stream exec: "wrong": $PATH に実行ファイルが見つかりません
ステータス コードが 200 であるため、exec で実行されたコマンドが成功したかどうかを知る別の方法はありますか?
私の現在の回避策は、コマンドとして次のようなものを渡すことです:
bash -c 'command && echo SUCCEEDED_FLAG || echo FAILED_FLAG'
後でフラグを検索します
PS: これをテストするために、postman と curl の両方を使用しました。