Kurz: Příprava geograficky replikovaného registru kontejnerů Azure
Registr kontejnerů Azure je privátní registr Dockeru nasazený v Azure, který můžete uchovávat v síti blízké vašim nasazením. V této sérií tří kurzů zjistíte, jak s využitím geografické replikace nasadit webovou aplikaci ASP.NET Core spuštěnou v kontejneru Linuxu do dvou instancí služby Web App for Containers. Uvidíte, jak Azure automaticky nasadí image do obou instancí webové aplikace z nejbližšího geograficky replikovaného úložiště.
V tomto kurzu, který je první částí třídílné série, se naučíte:
- Vytvoření geograficky replikovaného registru kontejnerů Azure
- Klonování zdrojového kódu aplikace z GitHubu
- Sestavení image kontejneru Dockeru ze zdroje aplikace
- Nasdílení image kontejneru do registru
V dalších kurzech nasadíte kontejner ze svého privátního registru do webové aplikace spuštěné ve dvou oblastech Azure. Pak aktualizujete kód aplikace a pomocí jediného příkazu docker push
pro váš registr aktualizujete obě instance webové aplikace.
Než začnete
Tento kurz vyžaduje místní instalaci Azure CLI (verze 2.0.31 nebo novější). Verzi zjistíte spuštěním příkazu az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Měli byste znát klíčové koncepty Dockeru, jako jsou kontejnery, image kontejnerů a základní příkazy Docker CLI. Základní informace o kontejnerech najdete v článku Get started with Docker (Začínáme s Dockerem).
K dokončení tohoto kurzu potřebujete místní instalaci Dockeru. Docker poskytuje pokyny k instalaci pro systémy macOS, Windows a Linux.
Azure Cloud Shell neobsahuje součásti Dockeru nutné pro dokončení všech kroků v tomto kurzu. Proto doporučujeme místní instalaci Azure CLI a vývojového prostředí pro Docker.
Vytvoření registru kontejneru
Pro účely tohoto kurzu potřebujete registr kontejneru Azure ve vrstvě služby Premium. Pokud chcete vytvořit nový registr kontejnerů Azure, postupujte podle kroků v této části.
Tip
Pokud jste dříve vytvořili registr a potřebujete upgradovat, přečtěte si téma Změny vrstev.
Přihlaste se k portálu Azure.
Vyberte Vytvořit prostředek>Kontejnery>Azure Container Registry.
Nakonfigurujte nový registr s následujícím nastavením. Na kartě Základy :
- Název registru: Vytvořte název registru, který je globálně jedinečný v rámci Azure a obsahuje 5 až 50 alfanumerických znaků.
- Skupina prostředků:Vytvořit novou>
myResourceGroup
- Umístění:
West US
- Skladová položka:
Premium
(vyžadováno pro geografickou replikaci)
Vyberte Zkontrolovat a vytvořit a pak vytvořit instanci registru.
V celé zbývající části tohoto kurzu používáme <acrName>
jako zástupný symbol pro Název registru kontejnerů, který jste zvolili.
Tip
Vzhledem k tomu, že registry kontejnerů Azure jsou obvykle dlouhodobé prostředky, které se používají na více hostitelích kontejnerů, doporučujeme vytvořit registr ve vlastní skupině prostředků. Když budete konfigurovat geograficky replikované registry a webhooky, umístí se tyto další prostředky do stejné skupiny prostředků.
Konfigurace geografické replikace
Když teď máte registr úrovně Premium, můžete nakonfigurovat geografickou replikaci. Vaše webová aplikace, kterou v dalším kurzu nakonfigurujete pro spouštění ve dvou oblastech, si pak bude moci stáhnout image kontejnerů z nejbližšího registru.
Na webu Azure Portal přejděte do nového registru kontejneru a v části Služby vyberte Replikace:
Zobrazí se mapa se zelenými šestiúhelníky, které představují oblasti Azure dostupné pro geografickou replikaci:
Replikujte svůj registr do oblasti USA – východ tak, že vyberete příslušný zelený šestiúhelník a pak v části Vytvořit replikaci vyberete Vytvořit:
Po dokončení replikace se na portálu u obou oblastí zobrazí stav Připraveno. Pomocí tlačítka Aktualizovat aktualizujte stav replikace. Vytvoření a synchronizace replik může trvat několik minut.
Povolení účtu správce
V dalších kurzech nasadíte image kontejneru z registru přímo do služby Web App for Containers. Pokud chcete tuto funkci povolit, musíte také povolit účet správce registru.
Přejděte do nového registru kontejneru na webu Azure Portal a v části Nastavení vyberte Přístupové klíče. V části Uživatel s rolí správce vyberte Povolit.
Přihlášení k registru kontejneru
Když teď máte nakonfigurovanou geografickou replikaci, sestavte image kontejneru a nasdílejte ji do svého registru. Před nasdílením imagí se musíte nejprve přihlásit ke svému registru.
Pomocí příkazu az acr login se ověřte a uložte do mezipaměti přihlašovací údaje pro váš registr. <acrName>
nahraďte názvem registru, který jste vytvořili dříve.
az acr login --name <acrName>
Příkaz po dokončení vrátí zprávu Login Succeeded
(Přihlášení bylo úspěšné).
Získání kódu aplikace
Ukázka v tomto kurzu zahrnuje malou webovou aplikaci vytvořenou v ASP.NET Core. Aplikace slouží jako stránka HTML zobrazující oblast, ze které služba Azure Container Registry nasadila image.
Pomocí Gitu stáhněte ukázku do místního adresáře a pomocí příkazu cd
do tohoto adresáře přejděte:
git clone https://github.com/Azure-Samples/acr-helloworld.git
cd acr-helloworld
Pokud nemáte nainstalovaný git
, můžete si stáhnout archiv ZIP přímo z GitHubu.
Aktualizace souboru Dockerfile
Soubor Dockerfile, který je součástí ukázky, ukazuje postup sestavení kontejneru. Začíná oficiální imagí modulu runtime ASP.NET Core, zkopíruje soubory aplikace do kontejneru, nainstaluje závislosti, zkompiluje výstup pomocí oficiální image sady .NET Core SDK a nakonec sestaví optimalizovanou image aspnetcore.
Soubor Dockerfile se v naklonovaném zdroji nachází v umístění ./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"]
Aplikace v imagi acr-helloworld se pokouší určit oblast, ze které se nasadil její kontejner, dotazováním serveru DNS na informace o přihlašovacím serveru registru. Plně kvalifikovaný název domény přihlašovacího serveru vašeho registru musíte zadat do proměnné prostředí DOCKER_REGISTRY
v souboru Dockerfile.
Nejprve získejte přihlašovací server registru pomocí příkazu az acr show
. Nahraďte <acrName>
názvem registru, který jste vytvořili v předchozích krocích.
az acr show --name <acrName> --query "{acrLoginServer:loginServer}" --output table
Výstup:
AcrLoginServer
-----------------------------
uniqueregistryname.azurecr.io
Pak aktualizujte řádek ENV DOCKER_REGISTRY
s použitím plně kvalifikovaného názvu domény přihlašovacího serveru vašeho registru. Tento příklad odráží název registru, uniqueregistryname:
ENV DOCKER_REGISTRY uniqueregistryname.azurecr.io
Sestavení image kontejneru
Když jste aktualizovali v souboru Dockerfile plně kvalifikovaný název domény přihlašovacího serveru vašeho registru, můžete teď pomocí příkazu docker build
vytvořit image kontejneru. Spuštěním následujícího příkazu, ve kterém opět nahradíte <acrName>
názvem vašeho registru, sestavte image a označte ji adresou URL vašeho privátního registru:
docker build . -f ./AcrHelloworld/Dockerfile -t <acrName>.azurecr.io/acr-helloworld:v1
Během sestavování image Dockeru se zobrazí několik řádků výstupu (tady je zkrácený):
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
Pomocí docker images
zobrazíte sestavené a označené image:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
uniqueregistryname.azurecr.io/acr-helloworld v1 01ac48d5c8cf About a minute ago 284MB
[...]
Nahrání image do služby Azure Container Registry
Potom pomocí příkazu docker push
nasdílejte image acr-helloworld do svého registru. <acrName>
nahraďte názvem vašeho registru.
docker push <acrName>.azurecr.io/acr-helloworld:v1
Vzhledem k tomu, že jste pro registr nakonfigurovali geografickou replikaci, vaše image se pomocí tohoto jediného příkazu docker push
automaticky replikuje do oblasti USA – západ i USA – východ.
$ 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
Další kroky
V tomto kurzu jste vytvořili privátní a geograficky replikovaný registr kontejnerů, sestavili jste image kontejneru a pak jste image nasdíleli do svého registru.
Přejděte k dalšímu kurzu, kde nasadíte kontejner do více instancí služby Web App for Containers s využitím geografické replikace k místní obsluze imagí.