將 Docker 映像部署至 Azure 容器執行個體
Azure 容器執行個體是會視需要載入並執行 Docker 映像的服務。 Azure 容器執行個體服務可從 Docker Hub 或 Azure Container Registry 等登錄擷取映像。
您的組織想要使用 Azure 執行其 Web 應用程式。 因此,將映像儲存在 Azure Container Registry,然後使用 Azure 容器執行個體服務來執行這些映像是合理的做法。
在此單元中,您將會了解如何將 Docker 映像上傳到 Azure Container Registry。 接著,您將會使用 Azure 容器執行個體服務執行映像。
使用 Azure Container Registry 儲存容器
Azure Container Registry 是由 Azure 提供的登錄裝載服務。 您建立的每項 Azure Container Registry 資源都是具有唯一 URL 的個別登錄。 這些登錄是「私人的」,這表示其需要驗證才能推送或提取映像。 Azure Container Registry 會在雲端執行,並提供與其他 Azure 服務類似的可擴縮性和可用性層級。
您可以使用 Azure 入口網站或 Azure 命令列介面 (CLI) 來建立登錄。 您可以使用 Azure 入口網站中的 Cloud Shell 或 Azure CLI 的本機安裝。 請記住,在建立登錄之前,您必須先建立資源群組。 建立資源群組時,建議您選擇最接近的區域。 在此範例中,我們的資源群組名稱是 mygroup
,而位置是美國西部。
您不需要執行下列任何命令。 我們將會在下一個練習中進行這項操作。
注意
您需要為容器提供唯一名稱。 您可以在這裡查看名稱是否已在使用中。
az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true
不同的 SKU 能提供不同層級的可擴縮性和儲存體。
Azure Container Registry 存放庫是私人的,這表示其不支援未經驗證的存取。 若要從 Azure Container Registry 存放庫提取映像,請使用 docker login
命令並指定登錄的登入伺服器 URL。 Azure Container Registry 登錄的登入伺服器 URL 格式為 <登錄名稱>.azurecr.io。
docker login myregistry.azurecr.io
Docker 登入會提示您輸入使用者名稱與密碼。 若要尋找此資訊,請移至 Azure 入口網站、尋找登錄的存取金鑰或執行下列命令。
az acr credential show --name myregistry --resource-group mygroup
您會從本機電腦使用 docker push
命令將映像「推送」至 Docker 登錄。 但在推送映像之前,您必須先建立映像別名,此別名指定 Docker 登錄會建立的存放庫與標籤。 存放庫名稱格式必須為 *<login_server>/<image_name>:<tag/>。 使用 docker tag
命令來執行此作業。 下列範例會為 reservationsystem 映像建立別名。
docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2
如果您執行 docker image ls
,您將會看到適用於該映像的兩個項目:一個具有原始名稱,另一個則有新的別名。
執行標籤命令之後,您可以使用下列命令,將映像上傳至 Azure Container Registry 中的登錄。
docker push myregistry.azurecr.io/reservationsystem:v2
使用下列命令列出登錄中的存放庫,確認該映像已正確上傳。
az acr repository list --name myregistry --resource-group mygroup
您也可以使用 acr repository show
命令列出登錄中的映像。
az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup
注意
您會發現存放庫中的每個映像至少都有兩個標籤。 一個標籤將會是您在 acr build 命令中指定的值 (在先前的範例中為 v1)。 其他則為 latest。 每次重建映像時,Azure Container Registry 會自動建立 latest 標籤作為最新映像版本的別名。
使用 Azure 容器執行個體執行映像
Azure 容器執行個體服務可以從 Azure Container Registry 載入映像,然後在 Azure 中加以執行。
您會使用 az container create
命令建立容器執行個體,並開始執行映像。 在 registry-username
和 registry-password
參數中提供登錄的使用者名稱和密碼。 系統會配置 IP 位址給執行個體。 您可以此 IP 位址來存取該執行個體。 如果您偏好透過更方便使用的標籤來參考執行個體,您可以選擇指定 DNS 名稱。 請注意,您指定映像作為 URL,其在 Azure Container Registry 服務中參考 (azurecr.io) 您的登錄 (myregistry)。 如果您使用 Docker Hub 或一些其他登錄,請使用您在該登錄中映像的 URL 取代此 URL。
az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>
Azure 會使用以您指定的 DNS 標籤為基礎的網域名稱來裝載執行個體。 您可以透過查詢執行個體的 IP 位址,來尋找執行個體的完整網域名稱。
az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn
您可以使用網頁瀏覽器存取應用程式。 您可以瀏覽至此命令傳回的 URL; 我們將在下一個單元中了解如何做到。