Я больше недели пытался заставить контейнер Windows работать со службой приложений Azure. Сначала я предпочитал использовать стандартный экземпляр контейнера, но, похоже, у вас есть возможность выбрать только общедоступную или частную сеть, а не пользовательскую (в отличие от контейнеров Linux). Похоже, что если вы запустите свой контейнер Windows в службе приложений, вы получите те же сетевые возможности, что и на других веб-сайтах. Поддержка Azure для контейнеров Windows в службах приложений почти год, но относительно немногие ресурсы посвящены этому, за исключением очень простых сценариев.
Моя цель использования контейнера — запустить стороннюю фоновую службу Windows по запросу без накладных расходов на виртуальную машину. Поскольку он использует службу приложений, я решил добавить конечную точку ядра asp.net для получения некоторой информации о состоянии. Мой контейнер основан на mcr.microsoft.com/windows/servercore:ltsc2019
. Я загружаю и устанавливаю ядро .net и asp.net (базовый образ имеет только .net framework), устанавливаю свои службы, создаю и запускаю веб-сайт, затем моей точкой входа является сценарий Powershell, который обновляет некоторые значения конфигурации и запускает asp. net core конечной точки, которая управляет службами.
Если я использую портал, я могу выбрать варианты контейнера и кода, Windows или Linux и начать работу с базовое изображение быстрого старта, но мой собственный образ в Реестре контейнеров Azure не запускается должным образом. Я использую один из поддерживаемые базовые образы, и он отлично работает на моей локальной машине. В Azure он все создает, но никогда не запускается. Небольшой объем ведения журнала указывает на то, что он запускает его, монтирует тома общего доступа к файлам, а затем просто умирает:
- Создать контейнер для изображения
- Попытка запустить контейнер
- Запустить контейнер удалось
- Контейнер запущен
- Вызов утилиты настройки контейнера
- Утилита настройки контейнера завершена
- Контейнер запущен
- Попытка остановить контейнер
- Попытка завершить контейнер
- Попытка удалить контейнер
- Контейнер успешно удален
Также странно, даже с изображением быстрого запуска я не вижу фактического экземпляра контейнера. Предположительно, это связано с тем, что он работает непосредственно в плане службы приложений, хотя ничего из этого не совсем ясно. Из веб-приложения я могу перейти к плану службы приложений (план контейнеров Windows), где в разделе «Приложения» отображается одно приложение с типом «приложение, контейнер, окна», но я нигде не могу найти доступ для просмотра журналов консоли или запустить оболочку, как я могу, с ресурсами типа Container Image. На некоторых скриншотах, с которыми я сталкивался, я вижу ссылку «Настройки контейнера» в разделе «Настройки», которой у меня нет, но, возможно, по какой-то причине это только для контейнеров Linux.
Итак, как мне устранять проблемы с контейнером при работе в службе приложений? Я что-то где-то упустил?