Docker远程API exec:命令退出代码

我使用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 Host:myip:2375 User-Agent: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' bash -c 'command && echo SUCCEEDED_FLAG || echo FAILED_FLAG'并稍后search标志

PS:我用邮递员和卷发来testing这个。

你应该检查执行结果:

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

并检查ExitCode的值以获取您运行的进程的退出代码。 有关更多详细信息,请参阅exec检查api文档 。