Öğretici: Coğrafi çoğaltmalı Azure Container Registry’yi hazırlama
Azure Container Registry, ağı dağıtımlarınıza yakın tutabileceğiniz, Azure’da dağıtılan özel bir Docker kayıt defteridir. Bu üç öğretici makalesinde, Linux kapsayıcısında çalıştırılan bir ASP.NET Core web uygulamasını iki Kapsayıcılar için Web Apps örneğine dağıtmak için coğrafi çoğaltmanın nasıl kullanılacağını öğreneceksiniz. Azure’ın görüntüyü otomatik olarak en yakın coğrafi çoğaltmalı depodan her bir Web Uygulaması örneğine nasıl dağıttığını göreceksiniz.
Bu öğreticide, üç bölümden oluşan bir serinin birinci bölümü:
- Coğrafi çoğaltmalı Azure Container Registry oluşturma
- Uygulama kaynak kodunu GitHub’dan kopyalama
- Uygulama kaynağından bir Docker kapsayıcısı görüntüsü oluşturma
- Kapsayıcı görüntüsünü kayıt defterinize gönderme
Sonraki öğreticilerde, kapsayıcıyı özel kayıt defterinizden iki Azure bölgesinde çalıştırılan bir web uygulamasına dağıtacaksınız. Daha sonra uygulamadaki kodu güncelleştirecek ve her iki Web Uygulaması örneğini kayıt defterinize yönelik tek bir docker push
ile güncelleştireceksiniz.
Başlamadan önce
Bu öğretici, Azure CLI’nın (sürüm 2.0.31 veya sonraki bir sürüm) yerel bir yüklemesini gerektirir. Sürümü bulmak için az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
Kapsayıcılar, kapsayıcı görüntüleri ve temel Docker CLI komutları gibi temel Docker kavramları hakkında bilgi sahibi olmanız gerekir. Kapsayıcı temelleri hakkında bilgi için bkz. Docker ile çalışmaya başlama.
Bu öğreticiyi tamamlamak için yerel bir Docker yüklemesi gerekir. Docker, macOS, Windows ve Linux sistemleri için yükleme yönergeleri sağlar.
Azure Cloud Shell, bu öğreticideki her adımı tamamlamak için gerekli olan Docker bileşenlerini içermez. Bu nedenle, Azure CLI ve Docker geliştirme ortamının yerel bir yüklemesini öneririz.
Kapsayıcı kayıt defteri oluşturma
Bu öğretici için Premium hizmet katmanında bir Azure kapsayıcı kayıt defterine ihtiyacınız vardır. Yeni bir Azure kapsayıcı kayıt defteri oluşturmak için bu bölümdeki adımları izleyin.
İpucu
Daha önce bir kayıt defteri oluşturduysanız ve yükseltmeniz gerekiyorsa bkz . Katmanları değiştirme.
Azure Portal’ında oturum açın.
Kaynak oluştur>Kapsayıcılar>Azure Container Registry seçeneklerini belirleyin.
Yeni kayıt defterinizi aşağıdaki ayarlarla yapılandırın. Temel Bilgiler sekmesinde:
- Kayıt defteri adı: Azure’da genel olarak benzersiz olan ve 5-50 alfasayısal karakterden oluşan bir kayıt defteri adı oluşturun
- Kaynak Grubu: Yeni oluştur>
myResourceGroup
- Konum::
West US
- SKU:
Premium
(coğrafi çoğaltma için gereklidir)
Kayıt defteri örneğini oluşturmak için Gözden geçir + oluştur'u ve ardından Oluştur'u seçin.
Bu öğreticinin geri kalan aşamalarında, seçtiğiniz kapsayıcı Kayıt defteri adı için yer tutucu olarak <acrName>
kullanacağız.
İpucu
Azure Container Registry genellikle birden fazla kapsayıcı konağında kullanılan uzun ömürlü kaynaklar olduğundan, kayıt defterinizi kendi kaynak grubunda oluşturmanızı öneririz. Coğrafi çoğaltmalı kayıt defterleri ve web kancaları yapılandırılırken bu ek kaynaklar aynı kaynak grubuna yerleştirilir.
Coğrafi çoğaltmayı yapılandırma
Premium kayıt defterine sahip olduğunuza göre coğrafi çoğaltmayı yapılandırabilirsiniz. Sonraki öğreticide iki bölgede çalıştırılacak şekilde yapılandıracağınız web uygulamanız, en yakın kayıt defterinden kapsayıcı görüntülerini çeker.
Azure portalında yeni kapsayıcı kayıt defterinize gidin ve Hizmetler'in altında Çoğaltmalar'ı seçin:
Coğrafi çoğaltma için uygun Azure bölgelerinin yeşil altıgenlerle temsil edildiği bir harita görüntülenir:
Yeşil altıgeni seçip ardından Çoğaltma oluştur bölümünden Oluştur’u seçerek Doğu ABD bölgesine kayıt defterinizi çoğaltın:
Çoğaltma tamamlandığında portal her iki bölge için de Hazır durumunu gösterir. Çoğaltma durumunu yenilemek için Yenile düğmesini kullanın. Çoğaltmaların oluşturulması ve eşitlenmesi bir dakika kadar sürebilir.
Yönetici hesabını etkinleştirme
Sonraki öğreticilerde, kayıt defterinden kapsayıcı görüntüsünü doğrudan Kapsayıcılar için Web App'e dağıtacaksınız. Bu özelliği etkinleştirmek için kayıt defterinin yönetici hesabını da etkinleştirmeniz gerekir.
Azure portalında yeni kapsayıcı kayıt defterinize gidin ve Ayarlar'ın altında Erişim anahtarları'nı seçin. Yönetici kullanıcı altında Etkinleştir’i seçin.
Kapsayıcı kayıt defterinde oturum açma
Coğrafi çoğaltmayı yapılandırdığınıza göre, bir kapsayıcı görüntüsü oluşturun ve kayıt defterinize gönderin. Görüntüleri kayıt defterinize göndermeden önce kayıt defterinizde oturum açmanız gerekir.
Kimlik doğrulaması yapmak ve kayıt defterinize yönelik kimlik bilgilerini önbelleğe almak için az acr login komutunu kullanın. <acrName>
değerini, önceden oluşturduğunuz kayıt defterinin adıyla değiştirin.
az acr login --name <acrName>
Bu komut tamamlandığında Login Succeeded
iletisini döndürür.
Uygulama kodunu alma
Bu öğreticideki örnek, ASP.NET Core ile oluşturulmuş küçük bir web uygulamasını içerir. Uygulama, Azure Container Registry tarafından görüntünün dağıtıldığı kaynak bölgeyi görüntüleyen bir HTML sayfası görevi görür.
Örneği yerel bir dizine ve cd
öğesini şu dizine indirmek için git kullanın:
git clone https://github.com/Azure-Samples/acr-helloworld.git
cd acr-helloworld
git
yüklenmemişse, doğrudan GitHub’dan ZIP arşivini indirebilirsiniz.
Dockerfile’ı güncelleştirme
Örnekte bulunan Dockerfile, kapsayıcının nasıl yapılandırıldığını gösterir. Resmi bir ASP.NET Core çalışma zamanı görüntüsünden başlar, uygulama dosyalarını kapsayıcıya kopyalar, bağımlılıkları yükler, resmi .NET Core SDK görüntüsünü kullanarak çıkışı derler ve son olarak iyileştirilmiş bir aspnetcore görüntüsü oluşturur.
Dockerfile, kopyalanan kaynaktaki ./AcrHelloworld/Dockerfile
dizininde bulunur.
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"]
acr-helloworld görüntüsündeki uygulama, kayıt defterinin oturum açma sunucusuyla ilgili bilgiler için DNS’yi sorgulayarak kapsayıcısının dağıtıldığı kaynak bölgeyi belirlemeye çalışır. Dockerfile’daki DOCKER_REGISTRY
ortam değişkeninde kayıt defterinizin oturum açma sunucusunun tam etki alanı adını (FQDN) belirtmeniz gerekir.
İlk olarak, az acr show
komutuyla kayıt defterinin oturum açma sunucusunu alın. <acrName>
değerini, önceki adımlarda oluşturduğunuz kayıt defterinin adıyla değiştirin.
az acr show --name <acrName> --query "{acrLoginServer:loginServer}" --output table
Çıktı:
AcrLoginServer
-----------------------------
uniqueregistryname.azurecr.io
Sonra, ENV DOCKER_REGISTRY
satırını kayıt defterinizin oturum açma sunucusu FQDN’si ile güncelleştirin. Bu örnek, uniqueregistryname olan örnek kayıt defteri adını yansıtır:
ENV DOCKER_REGISTRY uniqueregistryname.azurecr.io
Kapsayıcı görüntüsü oluşturma
Dockerfile’ı kayıt defteri oturum açma sunucunuzun FQDN’si ile güncelleştirdiğinize göre, kapsayıcı görüntüsünü oluşturmak için docker build
kullanabilirsiniz. Tekrar <acrName>
değerini, kayıt defterinizin adıyla değiştirerek görüntüyü oluşturmak ve özel kayıt defterinizin URL’si ile etiketlemek için aşağıdaki komutu çalıştırın:
docker build . -f ./AcrHelloworld/Dockerfile -t <acrName>.azurecr.io/acr-helloworld:v1
Docker görüntüsü oluşturulurken birçok çıktı satırı görüntülenir (burada kesilmiş şekilde gösterilmektedir):
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
Derlenen ve etiketlenen görüntüyü görmek için docker images
kullanın:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
uniqueregistryname.azurecr.io/acr-helloworld v1 01ac48d5c8cf About a minute ago 284MB
[...]
Azure Container Registry’ye görüntü gönderme
Daha sonra, kayıt defterinize acr-helloworld görüntüsünü göndermek için docker push
komutunu kullanın. <acrName>
değerini kayıt defterinizin adıyla değiştirin.
docker push <acrName>.azurecr.io/acr-helloworld:v1
Coğrafi çoğaltma için kayıt defterinizi yapılandırdığınızdan, bu tek docker push
komutuyla görüntünüz hem Batı ABD hem de Doğu ABD bölgesine otomatik olarak çoğaltılır.
$ 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
Sonraki adımlar
Bu öğreticide, özel, coğrafi çoğaltmalı bir kayıt defteri oluşturdunuz, bir kapsayıcı görüntüsü oluşturdunuz ve sonra bu görüntüyü kayıt defterinize gönderdiniz.
Görüntülere yerel olarak hizmet vermek için coğrafi çoğaltma kullanarak kapsayıcınızı birden fazla Kapsayıcılar için Web Apps’e dağıtmak için sonraki öğreticiye ilerleyin.