请问有人能帮我解决远程API来使用docker exec运行命令的问题吗?
我可以直接运行它:
# docker exec 941430a3060c date
Fri Apr 29 05:18:03 UTC 2016
请问有人能帮我解决远程API来使用docker exec运行命令的问题吗?
我可以直接运行它:
# docker exec 941430a3060c date
Fri Apr 29 05:18:03 UTC 2016
您需要按照以下步骤进行操作。我会提供 REST API 方式,您可以将其编写成任何语言。
POST /containers/(id 或 name)/exec
请求体
{
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Cmd": ["bash","-c","echo '*/5 * * * * /usr/bin/php /app/yii cronrun/job001'>> /var/spool/cron/crontabs/root"]
}
当您进行POST操作时,需要选择Content-Type: application/json
。
在上述数据中进行POST操作后,您将在响应中获得id。您需要在下一步中使用该id。
*以上内容将在容器中添加cron作业,每五分钟执行一次。
POST /exec/(id)/start
{
"Detach": false,
"Tty": false
}
您需要选择Content-Type: application/json
检查响应代码,200表示正常
对您有帮助的API部分是:Exec Create/Start
您可以在integration-cli/docker_api_exec_test.go
中看到一些示例。
sockRequest("POST", fmt.Sprintf("/containers/%s/exec", name), map[string]interface{}{"Cmd": []string{"true"}})
sockRequestRaw("POST", fmt.Sprintf("/exec/%s/start", id), strings.NewReader(`{"Detach": true}`), "application/json")
sockRequestRaw("GET", fmt.Sprintf("/exec/%s/json", id), nil, "")