【问题标题】:Docker Remote API exec: Command exit codeDocker Remote API exec:命令退出代码
【发布时间】:2016-09-20 22:45:06
【问题描述】:

我正在使用 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/启动 HTTP/1.1 主机:myip:2375 用户代理:curl/7.47.1 接受:/ 内容类型:应用程序/json 内容长度:28

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

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

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

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

PS:我同时使用了 postman 和 curl 来测试这个。

【问题讨论】:

    标签: curl docker docker-api


    【解决方案1】:

    您应该检查执行结果:

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

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

    【讨论】:

    • 谢谢。它看起来正是我需要的。我之前尝试过,但我使用的是 POST 请求而不是 GET,所以我得到了一个 404,这是可以理解的。我明天再试一次。
    猜你喜欢
    • 2022-01-20
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多