Could someone please help me with remote api for docker exec to run a command?
I am able to run it directly:
# docker exec 941430a3060c date
Fri Apr
You have to follow below steps. I am adding rest api way. You can code it to any language.
POST /containers/(id or name)/exec
Body
{
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Cmd": ["bash","-c","echo '*/5 * * * * /usr/bin/php /app/yii cronrun/job001'>> /var/spool/cron/crontabs/root"]
}
You have to select Content-Type: application/json
when you POST the above data you will get id in response. You have to use the id in next step.
*The above will add cron job in container which will execute every five minute.
POST /exec/(id)/start
{
"Detach": false,
"Tty": false
}
You have to select Content-Type: application/json
Check response code, 200 is OK
The API section which would help you is: Exec Create/Start
You can see some example in integration-cli/docker_api_exec_test.go
create:
sockRequest("POST", fmt.Sprintf("/containers/%s/exec", name), map[string]interface{}{"Cmd": []string{"true"}})
start:
sockRequestRaw("POST", fmt.Sprintf("/exec/%s/start", id), strings.NewReader(`{"Detach": true}`), "application/json")
inspect:
sockRequestRaw("GET", fmt.Sprintf("/exec/%s/json", id), nil, "")