Команда «Выполнить» в контейнере Docker, запущенном в экземпляре контейнера Azure, с помощью интерфейса командной строки Azure - PullRequest
0 голосов
/ 20 сентября 2019

Я хотел использовать OWASP ZAP в моих конвейерах DevOps Azure и хотел использовать имеющийся образ 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: code = 2 desc = oci Ошибка времени выполнения: ошибка exec: container_linux.go: 247: запуск процесса контейнера вызвал "exec: \" 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 не поддерживает использование аргументов на официальномдокументация .

Затем я создал собственный образ докера, основанный на образе owasp / zap2docker-stable, где я добавил сценарий bash, который в основном выполняет ту же команду, и попытался вызвать файл bash из Azure CLI

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

Но затем я получаю следующее сообщение об ошибке.

Ошибка RPC: code = 2 desc = oci Ошибка времени выполнения: Exec fail: container_linux.go: 247: запуск процесса контейнеравызвал "ошибку формата exec"

Будеточень признателен за помощь в решении этой проблемы.Как выполнить сканирование в док-контейнере OWASP ZAP, запущенном в экземплярах контейнера Azure

1 Ответ

0 голосов
/ 26 сентября 2019

Возможно, это плохое место в ACI, но оно описывает ограничения :

Экземпляры контейнера Azure в настоящее время поддерживают запуск одного процесса с помощью z-контейнера exec, и вы не можетепередать аргументы команды.Например, вы не можете объединять команды, как в sh -c "echo FOO && echo BAR", или выполнять echo FOO.

Вы можете просто выполнить команду, такую ​​как whoami, ls ии т.д. в команде CLI.

Я думаю, что есть два возможных решения для ACI.Во-первых, вы пишете сценарий и запускаете сценарий в Dockerfile.Другое - вы создаете постоянный сеанс для выполнения команд внутри контейнера.Чтобы создать постоянный сеанс, введите команду CLI:

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

И если вы считаете, что решения не являются ожидаемыми.Тогда я рекомендую вам воспользоваться Azure Kubernetes Service .В этом сервисе вы можете выполнять команды в модулях по своему усмотрению.

...