建立要重複使用的容器
使用這些容器配方建立可重複使用的 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。
透過從您想要使用的現有 Azure AI 服務容器中提取的方式,建立 Dockerfile,然後使用 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 build
和docker 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,並將新的映像放在您的私人容器登錄中。
使用重複使用配方中的文字,建立
Dockerfile
。Dockerfile
沒有副檔名。將角括弧中的任何值取代為您自己的值。
使用下列命令,在命令列或終端機的映像中建置檔案。 將角括弧中的值
<>
取代為您自己的容器名稱和標記。標記選項
-t
是一種方式,可新增您已針對容器變更之內容的相關資訊。 例如,modified-LUIS
的容器名稱表示原始容器已分層。with-billing-and-model
的標記名稱表示修改 Language Understanding (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 登入來登入。
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>