Oktatóanyag: Georeplikált Azure Container Registry előkészítése

Az Azure Container Registryk az Azure-ban üzembe helyezett privát Docker-tárolójegyzékek, amelyeket a hálózaton elérhető távolságban tarthat az üzemelő példányokhoz. Ebből a háromrészes oktatóanyagból megtudhatja, hogyan használhat georeplikációt egy Linux-tárolóban futó ASP.NET Core-webalkalmazás két Web Apps for Containers-példányban történő üzembe helyezéséhez. Láthatja, hogyan helyezi üzembe automatikusan az Azure a rendszerképet minden Web App-példányon a legközelebbi georeplikált adattárból.

A háromrészes sorozat első oktatóanyagának tartalma:

  • Egy georeplikált Azure Container Registry létrehozása
  • Alkalmazás forráskódjának klónozása a GitHubról
  • Docker-tároló rendszerképének összeállítása alkalmazásforrásból
  • Tároló rendszerképének leküldése a tárolójegyzékbe

A következő oktatóanyagokban egy két Azure-régióban futó webalkalmazás számára helyezi üzembe a tárolót a privát tárolójegyzékből. Ezután frissíti az alkalmazásban lévő programkódot, és egyetlen docker push paranccsal frissíti mindkét webalkalmazás-példányt a tárolójegyzékben.

Előkészületek

Az oktatóanyaghoz az Azure CLI (2.0.31-es vagy újabb verzió) helyi telepítésére lesz szükség. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Ismernie kell a Docker fő fogalmait, például a tárolókat, a tárolórendszerképeket és a Docker parancssori felületének alapszintű parancsait. A tárolókkal kapcsolatos alapfogalmakért tekintse meg a Docker használatának első lépéseivel foglalkozó témakört.

Az oktatóanyag elvégzéséhez a szüksége lesz egy helyi Docker-telepítésre. A Docker a macOS, Windows és Linux rendszerhez biztosít telepítési utasításokat.

Az Azure Cloud Shell nem tartalmazza a jelen oktatóanyag lépéseinek elvégzéséhez szükséges Docker-összetevőket, Ezért ajánlott az Azure CLI és a Docker fejlesztőkörnyezet helyi telepítése.

Tárolóregisztrációs adatbázis létrehozása

Ehhez az oktatóanyaghoz egy Azure-tárolóregisztrációs adatbázisra van szüksége a Prémium szolgáltatási szinten. Új Azure-tárolóregisztrációs adatbázis létrehozásához kövesse az ebben a szakaszban ismertetett lépéseket.

Tipp

Ha korábban létrehozott egy beállításjegyzéket, és frissítenie kell, olvassa el a Szintek módosítása című témakört.

Jelentkezzen be az Azure Portal.

Válassza az Erőforrástárolók>> létrehozása Azure Container Registry lehetőséget.

Tároló-beállításjegyzék létrehozása az Azure Portalon

Konfigurálja az új beállításjegyzéket az alábbi beállításokkal. Az Alapok lapon:

  • Regisztrációs adatbázis neve: Olyan nevet hozzon létre a tárolójegyzékhez, amely globálisan egyedi az Azure-ban, és 5–50 alfanumerikus karakterből áll.
  • Erőforráscsoport: Új létrehozása>myResourceGroup
  • Hely: West US
  • Termékváltozat: Premium (georeplikációhoz szükséges)

Válassza a Felülvizsgálat + létrehozás , majd a Létrehozás lehetőséget a beállításpéldány létrehozásához.

Tárolóregisztrációs adatbázis konfigurálása a Azure Portal

Az oktatóanyag hátralévő részében a kiválasztott tárolóregisztrációs adatbázis nevének helyőrzőjeként használjuk<acrName>.

Tipp

Mivel az Azure tárolójegyzékek általában több tárológazdagép által használt hosszútávú erőforrások, ajánlott a saját erőforráscsoportjában létrehozni a tárolójegyzéket. A georeplikált tárolójegyzékek és webhookok konfigurálásakor a további erőforrások ugyanabba az erőforráscsoportba kerülnek.

Aktív georeplikáció konfigurálása

Most, hogy egy prémium szintű tárolójegyzékkel rendelkezik, konfigurálhatja a georeplikációt. A webalkalmazás – amelyet a következő oktatóanyagban konfigurál a két régióban való futtatáshoz – ezután le tudja kérni a tároló rendszerképeit a legközelebbi tárolójegyzékből.

Lépjen az új tárolóregisztrációs adatbázisra a Azure Portal, és válassza a Replikációk lehetőséget a Szolgáltatások területen:

Replikációk az Azure Portal tárolójegyzékeinek felhasználói felületén

Megjelenik egy térkép a georeplikációhoz elérhető Azure-régiókat jelző zöld hatszögekkel:

Régiótérkép az Azure Portalon

Replikálja a tárolójegyzékét az USA keleti régiójába a zöld hatszög kiválasztásával, majd válassza a Replikáció létrehozása területen lévő Létrehozás lehetőséget:

Replikáció létrehozásának felhasználói felülete az Azure Portalon

A replikáció befejezése után a portál mindkét régió esetén a Kész állapotot jeleníti meg. A Frissítés gombbal frissítse a replikáció állapotát. Körülbelül egy percbe telhet a replikák létrehozása és szinkronizálása.

Replikációs állapot felhasználói felülete az Azure Portalon

Rendszergazdai fiók engedélyezése

Az ezt követő oktatóanyagokban egy tárolórendszerképet telepít a beállításjegyzékből közvetlenül a Web App for Containers szolgáltatásba. A funkció engedélyezéséhez engedélyeznie kell a beállításjegyzék rendszergazdai fiókját is.

Lépjen az új tárolóregisztrációs adatbázisra a Azure Portal, és válassza a Hozzáférési kulcsok lehetőséget a Beállítások területen. A Rendszergazdai felhasználó elem alatt válassza az Engedélyezés lehetőséget.

Rendszergazdai fiók engedélyezése a Azure Portal

Bejelentkezés a tárolóregisztrációs adatbázisba

Most, hogy konfigurálta a georeplikációt, állítson össze egy tárolórendszerképet, és küldje le azt a tárolójegyzékbe. A rendszerképek elküldéséhez először be kell jelentkeznie a beállításjegyzékbe.

Az az acr login paranccsal hitelesítheti és gyorsítótárazhatja a tárolójegyzék hitelesítő adatait. Cserélje le a <acrName> elemet a korábban létrehozott tárolójegyzék nevére.

az acr login --name <acrName>

A parancs a Login Succeeded értéket adja vissza, ha befejeződött.

Az alkalmazáskód letöltése

Az oktatóanyagban foglalt példa egy, az ASP.NET Core használatával létrehozott kis webalkalmazást tartalmaz. Az alkalmazás egy HTML-oldalt működtet, amely azt a régiót jeleníti meg, amelyről az Azure Container Registry a rendszerképet üzembe helyezte.

Az oktatóanyag alkalmazása böngészőben megjelenítve

Töltse le a mintát a Git használatával egy helyi könyvtárba, és a cd használatával lépjen be a könyvtárba:

git clone https://github.com/Azure-Samples/acr-helloworld.git
cd acr-helloworld

Ha a git nincs telepítve, közvetlenül a GitHubról töltheti le a ZIP-archívumot.

A Dockerfile frissítése

A mintában szereplő Dockerfile bemutatja a tároló összeállításának menetét. Egy hivatalos ASP.NET Core futtatókörnyezeti rendszerképből indul ki, átmásolja az alkalmazásfájlokat a tárolóba, telepíti a függőségeket, lefordítja a kimenetet a hivatalos .NET Core SDK-lemezkép használatával, és végül létrehoz egy optimalizált aspnetcore-lemezképet.

A Dockerfile a klónozott forrásban a következő helyen található: ./AcrHelloworld/Dockerfile.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
# Update <acrName> with the name of your registry
# Example: uniqueregistryname.azurecr.io
ENV DOCKER_REGISTRY <acrName>.azurecr.io
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /src
COPY *.sln ./
COPY AcrHelloworld/AcrHelloworld.csproj AcrHelloworld/
RUN dotnet restore
COPY . .
WORKDIR /src/AcrHelloworld
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS production
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "AcrHelloworld.dll"]

Az acr-helloworld rendszerképben lévő alkalmazás megpróbálja meghatározni azt a régiót, amelyből a tárolója üzembe lett helyezve. Ehhez lekérdezi a DNS-ből a tárolójegyzék bejelentkezési kiszolgálójával kapcsolatos adatokat. A tárolójegyzék bejelentkezési kiszolgálójának teljes tartománynevét a Dockerfile DOCKER_REGISTRY környezeti változójában kell megadnia.

Először kérje le a tárolójegyzék bejelentkezési kiszolgálóját az az acr show paranccsal. Cserélje le az <acrName> elemet az előző lépésekben létrehozott tárolójegyzék nevére.

az acr show --name <acrName> --query "{acrLoginServer:loginServer}" --output table

Kimenet:

AcrLoginServer
-----------------------------
uniqueregistryname.azurecr.io

Ezután frissítse az ENV DOCKER_REGISTRY sort a tárolójegyzék bejelentkezési kiszolgálójának teljes tartománynevével. Ebben a példában a példa tárolójegyzékének neve (uniqueregistryname) látható:

ENV DOCKER_REGISTRY uniqueregistryname.azurecr.io

Tárolórendszerkép összeállítása

Most, hogy a frissítette a Dockerfile-t a tárolójegyzék bejelentkezési kiszolgálójának teljes tartománynevével, a docker build paranccsal hozhatja létre a tárolórendszerképet. Futtassa a következő parancsot a rendszerkép összeállításához és a privát tárolójegyzék URL-címével való felcímkézésével, majd ismét cserélje le az <acrName> elemet a tárolójegyzék nevére:

docker build . -f ./AcrHelloworld/Dockerfile -t <acrName>.azurecr.io/acr-helloworld:v1

Több kimeneti sor jelenik meg a Docker-rendszerkép összeállításakor (itt csonkolva láthatók):

Sending build context to Docker daemon  523.8kB
Step 1/18 : FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
2.2: Pulling from mcr.microsoft.com/dotnet/core/aspnet
3e17c6eae66c: Pulling fs layer

[...]

Step 18/18 : ENTRYPOINT dotnet AcrHelloworld.dll
 ---> Running in 6906d98c47a1
 ---> c9ca1763cfb1
Removing intermediate container 6906d98c47a1
Successfully built c9ca1763cfb1
Successfully tagged uniqueregistryname.azurecr.io/acr-helloworld:v1

A docker images használatával tekintse meg a felépített és címkézett rendszerképet:

$ docker images
REPOSITORY                                      TAG    IMAGE ID        CREATED               SIZE
uniqueregistryname.azurecr.io/acr-helloworld    v1     01ac48d5c8cf    About a minute ago    284MB
[...]

Rendszerkép leküldése az Azure Container Registrybe

Ezután a docker push paranccsal küldje le az acr-helloworld-rendszerképet a tárolójegyzékbe. Cserélje le a <acrName> elemet a tárolójegyzék nevére.

docker push <acrName>.azurecr.io/acr-helloworld:v1

Mivel georeplikációhoz konfigurálta a tárolójegyzéket, a rendszerkép ezzel az egy docker push paranccsal automatikusan replikálva lesz az USA nyugati régióján és az USA keleti régióján is.

$ docker push uniqueregistryname.azurecr.io/acr-helloworld:v1
The push refers to a repository [uniqueregistryname.azurecr.io/acr-helloworld]
cd54739c444b: Pushed
d6803756744a: Pushed
b7b1f3a15779: Pushed
a89567dff12d: Pushed
59c7b561ff56: Pushed
9a2f9413d9e4: Pushed
a75caa09eb1f: Pushed
v1: digest: sha256:0799014f91384bda5b87591170b1242bcd719f07a03d1f9a1ddbae72b3543970 size: 1792

Következő lépések

Ebben az oktatóanyagban létrehozott egy privát, georeplikált tárolójegyzéket, felépített egy tárolórendszerképet, majd ezt a rendszerképet leküldte a tárolójegyzékbe.

Folytassa a következő oktatóanyaggal, amely üzembe helyezi a tárolót több Web Apps for Containers-példányon, georeplikációt használva a rendszerképek helyi kiszolgálásához.