我正在使用 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:我使用邮递员和卷曲来测试这个。