0

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 の両方を使用しました。

4

1 に答える 1

1

実行結果を調べる必要があります。

curl -v -H "Content-Type: application/json" http://localhost:2375/exec/b64592543bc59e08de4d1d11c8a68415148a608b00aa62448284635f47eaa734/json 

の値を確認してExitCode、実行したプロセスの終了コードを取得します。詳細については、exec inspect api ドキュメントを参照してください。

于 2016-09-21T01:51:37.480 に答える