使用Azure CLI在运行于Azure容器实例上的Docker容器上执行命令

时间:2019-09-20 10:22:25

标签: azure docker owasp azure-cli azure-container-instances

我想在Azure DevOps管道中使用OWASP ZAP,并希望使用可用的Docker映像。还想按需运行docker容器。在Microsoft DevBlog上找到了一篇解决该用例的文章。当我尝试复制时,遇到了一个问题。当我尝试使用Azure CLI执行以下命令时,遇到了此错误消息。

az container exec --resource-group $resourceGroupName --name $aciInstanceName --exec-command "zap-baseline.py -t https://example.com -x OWASP-ZAP-Report.xml"
  

rpc错误:代码= 2 desc = oci运行时错误:exec失败:   container_linux.go:247:启动容器进程引起“执行:   \“ zap-baseline.py -t https://example.com -x OWASP-ZAP-Report.xml \”:   stat zap-baseline.py -t https://example.com -x OWASP-ZAP-Report.xm l:   没有这样的文件或目录”

当我进行一些挖掘时,发现az container exec command does not support using arguments on the official documentation

然后我基于owasp / zap2docker-stable映像创建了一个自定义docker映像,在其中添加了一个bash脚本,该脚本基本上运行相同的命令,并尝试从Azure CLI调用bash文件

az container exec --resource-group $resourceGroupName --name $aciInstanceName --exec-command "execute-zap-baseline-test.sh"

但是随后我收到以下错误消息。

  

rpc错误:代码= 2 desc = oci运行时错误:exec失败:   container_linux.go:247:启动容器进程导致“ exec格式”   错误”

非常感谢您为解决此问题提供的帮助。如何在Azure容器实例上运行的OWASP ZAP docker容器上执行扫描

1 个答案:

答案 0 :(得分:0)

在ACI上可能是一个不好的地方,但它在restrictions中进行了描述:

  

Azure容器实例当前支持启动单个   使用z容器exec进行处理,并且您无法传递命令参数。   例如,您不能像sh -c“ echo FOO && echo   BAR”,或执行回显FOO。

您仅可以在CLI命令中执行whoamils等命令。

我认为ACI有两种可能的解决方案。一种是编写脚本并在Dockerfile中运行脚本。另一个是您创建一个持久会话来执行容器内的命令。要创建持久会话,请使用以下CLI命令:

az container exec -g groupName -n containerName --exec-command "/bin/bash"

如果您认为解决方案不是预期的解决方案。然后,我建议您使用Azure Kubernetes Service。在此服务中,您可以根据需要在窗格中执行命令。