Docker API - 执行开始 returns "Page not found"
Docker API - Exec start returns "Page not found"
我正在尝试通过 Docker Engine API with cURL
. I'm following the instructions in the API doc.
First I create an exec instance 在 运行 docker 容器中执行命令,作为响应,我收到了创建的执行程序的 ID。
然后我在尝试 send a request to start 这个 exec 时使用这个 ID,它看起来如下:
$ curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -x POST "http:/v1.29/exec/myExecID/start"
但是该请求的响应是:
{"message":"page not found"}
这是我的 Docker 版本:
Client:
Version: 17.05.0-ce
API version: 1.29
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:10:54 2017
OS/Arch: linux/amd64
Server:
Version: 17.05.0-ce
API version: 1.29 (minimum version 1.12)
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:10:54 2017
OS/Arch: linux/amd64
Experimental: false
在code in the Moby's repository中,他们调用了完全相同的地址。
其他人以前遇到过这个问题吗?如果您能分享您的经验,我将很高兴。
可能是因为您没有像这样包含请求正文:
-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"}
之后你可以执行如下所示的操作:
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
我已经试过了,很有效,希望能帮到你!
我正在尝试通过 Docker Engine API with cURL
. I'm following the instructions in the API doc.
First I create an exec instance 在 运行 docker 容器中执行命令,作为响应,我收到了创建的执行程序的 ID。
然后我在尝试 send a request to start 这个 exec 时使用这个 ID,它看起来如下:
$ curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -x POST "http:/v1.29/exec/myExecID/start"
但是该请求的响应是:
{"message":"page not found"}
这是我的 Docker 版本:
Client:
Version: 17.05.0-ce
API version: 1.29
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:10:54 2017
OS/Arch: linux/amd64
Server:
Version: 17.05.0-ce
API version: 1.29 (minimum version 1.12)
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:10:54 2017
OS/Arch: linux/amd64
Experimental: false
在code in the Moby's repository中,他们调用了完全相同的地址。
其他人以前遇到过这个问题吗?如果您能分享您的经验,我将很高兴。
可能是因为您没有像这样包含请求正文:
-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"}
之后你可以执行如下所示的操作:
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
我已经试过了,很有效,希望能帮到你!