你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建要重复使用的容器

使用这些容器方案来创建可重复使用的 Azure AI 容器。 可以生成包含一部分或所有配置设置的容器,使容器在启动时不需要获取这些设置。

创建此新容器层(包含设置)并在本地对其进行测试后,可将容器存储在容器注册表中。 容器启动时,它只需获取当前未存储在容器中的设置。 专用注册表容器提供用于传入这些设置的配置空间。

Docker 运行语法

本文档中的任何 docker run 示例假设使用 Windows 控制台,其中包含 ^ 行继续符。 在自行使用时,请注意以下几点:

  • 除非非常熟悉 docker 容器,否则不要更改参数顺序。
  • 如果使用的操作系统不是 Windows,或者使用的控制台不是 Windows 控制台,请使用正确的控制台/终端、装入点的文件夹语法,以及适用于该控制台和系统的行继续符。 由于 Azure AI 服务容器是一个 Linux 操作系统,因此目标载入点将使用 Linux 样式的文件夹语法。
  • docker run 示例使用 c: 驱动器外的目录来避免 Windows 上的任何权限冲突。 如果需要使用特定目录作为输入目录,则需要授予 docker 服务权限。

不会在映像中存储任何配置设置

每个服务的示例 docker run 命令不会将任何配置设置存储在容器中。 从控制台或注册表服务启动容器时,需要传入这些配置设置。 专用注册表容器提供用于传入这些设置的配置空间。

重用配方:将所有配置设置存储到容器中

若要存储所有配置设置,请使用这些设置创建 Dockerfile

此方法的问题:

  • 新容器的名称和标记不同于原始容器。
  • 若要更改这些设置,必须更改 Dockerfile 的值,重新生成映像,然后将其重新发布到注册表。
  • 如果有人获取了容器注册表或本地主机的访问权限,则他们可以运行该容器并使用 Azure AI 服务终结点。
  • 如果正在使用的 Azure AI 服务不需要输入装载,请不要将 COPY 行添加到 Dockerfile。

创建 Dockerfile,从要使用的现有 Azure AI 服务容器拉取数据,然后在 Dockerfile 中使用 docker 命令来设置或拉取容器所需的信息。

本示例:

  • 使用 ENV 通过主机的环境密钥设置计费终结点 {BILLING_ENDPOINT}
  • 使用 `ENV 通过主机的环境密钥设置计费 API 密钥 {ENDPOINT_KEY}

重用配方:将计费设置存储到容器中

此示例展示了如何从 Dockerfile 构建语言服务的情绪容器。

FROM mcr.microsoft.com/azure-cognitive-services/sentiment:latest
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept

根据需要,在本地或者从专用注册表容器生成并运行容器。

重用配方:将计费和装载设置存储到容器中

本示例演示如何使用语言理解,以及如何保存 Dockerfile 中的计费和模型。

  • 使用 COPY 从主机的文件系统复制语言理解 (LUIS) 模型文件。
  • LUIS 容器支持多个模型。 如果所有模型存储在同一文件夹中,则只需一个 COPY 语句。
  • 从模型输入目录的相对父级运行 Docker 文件。 以下示例从 /input 的相对父级运行 docker builddocker run 命令。 COPY 命令中的第一个 /input 为主计算机的目录。 第二个 /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,并将新映像放在专用容器注册表中。

  1. 使用重用配方中的文本创建 DockerfileDockerfile 没有扩展。

  2. 请将尖括号中的所有值替换为自己的值。

  3. 在命令行或终端中,使用以下命令将文件生成为映像。 请将尖括号 <> 中的值替换为自己的容器名称和标记。

    可以使用标记选项 -t 添加有关对容器做了哪些更改的信息。 例如,容器名称 modified-LUIS 表示已将原始容器分层。 标记名称 with-billing-and-model 表示语言理解 (LUIS) 容器的修改方式。

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. 从控制台登录到 Azure CLI。 此命令打开浏览器并要求身份验证。 完成身份验证后,可以关闭浏览器并在控制台中继续操作。

    az login
    
  5. 在控制台中使用 Azure CLI 登录到专用注册表。

    请将尖括号 <my-registry> 中的值替换为自己的注册表名称。

    az acr login --name <my-registry>
    

    如果分配了服务主体,则还可以使用 docker login 登录。

    docker login <my-registry>.azurecr.io
    
  6. 使用专用注册表位置标记容器。 请将尖括号 <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

  7. 将新映像推送到专用容器注册表。 查看专用容器注册表时,以下 CLI 命令中使用的容器名称是存储库的名称。

    docker push <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
    

后续步骤

创建并使用 Azure 容器实例