Создание контейнеров для повторного использования
Используйте эти рецепты контейнеров для создания контейнеров ИИ Azure, которые можно использовать повторно. Контейнеры можно создавать с помощью некоторых или всех параметров конфигурации, чтобы они не требовались при запуске контейнера.
После создания нового слоя контейнера (с параметрами) и его локального тестирования можно сохранить контейнер в реестре контейнеров. При запуске контейнеру потребуются только те параметры, которые в данный момент не хранятся в контейнере. Контейнер в частном реестре предоставляет пространство конфигурации для передачи этих параметров.
Синтаксис выполнения Docker
Во всех примерах docker run
в этом документе предполагается наличие консоли Windows с символом продолжения строки ^
. Примите во внимание следующие сведения.
- Не изменяйте порядок аргументов, если вы не являетесь уверенным пользователем контейнеров Docker.
- Если используется операционная система, отличная от Windows, или консоль, отличная от консоли Windows, используйте консоль или терминал, синтаксис папок для подключений и символ продолжения строки, соответствующие вашим консоли и системе. Так как контейнер служб ИИ Azure является операционной системой Linux, целевое подключение использует синтаксис папки в стиле Linux.
- В примерах
docker run
используется каталог с дискаc:
, чтобы избежать конфликтов разрешений в Windows. Если вам нужно использовать определенный каталог в качестве входного каталога, может потребоваться предоставить разрешение службы Docker.
Не сохраняйте параметры конфигурации в образе
В примерах команд docker run
для каждой службы параметры конфигурации не сохраняются в контейнере. При запуске контейнера из консоли или службы реестра необходимо передать эти параметры конфигурации. Контейнер в частном реестре предоставляет пространство конфигурации для передачи этих параметров.
Рецепт повторного использования: храните все параметры конфигурации в контейнере
Чтобы сохранить все параметры конфигурации, создайте Dockerfile
с этими параметрами.
Проблемы, свойственные такому подходу.
- Новый контейнер имеет отдельные от исходного контейнера имя и тег.
- Чтобы изменить эти параметры, необходимо изменить значения Dockerfile, перестроить образ и повторно выполнить публикацию в реестре.
- Если кто-то получает доступ к реестру контейнеров или локальному узлу, он может запустить контейнер и использовать конечные точки служб ИИ Azure.
- Если в используемой службе искусственного интеллекта Azure не требуются входные подключения, не добавляйте
COPY
строки в Dockerfile.
Создайте Dockerfile, извлекая из существующего контейнера служб ИИ Azure, который вы хотите использовать, а затем используйте команды Docker в Dockerfile для задания или извлечения сведений о потребностях контейнера.
В этом примере:
- Задает конечную точку выставления счетов
{BILLING_ENDPOINT}
из ключа среды узла с помощьюENV
. - Задает ключ API выставления счетов
{ENDPOINT_KEY}
из ключа среды узла с помощью `ENV.
Рецепт повторного использования: храните параметры выставления счетов в контейнере
В этом примере показано, как создать контейнер тональности Языковой службы из Dockerfile.
FROM mcr.microsoft.com/azure-cognitive-services/sentiment:latest
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
При необходимости создайте и запустите контейнер локально или из контейнера частного реестра.
Рецепт повторного использования: храните параметры выставления счетов и подключения в контейнере
В этом примере показано, как использовать Распознавание речи, сохраняя выставление счетов и модели из Dockerfile.
- Копирует файл модели Распознавания речи (LUIS) из файловой системы узла с помощью
COPY
. - Контейнер LUIS поддерживает более одной модели. Если все модели хранятся в одной и той же папке, требуется только инструкция
COPY
. - Запустите файл Docker из соответствующей родительской папки каталога входных данных модели. В следующем примере выполните команды
docker build
иdocker run
из соответствующего родительского каталога/input
. Первый каталог/input
в командеCOPY
— это каталог главного компьютера. Второй каталог/input
— это каталог контейнера.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input
При необходимости создайте и запустите контейнер локально или из контейнера частного реестра.
Использование контейнера на локальном узле
Чтобы создать файл Docker, замените <your-image-name>
на новое имя образа, а затем используйте:
docker build -t <your-image-name> .
Чтобы запустить образ и удалить его при остановке контейнера (--rm
):
docker run --rm <your-image-name>
Добавление контейнера в частный реестр
Выполните следующие действия, чтобы использовать Dockerfile и поместить новый образ в частный реестр контейнеров.
Создайте
Dockerfile
с текстом из рецепта повторного использования.Dockerfile
не имеет расширения.Замените все значения в угловых скобках собственными значениями.
Соберите файл в образ в командной строке или терминале с помощью следующей команды. Замените значения в угловых скобках (
<>
) на собственное имя и тег контейнера.Параметр тега
-t
— это способ добавить сведения об изменениях, внесенных в контейнер. Например, имя контейнераmodified-LUIS
указывает, что исходный контейнер был разделен на уровни. Имя тегаwith-billing-and-model
показывает, как был изменен контейнер Распознавания речи (LUIS).docker build -t <your-new-container-name>:<your-new-tag-name> .
Войдите в Azure CLI из консоли. Эта команда открывает браузер и требует проверки подлинности. После выполнения проверки подлинности можно закрыть браузер и продолжить работу в консоли.
az login
Войдите в свой частный реестр с Azure CLI из консоли.
Замените значения в угловых скобках (
<my-registry>
) на имя реестра.az acr login --name <my-registry>
Вы также можете войти в систему,
docker login
если назначен субъект-служба.docker login <my-registry>.azurecr.io
Добавьте контейнеру тег расположения частного реестра. Замените значения в угловых скобках (
<my-registry>
) на имя реестра.docker tag <your-new-container-name>:<your-new-tag-name> <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
Если имя тега не используется, подразумевается
latest
.Отправьте новый образ в частный реестр контейнеров. При просмотре частного реестра контейнеров в следующей команде CLI в качестве имени контейнера будет использоваться имя репозитория.
docker push <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>