掌握 Azure Docker 部署:逐步指南

對於這個ATA項目,你將瞭解Docker在Azure上的工作方式。在這個Azure Docker教程中,你將學習到Microsoft提供的Azure容器實例(ACI)服務。

Azure容器實例是通過Azure Docker主機提供的托管Kubernetes集群。它允許你部署任何Docker映像(Windows和Linux)並將其運行為容器。每個Azure Docker容器作為獨立的容器運行,使用自己分配的CPU和內存。

在這個項目中,你將學習如何部署和運行你的第一個Azure容器實例,該容器實例基於Azure公共雲中的Microsoft示例ASP.NET容器映像。

在項目結束時,你將在Azure容器實例服務中運行一個托管在Docker容器中的ASP.NET網站。

環境和知識要求

為了充分利用這個Azure Docker教程,你應該具備以下內容:

  1. A local Windows 10 client with Docker Desktop installed.
  2. A Microsoft Azure account
  3. 使用權限部署容器到Azure容器註冊表的Azure帳戶訪問權限
  4. 已安裝的Windows Azure CLI。你將從命令行中進行學習。
  5. A beginner understanding of containers and Docker.
  6. A registered Docker ID.

如果您不喜欢本Azure Docker教程中选择的示例,您可以随时在Docker Hub上使用另一个容器镜像。

废话不多说,让我们开始构建这个项目吧!

运行Docker容器

为了避免以后出现问题时感到沮丧,请始终首先验证Docker引擎是否正在运行。为此,打开命令提示符或PowerShell会话,并运行docker info命令。

您可以在下面看到您应该收到的输出类型。

Inspecting information about the local Docker installation

为了验证并启动一个Docker容器,请运行docker run hello-world命令。在幕后,docker命令执行了几个步骤:

  1. 在您的Windows 10计算机上本地查找名为hello-world的容器。
  2. 如果找不到,则它会连接到公共Docker Hub存储库,查找具有名称hello-world的容器的最新版本。
  3. 找到容器后,然后从Docker Hub存储库下载它。
  4. 下载完成后,容器将被启动并执行其所使用镜像中提供的启动指令。

您可以在下面看到一些示例输出。

Download a sample Docker container called hello-world

启动一个示例ASP.NET容器

现在,您知道如何下载并运行一个Docker容器了,现在下载并运行本项目中要使用的容器。这个Docker容器是一个ASP.Net Core Web应用程序镜像。

要下載這個 Azure Docker 教程的映像,請運行以下命令:

> docker run --name aspnetcore_sample --rm -it -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp

此命令執行以下操作:

  1. 由於本地沒有可用的 Docker 映像,Docker 將從 Microsoft 托管的另一個公共容器註冊表中下載一個名為aspnetapp的容器,該容器位於mcr.microsoft.comdotnet/core/samples目錄下。mcr.microsoft.com容器註冊表類似於公共的 Docker Hub,但由 Microsoft 維護,僅托管 Microsoft 容器映像。
  2. 在本地計算機上運行該容器。
  3. (-p 8000:80) – 將容器的 TCP 端口 80 映射到 TCP 端口 8000。這允許您在本地的 8000 端口訪問 Web 應用程序。
  4. (-it) – 容器將以互動方式啟動,這意味著它啟動時您將立即進入控制台。
  5. (--rm) – 停止容器後,將被刪除。

您可以在下面看到預期的輸出。

Downloading a container instance from Microsoft

6.   從您的瀏覽器,通過瀏覽到http://localhost:8000連接到運行中的容器應用程序。您應該可以看到 ASP.Net 樣本 Web 應用程序。

Sample ASP.NET web app

創建 Azure 容器註冊表(ACR)實例

一旦您將ASP.NET容器下載到本地計算機上,現在是將其遷移到Azure Docker主機上並在Azure中運行此容器的時候了。為此,我們將將演示容器推送到Azure容器註冊表(ACR)。 ACR是一項服務,允許您直接在Azure中部署和運行Docker容器。

  1. 登錄到Azure門戶
  2. 單擊頂部的終端圖標以啟動Azure Cloud Shell
Starting Azure Cloud Shell

3. 確保您選擇如下所示的Bash shell。

Bash in Azure Cloud Shell

4. 使用下面的az group create命令創建一個Azure資源組,將ACR的實例放入其中。

> az group create --name <RGname> --location <Azure Region of choice>
Creating a resource group

5. 現在使用az acr create命令在資源組內創建ACR。下面的示例顯示了使用Basic SKU創建ACR的示例,使用admin-enabled參數設置為true。設置為true是因為它允許您以後進行資源管理。

> az acr create --resource-group <RGname> --name <ACRname> --sku Basic
 --admin-enabled true
Creating an Azure Container Registry

–admin-enabled true

完成後,您現在應該在資源組內運行一個ACR實例。 Azure Docker主機來拯救!

本地連接到ACR實例

  1. 現在,您需要從Azure Cloud Shell移動到本地Windows計算機以完成設置。
  2. 在本地機器上,使用管理員權限啟動 PowerShell 或命令提示字元。我將使用 PowerShell。
  3. 通過運行 az login 命令並按照提示提供您的憑據來使用 Azure CLI 認證 Azure。
Authenticating to Azure

成功驗證後,您應該會看到一些 JSON 輸出,指示您剛才驗證的用戶。

> az acr login --name <ACR-Name> --resource-group <RG Name>
Logging onto ACR

接下來,使用以下命令使用 as acr login 命令驗證 Azure Cloud Shell 中剛建立的 ACR 實例。下面您可以看到我正在連接到名為 nopacr1 的 ACR 實例,位於 Azure 資源群組 NOPRG 中。

更新 Docker 映像標籤

  1. 您現在可以將本地 Docker 映像推送到 Azure Docker 主機或 ACI 中的 ACR 實例。但是,您必須先滿足 ACR 的相依性。推送到 ACR 實例的所有 Docker 映像必須在映像名稱中包含 ACR 實例的名稱。
Finding the ACR Docker image

使用命令 docker images 找到 Docker 映像的 ID 號碼或映像名稱。

> docker tag mcr.microsoft.com/dotnet/core/samples:aspnetapp <ACRName>.azurecr.io/<imagenameofchoice>
Updating the Docker tag

2.   通過運行下面所示的 docker tag 命令來更新 Docker 映像的標籤。如果您遵循命名慣例,請使用 ACR 名稱 NOPACR1,並將標籤定義為 nopacr1.azurecr.io 對於映像本身,請使用名稱 dotnetsample

Verifying Docker tag

3.   再次使用 docker images 命令驗證已應用標籤。現在您應該能看到已更新標籤。

  1. 上傳 Docker 映像到 ACR 實例並驗證。
> docker push <ACRName>.azurecr.io/<nameofimage>
Pushing Docker image to ACR

現在使用以下的docker push命令將本地圖片上傳到ACR實例,並提供ACR實例所在的DNS名稱標籤。

Inspecting ACR instance in Azure portal

2. 上傳完成後,通過Azure Portal進行驗證,方法是導航到所有服務 -> Azure容器註冊表,然後選擇之前創建的ACR實例。

Inspecting Docker repo

3. 在左側的選單中,在服務部分下,點擊存儲庫。剛剛上傳到ACR實例的Docker圖片應該會出現在這裡。

Inspecting Docker image

4. 點擊圖片,你將看到它的版本和其他一些有用的信息。

運行Azure容器實例(ACI)

  1. 現在你已經創建了一個ACR實例,將一個帶有ACR名稱引用的Docker容器圖片標記,並將圖片推送到ACR實例。現在是使用Azure容器實例(ACI)運行存儲在ACR實例中的Docker圖片的時候了。
Creating a container instance

從上一步繼續,點擊最新版本旁邊的…,然後選擇運行實例。這將打開創建容器實例的選項。

  • 2. 在下方的創建容器實例框中填寫以下信息:
  • 容器名稱 – 任何您想為此運行容器使用的名稱
  • 操作系統類型 – Linux(這取決於源容器。如果您在此項目中使用相同的容器,則可能是Windows。)
  • 訂閱 – 您的Azure訂閱
  • 資源群組 – 將容器實例加入現有或新的 Azure 資源群組

位置 – 基於資源群組

Creating a container instance

對於這個 Azure Docker 教程中的 ASP.NET 容器,您可以將其他設置保持不變。在生產環境中,根據容器運行的內容,您可能需要更改這些設置。

Successful container instance deployment

3. 按下確定以創建容器實例。
4. 容器實例部署完成後,您應該看到一個類似下面示例的頁面。

Inspecting created container instance

5. 部署完成後,通過瀏覽到所有服務 -> 容器實例,在門戶中打開 ACI。在這裡,瀏覽到剛剛創建的 Azure 容器實例 (ACI)。您應該會看到下面的實例。

Sample ASP.NET Core webpage

6. 複製右上角的 IP 地址,並將其粘貼到網頁瀏覽器中。您的示例 ASP.NET Web 應用程序應該從 Azure 容器實例 (ACI) 載入並顯示網頁,如下所示。

如果您完成了這個容器,則可以使用az container delete命令刪除容器

結論

Source:
https://adamtheautomator.com/azure-docker-tutorial/