Docker API - Exec start返回"找不到页面"

时间:2017-05-31 14:53:33

标签: api curl docker docker-api

我尝试使用@RestController public class SampleController { @GetMapping(value = "/data/{id}", produces = MediaType.APPLICATION_JSON_VALUE) public CustomClass get(@PathVariable String id) { return newsService.getById(id); } @GetMapping(value = "/data/{id}", produces = MediaType.TEXT_HTML_VALUE) public String getHTML(@PathVariable String id) { return "HTML"; } 通过Docker Engine API在正在运行的docker容器中执行命令。我跟随instructions in the API doc
首先我create an exec instance作为回复,我收到了创建的执行官的ID。
然后当我尝试send a request to start这个exec时,我使用这个ID,如下所示:

cURL

但该请求的回应是:

$ curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -x POST "http:/v1.29/exec/myExecID/start"

这是我的Docker版本:

{"message":"page not found"}

code in the Moby's repository中,他们称之为完全相同的地址。

以前有人遇到过这个问题吗?如果你分享你的经验,我会很高兴。

1 个答案:

答案 0 :(得分:1)

也许是因为你没有像这样包含请求体:

-d '{"Detach": false, "Tty": false}'

如果您甚至收到如下错误:

{"message":"No such exec instance '<ID>' found in daemon"}

这意味着您尚未为exec创建实例。如果是这样,您需要创建一个新实例

curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" \
-d '{"AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "DetachKeys": "ctrl-p,ctrl-q", "Tty": false, "Cmd": ["date"], "Env": ["FOO=bar", "BAZ=quux"]}' \
-X POST http:/v1.29/containers/fafe141c1a2b/exec

输出(示例):

{"Id":"70f08c296d460d2fe254ecd0f8e0416777a6b938bb74a325ffc76405d33d3526"}

之后你可以执行exec,如下所示:

curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" \
-d '{"Detach": false, "Tty": false}' \
-X POST http:/v1.29/exec/70f08c296d460d2fe254ecd0f8e0416777a6b938bb74a325ffc76405d33d3526/start

我已经尝试过这种方式并且有效,希望可以提供帮助!