Как использовать движок Docker API для выполнения cmd в контейнере - PullRequest
0 голосов
/ 14 декабря 2018

Как использовать движок Docker API для выполнения команды в контейнере.Я хочу использовать api docker для выполнения cmds в контейнере через вызовы http

1 Ответ

0 голосов
/ 14 декабря 2018

Если вы хотите выполнить exe cmd в контейнере, вам нужно ввести либо идентификатор, либо имя контейнера, здесь идентификатор не похож на тот, который мы увидим, выполнив docker ps -a, есть одна EndPoint дляизвлекать детали в json запущенных контейнеров, т.е. enter image description here

Ответ на результат, как показано ниже

{
    "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

`Post data

 {
"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"
}`

enter image description here

возвращает ответ 201 с идентификатором json, этот идентификатор уникален каждый раз, когда выполняется экземпляр экземпляра exec, он возвращает уникальный идентификатор, вам необходимо скопировать этот идентификатор и передать его другому URL или конечной точке

url ===> post / exec / {{id (уникальный идентификатор, который я упомянул выше в ответе)}} / начать публикацию со следующими данными

{
  "Detach": true,
  "Tty": false
}

возвращается с 200 ok, выможно зайти в контейнер и проверить выполнение команд

enter image description here

...