練習 - 將微服務映像推送至 Docker Hub

已完成

為了讓 Kubernetes 建立容器映像,其需要一個能取得容器映像的位置。 Docker Hub 是上傳 Docker 映像的中樞位置。 許多產品 (包括 Kubernetes) 都能夠以 Docker Hub 上的映像為基礎建立容器。

注意

您將會在已安裝 Docker.NET SDK 的 GitHub Codespace 中完成此練習。 當您在自己的開發環境中使用這些技術時,請確定您已安裝這些必要條件。

開啟開發環境

您可以選擇使用裝載本練習的 GitHub Codespace,或在 Visual Studio Code 本機上完成該練習。

若要使用 Codespace,請使用 此 Codespace 建立連結 來建立預先設定的 GitHub Codespace。

此流程需要幾分鐘的時間,GitHub 會建立及設定 codespace。 完成後,此課程模組其餘部分所使用的程式碼會位於 /dotnet-kubernetes 目錄中。

若要使用 Visual Studio Code,請將 https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative 存放庫複製到本機電腦。 接下來:

  1. 安裝任何系統要求,以在 Visual Studio Code 中執行開發容器。
  2. 確定 Docker 是執行狀態。
  3. 在新的 Visual Studio Code 視窗中,開啟複製存放庫的資料夾
  4. 按下 Ctrl+Shift+P,以開啟命令選擇區。
  5. 搜尋:>開發容器:重建並在容器中重新開啟
  6. 從下拉式清單中選取 eShopLite - dotnet-kubernetes。 Visual Studio Code 會在本機上建立您的開發容器。

在 codespace 建立容器以驗證 Docker 影像

Contoso Shop 專案中有兩個容器。 將影像推送至 Docker Hub 之前,讓我們先用它們在 codespace 建立容器。 建立並執行容器之後,我們就能夠瀏覽 Contoso 公司網站,並驗證微服務是否正常運作。

請遵循下列步驟,在 codespace 中建立和執行 Docker 容器。

  1. 切換至 [TERMINAL] 索引標籤,然後執行下列命令以移至程式碼根:

    cd dotnet-kubernetes
    
  2. 執行下列命令以建置容器:

    dotnet publish /p:PublishProfile=DefaultContainer
    

    建置容器可能需要一些時間。

  3. 執行下列命令以執行應用程式並連結容器:

    docker compose up
    
  4. 若要測試前端服務,請切換至 [連接埠] 索引標籤,然後在 [前端] 連接埠的本機位址右側,選取地球圖示。 瀏覽器會顯示首頁。

  5. 選取產品。 目錄會顯示 Contoso 的商品。

  6. 關閉網站,返回 [TERMINAL] 索引標籤,然後按 CTRL + C。Docker compose 會停止容器。

登入 Docker Hub

將映像上傳至 Docker Hub 的下一個步驟是登入 Docker Hub。 從命令提示字元,輸入下列內容:

docker login

重要

使用建立 Docker 帳戶時所用的相同使用者名稱和密碼。 如有需要,您可以前往 Docker Hub 網站重設密碼。

將映像上傳至 Docker Hub

  1. 輸入下列程式碼,來重新標記或重新命名您以 Docker 使用者名稱建立的 Docker 映像。

    docker tag store [YOUR DOCKER USER NAME]/storeimage
    docker tag products [YOUR DOCKER USER NAME]/productservice
    
  2. 最後,將 Docker 映像上傳或推送至 Docker Hub。

    docker push [YOUR DOCKER USER NAME]/storeimage
    docker push [YOUR DOCKER USER NAME]/productservice
    

    如果您收到驗證錯誤,您可以執行 docker logout,然後執行 docker login 以重新驗證。

在此練習中,您已使用 Dockerfiles 和 docker compose 來建立兩個 Docker 影像和容器,並將這些影像推送至 Docker Hub。

現在您已經準備好使用 Kubernetes,來管理 Contoso 的微服務部署。