#azure #docker #yaml #azure-pipelines #azure-devops-self-hosted-agent
#лазурный #докер #yaml #azure-конвейеры #azure-devops-self-hosted-agent
Вопрос:
Я пытаюсь запустить задание контейнера на моем собственном агенте, чтобы прочитать образ контейнера из моего ACR.
Когда вы используете размещенный в Microsoft агент, этот код работает:
pool:
vmImage: 'ubuntu-18.04'
container:
image: myprivate.azurecr.io/windowsservercore:1803
endpoint: my_acr_connection
Итак, что я хочу, так это использовать следующий код:
pool: Default
container:
image: myprivate.azurecr.io/windowsservercore:1803
endpoint: my_acr_connection
Но я получаю эту ошибку на шаге «Инициализировать задание», когда запускаю конвейер:
##[error]File not found: 'docker'
У меня есть только один агент в пулах агентов по умолчанию. Мой агент был создан в соответствии с этой документацией: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops#linux
Я предполагаю, что это связано с возможностями агента, но я хотел знать, действительно ли то, что я пытаюсь, возможно, и если да, то не могли бы вы дать мне несколько советов о том, как решить мою проблему.
Заранее благодарю вас.
Редактировать:
Я смог справиться с этой ошибкой. Мне просто нужно было установить docker внутри контейнера, в Dockerfile.
Теперь я получаю еще одну ошибку на шаге конвейера «Инициализация контейнеров»:
Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "/__a/externals/node/bin/node": stat /__a/externals/node/bin/node: no such file or directory: unknown
Комментарии:
1. Я думаю, вы что-то неправильно настроили в своем агенте. можете ли вы перейти к возможностям агента и проверить, отображается ли там переменная среды docker.
2. Да, вы правы. Теперь у меня есть переменная docker, и я не получаю то же сообщение об ошибке. Теперь есть еще одна ошибка, но я полагаю, что это другая проблема. Спасибо, что заглянули.
3. @Karsa рад слышать, что вы решили проблему! Если вам удобно, вы можете опубликовать свое решение здесь и принять его в качестве ответа . Чтобы люди с похожими вопросами могли извлечь из этого выгоду ~
Ответ №1:
Проблема здесь заключалась в том, что в пуле по умолчанию мог не быть установлен docker, как только в пуле по умолчанию был установлен docker, ошибка исчезла.
Я тоже застрял с ошибкой времени выполнения OCI «Ответ на ошибку от демона: не удалось создать среду выполнения OCI: container_linux.go: 370: вызван запуск процесса контейнера: exec: «/__a/ externals/ node / bin / node»: stat /__a/externals/node/bin /узел: нет такого файла или каталога: неизвестно»
Комментарии:
1. Удалось ли вам решить вторую проблему с
Error response from daemon
помощью? У меня точно такая же проблема после загрузки изображения.
Ответ №2:
Итак, у меня была та же проблема:
«Ответ об ошибке от демона: сбой создания среды выполнения OCI: container_linux.go: 370: запуск процесса контейнера вызван: exec: «/__a/ externals / node / bin / node»: stat / __a/ externals / node / bin / node: нет такого файла или каталога: неизвестно»
В моем случае я использовал автономный агент, работающий на WSL1 ubuntu в Windows 10 с Docker4Windows в WSL2. Проблема в том, что WSL1 с docker имеет проблему с томами, смонтированными как каталоги, которые должны быть определены с помощью пути Windows (/c/users ….) вместо локального пути Linux (/home/user/linuxuser/ …).
Проблема была решена после перемещения моего агента на WSL2, где проблемы с монтированием не возникает.
Независимо от проблемы с WSL, проблема заключается в том, что том /__a/ externals не может быть смонтирован на контейнере в узле агента. Одна вещь, которую нужно проверить, — это проверить в конвейере azure devops журналы неудачных шагов и проверить команды docker, которые завершились неудачно. Вы увидите что-то вроде этого:
/usr/bin/docker create —name …. -v «/home/user/agent_directory/externals»:»/__a/externals»:ro … CONTAINER_IMAGE
запуск docker b39b96fb ….
Ответ об ошибке от демона: сбой создания среды выполнения OCI…
Таким образом, вы можете проверить запуск вашего образа вручную, монтируя тома, чтобы проверить, правильно ли они смонтированы, чтобы обнаружить проблему с docker (могут быть проблемы с разрешениями или другие проблемы, связанные с docker linux).
запуск docker —rm -ti -v «/home/user/ agent_directory/externals»:»/__a/externals»: ro mcr.microsoft.com/dotnet/core/sdk:3.1 баш
(В моем случае изображение было dotnet / core, но проблема может возникнуть с любым изображением).