我尝试使用@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中,他们称之为完全相同的地址。
以前有人遇到过这个问题吗?如果你分享你的经验,我会很高兴。
答案 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
我已经尝试过这种方式并且有效,希望可以提供帮助!