我已经构建了一个 docker linux 映像,其中包括 azure cli、kubectl 和 terraform 安装。我已将映像推送到 azure 容器注册表,并使用该映像手动创建了一个容器实例。我的容器运行成功,我可以从 azure 门户连接到它。
但我的要求是,我必须运行一些由微软提供的 Rest API 命令来对容器执行某些操作。我已按照以下 microsoft 文档执行 rest api 命令。 链接:https://docs.microsoft.com/en-us/rest/api/container-instances/containers/execute-command#code-try-0
我刚刚提供了我的容器详细信息并添加了如下正文:
{
"command": "/bin/bash",
"terminalSize": {
"rows": 12,
"cols": 12
}
}
运行上述命令后,我收到了 200 条响应。但是当我尝试运行一些不同的命令时,我得到了 200 响应,但输出没有改变。有人可以通过rest api分享我可以在azure容器实例中执行哪些命令等信息。
答案 0 :(得分:1)
实际上,这个 REST API 是针对在容器中执行 bash 命令的 exec
命令。所以它会创建一个socket session与容器进行通信,返回的是socket session和密码。
对于exec
命令,同样对于这个REST API,它只能执行单个命令,如ls
、/bin/bash
。但是如果你想执行多个命令,比如 ls -al
或 curl $url
,那么它就会失败。实际上,ACI 不支持通过 REST API 或 exec
命令运行多个命令。解决方案是使用 Azure CLI 命令 az container exec
运行 bash 命令 /bin/bash
,它会为你创建一个套接字会话,就像 SSH 连接一样。然后你可以在容器内运行命令。截图如下: