Как использовать движок Docker API для выполнения cmd в контейнере
Как использовать движок Docker API для выполнения команды в контейнере. Я хочу использовать докер API для выполнения cmds в контейнере через вызовы http
1 ответ
Если вы хотите выполнить exec команду cmd в контейнере, вам нужно ввести либо идентификатор, либо имя контейнера, здесь идентификатор не похож на тот, который мы увидим, выполнив docker ps -a, есть одна EndPoint для извлечения подробностей в JSON запущенных контейнеров т.е.
Ответ на результат, как показано ниже
{
"Id": "ba7b20038dfe49d326788258eca42acb752405db835e09ffdf2705fdc16b7d17",
"Names": [
"/muruga"
],
"Image": "ubuntu",
"ImageID": "sha256:93fd78260bd1495afb484371928661f63e64be306b7ac48e2d13ce9422dfee26",
"Command": "/bin/bash",
"Created": 1544778203,
"Ports": [],
"Labels": {},
"State": "running",
"Status": "Up 3 seconds",
"HostConfig": {
"NetworkMode": "default"
},
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "6204f5fc4d3689aebe589bd1eab4a94f73a249d69aa88772a800d94f1edc1ea6",
"EndpointID": "7509759b07f6463b4a0a88baa00a5f6834cf69615ac88bb8bc1dbd8557be7db3",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
},
"Mounts": []
}
Вам нужно использовать либо идентификатор, либо имя работающего контейнера для создания экземпляра exec, т.е. url===>Post / Containers / {{id / name}} / exec
`Опубликовать данные
{
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"DetachKeys": "ctrl-p,ctrl-q",
"Tty": true,
"Cmd": [
"bin/bash","-c","touch appa.py"
],
"Env": [
"FOO=bar",
"BAZ=quux"
],
"Privileged":true,
"User":"root"
}`
он возвращает ответ 201 с идентификатором json, этот идентификатор уникален каждый раз, когда выполняется экземпляр exec, он возвращает уникальный идентификатор, вам нужно скопировать этот идентификатор и передать его на другой URL или конечную точку
url===>post /exec/{{id(уникальный идентификатор, который я упоминал выше из ответа)}}/ начать публикацию со следующими данными
{
"Detach": true,
"Tty": false
}
возвращается с 200 ок, вы можете попасть в контейнер и проверить выполнение команд