Docker Remote API exec:命令退出代码

时间:2016-09-20 22:45:07

标签: curl docker docker-api

我正在使用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    User-Agent:curl / 7.47.1    接受: /    Content-Type:application / json    内容长度:28

     

HTTP / 1.1 200好的    Content-Type:application / vnd.docker.raw-stream    exec:"错误":$ PATH中找不到可执行文件

状态代码是200,那么还有另一种方法可以知道exec上运行的命令是否成功?

我目前的解决方法是将这样的命令传递给命令:

bash -c 'command && echo SUCCEEDED_FLAG || echo FAILED_FLAG' 并在以后搜索国旗

PS:我用postman和curl来测试它。

1 个答案:

答案 0 :(得分:1)

你应该检查exec结果:

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

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