Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба приложений Azure предоставляет стандартные стеки приложений, например ASP.NET или Node.jsв Windows. Эти стеки приложений выполняются в службах IIS. Предварительно настроенная среда Windows блокирует в операционной системе следующее:
- Административный доступ.
- установки программного обеспечения;
- изменения в глобальном кэше сборок.
Дополнительные сведения см. в разделе "Функциональность операционной системы" в службе приложений.
Вы можете развернуть специально настроенный образ Windows из Visual Studio, чтобы внести в ОС изменения, необходимые для вашего приложения. Это упрощает перенос локального приложения, требующего настраиваемой конфигурации ОС и программного обеспечения. В этом руководстве показано, как перенести в службу приложений приложение ASP.NET, которое использует пользовательские шрифты, установленные в библиотеке шрифтов Windows. Вы развертываете настраиваемый образ Windows из Visual Studio в Реестр контейнеров Azure, а затем запускаете его в Служба приложений.
Необходимые компоненты
- Зарегистрируйтесь для учетной записи Docker Hub.
- Установите Docker для ОС Windows.
- Настройте Docker для запуска контейнеров Windows.
-
Установите Visual Studio 2022, а также следующие рабочие нагрузки: ASP.NET и веб-разработка и разработка Azure. Если у вас уже установлен Visual Studio 2022:
- Установите последние обновления для Visual Studio, выбрав Справка>Проверить обновления.
- Добавьте рабочие нагрузки в Visual Studio, выбрав Инструменты>Получить средства и компоненты.
Настройка приложения в локальной среде
Скачивание примера приложения
На этом шаге вы настроите локальный проект .NET.
- Скачайте пример проекта.
- Извлеките (распакуйте) содержимое файла custom-font-win-container-master.zip.
Пример проекта содержит простое приложение ASP.NET, использующее настраиваемый шрифт, установленный в библиотеке шрифтов Windows. Устанавливать шрифты необязательно. Однако примером является пример приложения, интегрированного с базовой ОС. Чтобы перенести такое приложение в службу приложений, переработайте код, чтобы удалить интеграцию, либо перенесите его "как есть" в пользовательском контейнере Windows.
Установка шрифта
В проводнике Windows перейдите к custom-font-win-container-master/CustomFontSample, щелкните правой кнопкой мыши FrederickatheGreat-Regular.ttf и выберите "Установить".
Этот шрифт находится в свободном доступе на веб-сайте Google Fonts.
Выполнить приложение
Откройте файл custom-font-win-container-master/CustomFontSample.sln в Visual Studio.
Нажмите клавиши CTRL+F5 , чтобы запустить приложение без отладки. Это приложение откроется в браузере по умолчанию.
Так как приложение использует установленный шрифт, приложение не может выполняться в песочнице службы приложений. Однако его можно развернуть с помощью контейнера Windows, так как его можно установить в контейнере Windows.
Настройка контейнера Windows
В обозревателе решений щелкните правой кнопкой мыши проект CustomFontSample и выберите Добавить>Container Orchestration Support (Поддержка оркестрации контейнеров).
Выберите Docker Compose>ОК.
Теперь проект настроен для запуска в контейнере Windows. Добавляется в Dockerfile проект CustomFontSample, а проект docker-compose добавляется в решение.
В обозревателе решений откройте Dockerfile.
Необходимо использовать поддерживаемый родительский образ. Измените родительский образ, заменив строку FROM приведенным ниже кодом.
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Добавьте следующую строку в конец файла и сохраните файл:
RUN ${source:-obj/Docker/publish/InstallFont.ps1}
Файл InstallFont.ps1 можно найти в проекте CustomFontSample. Это простой сценарий, который устанавливает шрифт. Более сложную версию скрипта можно найти в коллекция PowerShell.
Примечание.
Чтобы протестировать контейнер Windows локально, убедитесь, что на локальном компьютере запущен Docker.
Публикация в Реестре контейнеров Azure
В Реестре контейнеров Azure можно хранить образы для развертывания контейнеров. Службу приложений можно настроить для использования образов, размещенных в реестре контейнеров.
Открытие окна публикации
В обозревателе решений щелкните правой кнопкой мыши проект CustomFontSample и выберите "Опубликовать".
Создание и публикация реестра
В окне публикации выберите Azure и нажмите кнопку "Далее".
Выберите реестр контейнеров Azure и нажмите кнопку "Далее".
Выберите подписку, в которой нужно опубликовать реестр, а затем нажмите кнопку "Создать".
Вход с помощью учетной записи Azure
В окне реестра контейнеров Azure выберите "Добавить учетную запись", а затем войдите в подписку Azure. Если вы уже выполнили вход, выберите учетную запись, содержащую нужную подписку из раскрывающегося списка.
Настройка реестра
Настройте новый реестр контейнеров с помощью предлагаемых значений в следующей таблице в качестве руководства. По завершении выберите Создать.
| Параметр | Предлагаемое значение |
|---|---|
| Префикс DNS | Оставьте имя созданного реестра или измените его, указав другое уникальное имя. |
| Группа ресурсов | Нажмите кнопку "Создать", введите myResourceGroup и нажмите кнопку "ОК". |
| SKU | Базовый. Дополнительные сведения см. в разделе Ценовые категории. |
| Расположение реестра | Западная Европа |
Нажмите Готово.
Откроется окно терминала и отображается ход развертывания образа. Дождитесь завершения развертывания.
Вход в Azure
Войдите на портал Azure.
Создание веб-приложения.
Выберите "Создать ресурс" и выберите "Создать " в разделе "Веб-приложение".
Настройка основных сведений приложения
На вкладке "Основы " настройте параметры с помощью следующей таблицы в качестве руководства.
| Параметр | Предлагаемое значение |
|---|---|
| Подписка | Убедитесь, что отображается правильная подписка. |
| Группа ресурсов | Нажмите кнопку "Создать", введите myResourceGroup и нажмите кнопку "ОК". |
| Имя | Введите уникальное имя. URL-адрес веб-приложения: https://<app-name>.azurewebsites.net, где <app-name> — имя приложения. |
| Опубликовать | Контейнер |
| Операционная система | Windows |
| Регион | Западная Европа |
| План Windows | Нажмите кнопку "Создать", введите myAppServicePlan и нажмите кнопку "ОК". |
Вкладка "Основные сведения" должна выглядеть примерно так:
Настройка контейнера Windows
На вкладке "Контейнер " настройте пользовательский контейнер Windows, как показано в следующей таблице, а затем выберите "Проверить и создать".
| Параметр | Предлагаемое значение |
|---|---|
| Источник образа | Реестр контейнеров Azure |
| Реестр | Выберите созданный ранее реестр. |
| Изображение | customfontsample |
| Тег | latest |
Завершение создания приложения
Нажмите Создать и подождите, пока Azure создаст необходимые ресурсы.
Переход к веб-приложению
По завершении развертывания появится сообщение уведомления:
Выберите Перейти к ресурсу.
На странице приложения щелкните ссылку в разделе URL.
В браузере откроется следующая страница:
Подождите несколько минут и повторите попытку, пока не получите домашнюю страницу с ожидаемым шрифтом:
Поздравляем! Вы переносили приложение ASP.NET в службу приложений в контейнере Windows.
Просмотр журналов запуска контейнера
Загрузка контейнера Windows может занять некоторое время. Чтобы просмотреть ход выполнения, перейдите по следующему URL-адресу. (Замените <имя> приложения именем приложения.)
https://<app-name>.scm.azurewebsites.net/api/logstream
Потоковые журналы выглядят следующим образом:
14/09/2018 23:16:19.889 INFO - Site: fonts-win-container - Creating container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest.
14/09/2018 23:16:19.928 INFO - Site: fonts-win-container - Create container for image: customfontsample20180914115836.azurecr.io/customfontsample:latest succeeded. Container Id 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:23.405 INFO - Site: fonts-win-container - Start container succeeded. Container: 329ecfedbe370f1d99857da7352a7633366b878607994ff1334461e44e6f5418
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:17:28.637 INFO - Site: fonts-win-container - Configuring container
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container ready
14/09/2018 23:18:03.823 INFO - Site: fonts-win-container - Container start-up and configuration completed successfully
Служба приложений Azure использует технологию контейнеров Docker для размещения встроенных образов и пользовательских образов. Чтобы просмотреть список встроенных образов, выполните команду Azure CLI , az webapp list-runtimes --os linux. Если эти образы не соответствуют вашим требованиям, вы можете создать и развернуть пользовательский образ.
Примечание.
Контейнер должен ориентироваться на архитектуру x86-64. ARM64 не поддерживается.
В этом руководстве описано следующее:
- Отправьте пользовательский образ Docker в Реестр контейнеров Azure.
- Разверните пользовательский образ в Служба приложений.
- Настройте переменные среды.
- Извлеките изображение в Служба приложений с помощью управляемого удостоверения.
- Доступ к журналам диагностики.
- Включите CI/CD из реестра контейнеров в службу приложений.
- Подключитесь к контейнеру с помощью SSH.
В этом руководстве взимается небольшая плата за учетную запись Azure для реестра контейнеров и может нести дополнительные затраты, если вы размещаете контейнер дольше месяца.
Настройка начальной среды
Для работы с этим учебником требуется Azure CLI версии 2.0.80 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
- Убедитесь, что у вас есть учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Установите Docker для создания образов Docker. Для установки Docker может потребоваться перезагрузка компьютера.
После установки Docker откройте окно терминала и убедитесь, что Docker установлен.
docker --version
Клонирование или скачивание примера приложения
Пример этого руководства можно получить с помощью клонирования или скачивания Git.
Клонирование репозитория с помощью Git Bash
Клонируйте репозиторий примера.
git clone https://github.com/Azure-Samples/docker-django-webapp-linux.git --config core.autocrlf=input
Убедитесь, что аргумент гарантирует правильную --config core.autocrlf=input конец строки в файлах, используемых в контейнере Linux.
Затем перейдите к папке:
cd docker-django-webapp-linux
Скачивание ZIP-файла из GitHub
Вместо клонирования Git можно перейти к https://github.com/Azure-Samples/docker-django-webapp-linux файлу и выбрать ZIP-файл>> кода".
Распакуйте ZIP-файл в папку с именем docker-django-webapp-linux.
Затем откройте окно терминала в папке docker-django-webapp-linux .
(Необязательно) Анализ файл Docker
Ниже приведен файл в примере с именем Dockerfile. Он описывает образ Docker и содержит инструкции по настройке.
FROM tiangolo/uwsgi-nginx-flask:python3.6
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt --no-cache-dir
ADD . /code/
# ssh
ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
&& apt-get install -y --no-install-recommends dialog \
&& apt-get update \
&& apt-get install -y --no-install-recommends openssh-server \
&& echo "$SSH_PASSWD" | chpasswd
COPY sshd_config /etc/ssh/
COPY init.sh /usr/local/bin/
RUN chmod u+x /usr/local/bin/init.sh
EXPOSE 8000 2222
#CMD ["python", "/code/manage.py", "runserver", "0.0.0.0:8000"]
ENTRYPOINT ["init.sh"]
- Первая группа команд устанавливает в среде обязательные для приложения компоненты.
- Вторая группа команд создает SSH-сервер для повышения безопасности между контейнером и узлом.
- В последней строке файла (
ENTRYPOINT ["init.sh"]) вызываетсяinit.shдля запуска службы SSH и сервера Python.
Сборка и тестирование образа в локальной среде
Примечание.
Docker Hub накладывает квоты на количество анонимных вытягивания на IP-адрес и количество прошедших проверку подлинности вытягивания на бесплатного пользователя. Если вы заметили, что ваши вытягивания из Docker Hub ограничены, попробуйте запустить, docker login если вы еще не вошли в систему.
Запустите сборку образа с помощью следующей команды.
docker build --tag appsvc-tutorial-custom-image .Убедитесь, что сборка работает, запустив контейнер Docker на локальном компьютере.
docker run -it -p 8000:8000 appsvc-tutorial-custom-imageЭта
docker runкоманда указывает порт с помощью аргумента-pи включает имя образа.-itпозволяет остановить его с помощью ctrl+C.Совет
Если вы работаете в Windows и видите ошибку *standard_init_linux.go:211: процесс пользователя exec вызвал "нет такого файла или каталога", файл init.sh содержит окончания строки CRLF вместо ожидаемых окончаний LF. Эта ошибка возникает, если вы использовали Git для клонирования примера репозитория, но опустили
--config core.autocrlf=inputпараметр. В этом случае клонируйте репозиторий еще раз с аргументом--config. Вы также можете получить аналогичную ошибку, если редактировали файлinit.sh и сохранили его с использованием CR-LF для завершения. В этом случае сохраните его снова, используя LF.Перейдите к
http://localhost:8000проверке правильности работы веб-приложения и контейнера.
Создание управляемого удостоверения, назначаемого пользователем
Служба приложений может использовать управляемое удостоверение по умолчанию или управляемое удостоверение, назначаемое пользователем, для проверки подлинности в реестре контейнеров. В этом руководстве вы будете использовать управляемое удостоверение, назначаемое пользователем.
Выполните команду az group create, чтобы создать группу ресурсов.
az group create --name msdocs-custom-container-tutorial --location westeuropeВы можете изменить значение
--location, чтобы указать близкий к вам регион.Создайте управляемое удостоверение в группе ресурсов:
az identity create --name myID --resource-group msdocs-custom-container-tutorial
Создание реестра контейнеров
Создайте реестр контейнеров с помощью следующей
az acr createкоманды. Замените<registry-name>уникальным именем для реестра. Имя должно содержать только буквы и цифры, и должно быть уникальным во всех службах Azure.az acr create --name <registry-name> --resource-group msdocs-custom-container-tutorial --sku Basic --admin-enabled trueПараметр
--admin-enabledпозволяет отправлять образы в реестр с помощью учетных данных администратора.Получите учетные данные администратора, выполнив
az credential acr showкоманду:az acr credential show --resource-group msdocs-custom-container-tutorial --name <registry-name>Выходные данные этой команды содержат два пароля и имя пользователя для реестра в формате JSON.
Отправка примера образа в реестр контейнеров
В этом разделе описано, как отправить образ в реестр контейнеров, который используется службой приложений позже.
В локальном терминале, где вы создали образ примера, используйте
docker loginкоманду для входа в реестр контейнеров:docker login <registry-name>.azurecr.io --username <registry-username>Замените
<registry-name>и<registry-username>значениями из предыдущих шагов. При появлении запроса введите один из паролей из предыдущего раздела.Используйте то же имя реестра во всех остальных шагах этого раздела.
После успешного входа пометьте локальный образ Docker в реестр:
docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestС помощью команды
docker pushотправьте образ в реестр.docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestПервая отправка образа может занять несколько минут, так как она включает базовый образ. Все последующие отправки обычно выполняются быстрее.
Пока вы ждете завершения, вы можете выполнить шаги, описанные в следующем разделе, то есть настроить развертывание из реестра в Службе приложений.
Авторизация управляемого удостоверения для реестра
Созданное управляемое удостоверение еще не имеет авторизации для извлечения из реестра контейнеров. На этом шаге вы включите авторизацию.
Получите идентификатор субъекта для управляемого удостоверения:
principalId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query principalId --output tsv)Получите идентификатор ресурса для реестра контейнеров:
registryId=$(az acr show --resource-group msdocs-custom-container-tutorial --name <registry-name> --query id --output tsv)Предоставьте управляемому удостоверению разрешение на доступ к реестру контейнеров.
az role assignment create --assignee $principalId --scope $registryId --role "AcrPull"Дополнительные сведения об этих разрешениях см. в статье "Что такое управление доступом на основе ролей Azure?".
Создание веб-приложения
Создайте план службы приложений с помощью
az appservice plan createкоманды:az appservice plan create --name myAppServicePlan --resource-group msdocs-custom-container-tutorial --is-linuxПлан Службы приложений соответствует виртуальной машине, в которой размещено веб-приложение. По умолчанию предыдущая команда использует недорогой ценовой категории B1, которая бесплатна в течение первого месяца. Уровень можно указать с помощью
--skuпараметра.Создайте веб-приложение с помощью команды
az webapp create.az webapp create --resource-group msdocs-custom-container-tutorial --plan myAppServicePlan --name <app-name> --deployment-container-image-name <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestЗамените
<app-name>именем веб-приложения. Имя должно быть уникальным в Azure. Также замените<registry-name>именем реестра из предыдущего раздела.Совет
Вы можете в любой момент получить параметры контейнера для веб-приложения с помощью команды
az webapp config container show --name <app-name> --resource-group msdocs-custom-container-tutorial. Этот образ задается в свойствеDOCKER_CUSTOM_IMAGE_NAME. Когда веб-приложение развертывается через шаблоны Azure DevOps или Azure Resource Manager, этот же образ может отображаться и в свойстве с именемLinuxFxVersion. Оба этих свойства имеют одинаковое назначение. Если они оба присутствуют в конфигурации веб-приложения, приоритет отдаетсяLinuxFxVersion.
Настройка веб-приложения
На этом шаге вы настроите веб-приложение следующим образом:
- Настройте приложение для отправки запросов на порт 8000. Пример контейнера прослушивает порт 8000 для веб-запросов.
- Настройте приложение, чтобы использовать управляемое удостоверение для извлечения образов из реестра контейнеров.
- Настройте непрерывное развертывание из реестра контейнеров. (Каждый образ, отправленный в реестр, активирует приложение для извлечения нового образа.) Этот шаг не требуется для настройки веб-приложения для извлечения из реестра контейнеров, но он может уведомить веб-приложение о отправке нового образа в реестр. Если этот шаг не выполнен, необходимо вручную активировать извлечение изображения, перезагрузив веб-приложение.
Используйте
az webapp config appsettings set, чтобы задать переменную средыWEBSITES_PORT, которую ожидает код приложения.az webapp config appsettings set --resource-group msdocs-custom-container-tutorial --name <app-name> --settings WEBSITES_PORT=8000Замените
<app-name>значением, которое вы использовали на предыдущем шаге.Включите управляемое удостоверение, назначаемое пользователем, в веб-приложении с помощью
az webapp identity assignкоманды:id=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query id --output tsv) az webapp identity assign --resource-group msdocs-custom-container-tutorial --name <app-name> --identities $idЗамените
<app-name>значением, которое вы использовали на предыдущем шаге.Настройте приложение для извлечения из реестра контейнеров с помощью управляемых удостоверений.
appConfig=$(az webapp config show --resource-group msdocs-custom-container-tutorial --name <app-name> --query id --output tsv) az resource update --ids $appConfig --set properties.acrUseManagedIdentityCreds=TrueЗамените
<app-name>значением, которое вы использовали на предыдущем шаге.Задайте идентификатор клиента, который использует веб-приложение для извлечения из реестра контейнеров. Этот шаг не требуется, если вы используете управляемое удостоверение, назначаемое системой.
clientId=$(az identity show --resource-group msdocs-custom-container-tutorial --name myID --query clientId --output tsv) az resource update --ids $appConfig --set properties.AcrUserManagedIdentityID=$clientIdВключите CI/CD в Службе приложений.
cicdUrl=$(az webapp deployment container config --enable-cd true --name <app-name> --resource-group msdocs-custom-container-tutorial --query CI_CD_URL --output tsv)CI_CD_URL— это URL-адрес, который Служба приложений создает автоматически. Ваш реестр должен использовать этот URL-адрес, чтобы уведомлять Службу приложений о том, что произошла отправка образа. При этом веб-перехватчик не создается.Создайте веб-перехватчик в реестре контейнеров. Используйте CI_CD_URL, которые вы получили на последнем шаге.
az acr webhook create --name appserviceCD --registry <registry-name> --uri $cicdUrl --actions push --scope appsvc-tutorial-custom-image:latestЧтобы проверить правильность настройки веб-перехватчика, проверьте, получен ли ответ 200 OK.
eventId=$(az acr webhook ping --name appserviceCD --registry <registry-name> --query id --output tsv) az acr webhook list-events --name appserviceCD --registry <registry-name> --query "[?id=='$eventId'].eventResponseMessage"Совет
Чтобы просмотреть все сведения обо всех событиях веб-перехватчика, удалите параметр
--query.Если вы выполняете потоковую передачу журнала контейнеров, вы увидите
Starting container for siteсообщение после проверки связи с веб-перехватчиком, так как веб-перехватчик активирует приложение для перезапуска.
Переход к веб-приложению
Чтобы протестировать приложение, перейдите на страницу https://<app-name>.azurewebsites.net. Замените <app-name> именем своего веб-приложения.
При первом попытке получить доступ к приложению может потребоваться некоторое время, так как Служба приложений должен извлечь весь образ из реестра. Если время ожидания браузера истечет, просто обновите страницу. После извлечения исходного образа последующие тесты будут выполняться гораздо быстрее.
Доступ к журналам диагностики
Пока вы ожидаете получения образа Службой приложений, будет полезно точно видеть, что делает Служба приложений, организовав потоковую передачу журналов контейнера на ваш терминал.
Включите ведение журнала для контейнера.
az webapp log config --name <app-name> --resource-group msdocs-custom-container-tutorial --docker-container-logging filesystemВключите потоковую передачу журналов.
az webapp log tail --name <app-name> --resource-group msdocs-custom-container-tutorialЕсли журналы консоли не отображаются, проверьте еще раз через 30 секунд.
Вы также можете проверить файлы журналов из браузера, перейдя к ним
https://<app-name>.scm.azurewebsites.net/api/logs/docker.Чтобы остановить потоковую передачу журналов в любое время, нажмите клавиши CTRL+C.
Изменение кода и повторное развертывание приложения
В этом разделе вы внесете изменения в код веб-приложения, перестроите образ и отправите его в реестр контейнеров. Затем Служба приложений автоматически извлечет обновленный образ из реестра и обновит работающее веб-приложение.
В локальной папке docker-django-webapp-linux откройте файл app/templates/app/index.html.
Измените первый элемент HTML в соответствии со следующим кодом.
<nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <a class="navbar-brand" href="#">Azure App Service - Updated Here!</a> </div> </div> </nav>Сохранение изменений.
Перейдите в папку docker-django-webapp-linux и перестройте образ:
docker build --tag appsvc-tutorial-custom-image .Обновите тег
latestизображения следующим образом:docker tag appsvc-tutorial-custom-image <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestЗамените
<registry-name>именем своего реестра.Отправьте образ в реестр:
docker push <registry-name>.azurecr.io/appsvc-tutorial-custom-image:latestПо завершении отправки образа веб-перехватчик уведомляет Служба приложений о отправке и Служба приложений пытается извлечь обновленный образ. Подождите несколько минут, а затем убедитесь, что обновление развернуто.
https://<app-name>.azurewebsites.net
Подключение к контейнеру с помощью SSH
SSH обеспечивает улучшенную связь между контейнером и клиентом. Чтобы включить подключение SSH к контейнеру, необходимо настроить для него пользовательский образ. После запуска контейнера можно открыть SSH-подключение.
Настройка SSH для контейнера
Пример приложения, используемого в этом руководстве, уже имеет необходимую конфигурацию в Dockerfile, которая устанавливает сервер SSH, а также задает учетные данные для входа. Этот раздел не содержит практических действий. Чтобы подключиться к контейнеру, перейдите к следующему разделу.
ENV SSH_PASSWD "root:Docker!"
RUN apt-get update \
&& apt-get install -y --no-install-recommends dialog \
&& apt-get update \
&& apt-get install -y --no-install-recommends openssh-server \
&& echo "$SSH_PASSWD" | chpasswd
Примечание.
Эта конфигурация не допускает внешние подключения к контейнеру. SSH доступен только через сайт Kudu/SCM. Сайты Kudu и SCM выполняют аутентификацию с вашей учетной записью Azure.
root:Docker! не следует изменять при использовании SSH. SCM/KUDU использует учетные данные портала Azure. Изменение этого значения приведет к ошибке при использовании SSH.
Dockerfile также копирует файл sshd_config в папку /etc/ssh/ и предоставляет порт 2222 в контейнере:
COPY sshd_config /etc/ssh/
# ...
EXPOSE 8000 2222
Внутренний порт 2222 доступен контейнерам внутри мостовой сети виртуальной частной сети.
Наконец, начальный сценарий init.sh запускает SSH-сервер.
#!/bin/bash
service ssh start
Открытие подключения SSH к контейнеру
Перейдите к
https://<app-name>.scm.azurewebsites.net/webssh/hostучетной записи Azure и войдите в систему. Замените<app-name>именем своего веб-приложения.После входа вы будете перенаправлены на информационную страницу веб-приложения. Выберите SSH в верхней части страницы, чтобы открыть оболочку и выполнить команды.
Например, можно проверить процессы, выполняемые в приложении, с помощью
topкоманды.
Очистка ресурсов
За использование ресурсов, созданных во время изучения этой статьи, может взиматься плата. Чтобы очистить ресурсы, достаточно просто удалить группу ресурсов, которая их содержит.
az group delete --name msdocs-custom-container-tutorial
Следующие шаги
Вы научились выполнять следующие задачи:
- Разверните пользовательский образ в частном реестре контейнеров.
- Разверните пользовательский образ в Служба приложений.
- Обновите и повторно разверните образ.
- Доступ к журналам диагностики.
- Подключитесь к контейнеру с помощью SSH.
- Отправьте пользовательский образ Docker в реестр контейнеров.
- Разверните пользовательский образ в Служба приложений.
- Настройте переменные среды.
- Извлеките изображение в Служба приложений с помощью управляемого удостоверения.
- Доступ к журналам диагностики.
- Включите CI/CD из реестра контейнеров в службу приложений.
- Подключитесь к контейнеру с помощью SSH.
Перейдите к следующему руководству:
Или ознакомьтесь с другими ресурсами: