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 Host: myip:2375 User-Agent: curl/7.47.1 Accept: / Content-Type: application/json Content-Length: 28

HTTP/1.1 200 OK 内容类型:application/vnd.docker.raw-stream exec:“错误”:$PATH 中找不到可执行文件

状态码是 200,那么有没有其他方法可以知道命令在 exec 上运行是否成功?

我目前的解决方法是将这样的东西作为命令传递:

bash -c 'command && echo SUCCEEDED_FLAG || echo FAILED_FLAG' 稍后再搜索flag

PS:我使用邮递员和卷曲来测试这个。

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 回答