#azure-container-instances
#azure-container-instances
Вопрос:
Я запускаю приложение .NET Core в контейнере Linux.
Контейнер работает нормально локально, но при запуске в экземплярах контейнера Azure он немедленно останавливается.
Файл журнала контейнера показан ниже (получен с помощью Get-AzContainerInstanceLog
):
failed to open log file "/var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log":
open /var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log: no such file or directory
Редактировать:
Я никогда раньше не сталкивался с указанным файлом или pods
путем ( /var/log/pods/336d7870-5a8e-11e9-925e-000d3a0ddc4a/test-1_0.log
), и я понятия не имею, какая часть ОС и / или Docker нуждается в этом.
Файл журнала и путь — это не то, что используется моим приложением, запущенным внутри контейнера (оно регистрируется непосредственно на консоли и, как уже упоминалось, нормально работает в контейнере Linux в моей локальной установке Docker для Windows).
Google говорит, что это может быть связано с Kubernetes, но я не использую Kubernetes «активно» (т. Е. Он может использоваться экземплярами контейнера Azure под прикрытием, но это не то, о чем я, как пользователь ACI, знаю). Извините за неясное описание ошибки, я попытаюсь перефразировать его.
Комментарии:
1. Вы можете подключиться к экземпляру и проверить, действительно ли он пропускает файл.
2. Файл не существует, и я понятия не имею, какая часть ОС и / или Docker нуждается в нем. Google говорит, что это может быть связано с Kubernetes, но я не использую Kubernetes (хотя, вероятно, он используется экземплярами контейнера Azure под обложками). Извините за неясное описание ошибки, я попытаюсь перефразировать его.
3. Вам удалось выяснить, почему? У меня тоже такая же проблема.
4. IIRC проблема заключалась в том, что я пытался передать аргумент командной строки в контейнер, что не сработало в Azure. Я переключился с использования аргументов командной строки на переменные среды, и все сработало как по волшебству. Итак, для меня эта ошибка возникла, когда контейнер не удалось запустить. Я думаю, что было предоставлено лучшее описание ошибки, скрытое на виду в одной из вкладок / блейдов на портале Azure.
Ответ №1:
Проблема заключалась в том, что я пытался передать аргумент командной строки контейнеру, что не сработало в Azure.
Я переключился с использования аргументов командной строки на переменные среды, и все сработало как по волшебству.
Итак, для меня эта ошибка возникла, когда контейнер не удалось запустить.
Было предоставлено лучшее описание ошибки, скрытое на виду в одной из вкладок / блейдов на портале Azure.
Ответ №2:
В моем случае я ранее установил tini
и установил для точки входа в Dockerfile значение /sbin/tini --
. После этого допустимо установить для CMD файла Dockerfile базовую строку без каких-либо кавычек, например CMD java -jar myapp.jar
Однако в Azure вы ДОЛЖНЫ задать команду в виде массива сегментов строки:
в YAML: command: ["java", "-jar", "myapp.jar"]
Как только я это сделал, ошибка выше («не удалось открыть файл журнала») исчезла, и мой контейнер успешно запустился.