使用 Azure 容器執行個體,以簡單且快速的方式在 Azure 中執行無伺服器 Docker 容器。 當您不需要 Azure Kubernetes Service 等完整容器協調流程平台時,請隨選將應用程式部署至容器執行個體。
在本快速入門中,您將使用 Azure CLI 來部署一個隔離的 Docker 容器,並透過完整功能限定名稱(FQDN)來提供其應用程式的服務。 執行單一部署命令幾秒鐘後,您可以瀏覽至容器中執行的應用程式:
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
先決條件
使用 Azure Cloud Shell 中的 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱 如何在 Docker 容器中執行 Azure CLI。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
本快速入門需要 2.0.55 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。
警告
最佳實務:透過命令列介面(CLI)傳遞的使用者認證會以純文字形式儲存在後端。 以純文字儲存認證存在安全風險;Microsoft 建議客戶將使用者認證儲存在 CLI 環境變數中,以確保它們在儲存在後端時經過加密/轉換。
建立資源群組
Azure 容器執行個體,就像所有 Azure 資源一樣,必須部署到資源群組中。 資源群組可讓您組織和管理相關的 Azure 資源。
首先,使用 az group create 命令在 eastus 位置建立名為 myResourceGroup 的資源群組:
az group create --name myResourceGroup --location eastus
建立容器
現在您已經有了資源群組,您可以在 Azure 中執行容器。 若要使用 Azure CLI 建立容器執行個體,請向 az container create 命令提供資源群組名稱、容器執行個體名稱和 Docker 容器映像。 在本快速入門中,您會使用公用 mcr.microsoft.com/azuredocs/aci-helloworld 映像。 此映像檔會封裝以 Node.js 撰寫的小型 Web 應用程式,以提供靜態 HTML 頁面。
您可以指定要開啟的一或多個連接埠、DNS 名稱標籤或兩者,將容器公開給網際網路。 在本快速入門中,您會部署具有 DNS 名稱標籤的容器,讓 Web 應用程式可公開連線。
執行類似下列的命令來啟動容器執行個體。 設定 --dns-name-label 值,其在您建立執行個體所在的 Azure 區域中必須是唯一的。 如果您收到「DNS 名稱標籤無法使用」錯誤訊息,請嘗試使用其他 DNS 名稱標籤。
az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80 --os-type linux --memory 1.5 --cpu 1
若要 將容器部署到特定可用區域,請使用 --zone 引數並指定邏輯區域號碼:
az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80 --os-type linux --memory 1.5 --cpu 1 --zone 1
這很重要
區域部署僅適用於支援可用性區域的區域。 若要查看您的區域是否支援可用性區域,請參閱 Azure 區域清單。
在幾秒鐘內,您應該會從 Azure CLI 收到回應,指出部署已完成。 使用 az container show 命令檢查其狀態:
az container show --resource-group myResourceGroup --name mycontainer --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table
當您執行命令時,會顯示容器的完整網域名稱 (FQDN) 及其佈建狀態。
FQDN ProvisioningState
--------------------------------- -------------------
aci-demo.eastus.azurecontainer.io Succeeded
如果容器的ProvisioningState狀態是Succeeded,請在瀏覽器中訪問其 FQDN。 如果您看到類似以下的網頁,恭喜您! 您已成功將 Docker 容器中執行的應用程式部署至 Azure。
如果一開始應用程式並未顯示,您可能需要等候幾秒鐘讓 DNS 傳播完成,然後再次嘗試重新整理瀏覽器。
提取容器日誌
當您需要對容器或其執行的應用程式進行疑難排解 (或只查看其輸出) 時,請先檢視容器執行個體的日誌。
使用 az container logs 命令提取容器執行個體記錄:
az container logs --resource-group myResourceGroup --name mycontainer
輸出會顯示容器的記錄,並應顯示您在瀏覽器中檢視應用程式時產生的 HTTP GET 要求。
listening on port 80
::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
附加輸出串流
除了檢視記錄外,您還可以將您的本機標準輸出和標準錯誤資料流附加至容器的這些項目。
首先,執行 az container attach 命令,將本機主控台附加至容器的輸出資料流。
az container attach --resource-group myResourceGroup --name mycontainer
附加後,刷新瀏覽器幾次以生成更多輸出。 完成後,請使用 Control+C 來斷開您的控制台。 您應該會看到類似下列範例的輸出:
Container 'mycontainer' is in state 'Running'...
(count: 1) (last timestamp: 2019-03-21 17:27:20+00:00) pulling image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:24+00:00) Successfully pulled image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Created container
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Started container
Start streaming logs:
listening on port 80
::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:47:01 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.56 - - [21/Mar/2019:17:47:12 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
清理資源
當您完成容器時,請使用 az container delete 命令將其移除:
az container delete --resource-group myResourceGroup --name mycontainer
若要確認容器已刪除,請執行 az container list 命令:
az container list --resource-group myResourceGroup --output table
mycontainer 容器不應出現在命令的輸出中。 如果資源群組中沒有其他儲存器,則不會顯示任何輸出。
如果您已完成 myResourceGroup 資源群組及其包含的所有資源,請使用 az group delete 命令將其刪除:
az group delete --name myResourceGroup
後續步驟
在本快速入門中,您已使用公用 Microsoft 映像建立 Azure 容器執行個體。 如果您想要建置容器映像,並從私人 Azure 容器登錄部署它,請繼續進行 Azure 容器執行個體教學課程。
若要嘗試在 Azure 上的協調流程系統中執行容器的選項,請參閱 Azure Kubernetes Service (AKS) 快速入門。