建立要重複使用的容器

使用這些容器配方來建立可重複使用的 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

視需要,在本機或從私人登錄容器建置並執行容器。

重複使用配方:使用容器儲存計費和掛接設定

此範例示範如何使用 Language Understanding,從 Dockerfile 儲存計費和模型。

  • 從主機的檔案系統,使用 COPY 複製 Language Understanding (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 的標記名稱表示修改 Language Understanding (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 登入來登入。

    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 容器執行個體