Tutorial: Menyiapkan registri kontainer Azure yang direplikasi secara geografis

Registri kontainer Azure adalah registri Docker pribadi yang disebarkan di Azure sehingga Anda dapat menjaga jaringan tetap dekat dengan penyebaran Anda. Dalam kumpulan tiga artikel tutorial ini, Anda mempelajari cara menggunakan replikasi geografis untuk menerapkan aplikasi web ASP.NET Core yang berjalan dalam wadah Linux ke dua instans Aplikasi Web untuk Containers. Anda akan melihat bagaimana Azure secara otomatis menyebarkan gambar ke setiap instans Aplikasi Web dari repositori yang direplikasi secara geografis yang terdekat.

Dalam tutorial ini, bagian satu dalam seri tiga bagian:

  • Membuat registri kontainer Azure yang direplikasi secara geografis
  • Mengkloning kode sumber aplikasi dari GitHub
  • Menyusun gambar kontainer dari sumber aplikasi
  • Mendorong gambar ke registri Anda

Dalam tutorial berikutnya, Anda menggunakan kontainer dari registri pribadi Anda ke aplikasi web yang berjalan di dua wilayah Azure. Anda kemudian memperbarui kode dalam aplikasi, dan memperbarui kedua instans Aplikasi Web dengan docker push tunggal ke registri Anda.

Sebelum Anda mulai

Tutorial ini memerlukan instalasi lokal Azure CLI (versi 2.0.31 atau yang lebih baru). Jalankan az --version untuk menemukan versinya. Jika Anda perlu melakukan penginstalan atau peningkatan, lihat Memasang Azure CLI.

Anda harus terbiasa dengan konsep Docker inti seperti kontainer, gambar kontainer, dan perintah Docker CLI dasar. Untuk informasi awal tentang dasar-dasar kontainer, lihat Mulai dengan Docker.

Untuk menyelesaikan tutorial ini, Anda memerlukan instalasi Docker lokal. Docker menyediakan instruksi instalasi untuk sistem macOS, Windows, dan Linux.

Azure Cloud Shell tidak menyertakan komponen Docker yang diperlukan untuk menyelesaikan setiap langkah dalam tutorial ini. Oleh karena itu, kami merekomendasikan instalasi lokal lingkungan pengembangan Azure CLI dan Docker.

Membuat registri kontainer

Untuk tutorial ini, Anda memerlukan registri kontainer Azure di tingkat layanan Premium. Untuk membuat registri kontainer Azure baru, ikuti langkah-langkah di bagian ini.

Tip

Jika sebelumnya Anda membuat registri dan perlu memutakhirkan, lihat Mengubah tingkatan.

Masuk ke portal Microsoft Azure.

Pilih Buat sumber daya>Kontainer>Azure Container Registry.

Membuat registri kontainer di portal Microsoft Azure

Konfigurasikan registri baru Anda dengan pengaturan berikut. Di tab Dasar:

  • Nama registri: Membuat nama registri yang unik secara global di Azure, dan berisi 5-50 karakter alfanumerik
  • Grup Sumber Daya: Membuat>myResourceGroup baru
  • Lokasi: West US
  • SKU: Premium (diperlukan untuk replikasi geografis)

Pilih Tinjau + buat lalu Buat untuk membuat instans registri.

Mengonfigurasi registri kontainer di portal Microsoft Azure

Sepanjang sisa tutorial ini, kami menggunakan <acrName> sebagai tempat penampung untuk nama Registri kontainer yang Anda pilih.

Tip

Karena registri kontainer Azure biasanya merupakan sumber daya berumur panjang yang digunakan di beberapa host kontainer, kami sarankan Anda membuat registri dalam grup sumber dayanya sendiri. Saat Anda mengonfigurasi registri dan webhook yang direplikasi geografis, sumber daya tambahan ini ditempatkan dalam grup sumber daya yang sama.

Mengonfigurasi replikasi geografis

Sekarang setelah Anda memiliki registri Premium, Anda dapat mengkonfigurasi replikasi geografis. Aplikasi web Anda, yang Anda konfigurasikan dalam tutorial berikutnya untuk dijalankan di dua wilayah, kemudian dapat menarik gambar kontainernya dari registri terdekat.

Navigasi ke registri kontainer baru Anda di portal Microsoft Azure dan pilih Replikasi pada Layanan:

Replikasi di UI registri kontainer portal Microsoft Azure

Peta ditampilkan memperlihatkan segi enam hijau yang mewakili wilayah Azure yang tersedia untuk replikasi geografis:

Peta kawasan di portal Azure

Replikasi registri Anda ke wilayah AS Timur dengan memilih segi enam hijaunya, lalu pilih Buat pada Buat replikasi:

Membuat UI replikasi di portal Microsoft Azure

Ketika replikasi selesai, portal mencerminkan Siap untuk kedua wilayah. Gunakan tombol Refresh untuk merefresh status replikasi; ini dapat memakan waktu satu menit atau lebih untuk membuat dan menyinkronkan replika.

UI status replikasi di portal Microsoft Azure

Aktifkan akun admin

Dalam tutorial berikutnya, Anda menggunakan gambar kontainer dari registri langsung ke Aplikasi Web untuk Kontainer. Untuk mengaktifkan kapabilitas ini, Anda juga harus mengaktifkan akun admin registri.

Navigasi ke registri kontainer baru Anda di portal Microsoft Azure dan pilih kunci Akses di Pengaturan. Di Pengguna admin, pilih Aktifkan.

Mengaktifkan akun admin di portal Microsoft Azure

Login registri kontainer

Sekarang setelah Anda mengonfigurasi replikasi geografis, buat gambar kontainer dan dorong ke registri Anda. Anda harus terlebih dahulu masuk ke registri Anda sebelum mendorong gambar ke dalamnya.

Gunakan perintah az acr login untuk mengautentikasi dan menyimpan kredensial untuk registri Anda. Ganti <acrName> dengan nama registri yang Anda buat sebelumnya.

az acr login --name <acrName>

Perintah akan mengembalikan Login Succeeded setelah selesai.

Mendapatkan kode aplikasi

Sampel dalam tutorial ini mencakup aplikasi web kecil yang dibangun dengan ASP.NET Core. Aplikasi ini melayani halaman HTML yang menampilkan wilayah tempat gambar digunakan oleh Azure Container Registry.

Aplikasi tutorial ditampilkan di browser

Gunakan git untuk mengunduh sampel ke direktori lokal, dan cd ke direktori:

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

Jika Anda belum menginstal git, Anda dapat mengunduh arsip ZIP langsung dari GitHub.

Perbarui Dockerfile

Dockerfile dalam aplikasi contoh menunjukkan bagaimana kontainer dibuat. Ini dimulai dari gambar runtime core ASP.NET resmi, menyalin file aplikasi ke dalam kontainer, menginstal dependensi, mengompilasi output menggunakan gambar .NET Core SDK resmi, dan akhirnya, membangun gambar aspnetcore yang dioptimalkan.

Dockerfile terletak di ./AcrHelloworld/Dockerfile pada sumber kloning.

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"]

Aplikasi dalam gambar acr-helloworld mencoba menentukan wilayah tempat kontainernya disebarkan dengan meminta informasi DNS tentang server login registri. Anda harus menentukan nama domain server login registri Anda yang sepenuhnya memenuhi syarat (FQDN) dalam variabel lingkungan DOCKER_REGISTRY di Dockerfile.

Pertama, dapatkan server login registri dengan perintah az acr show. Ganti <acrName> dengan nama registri yang Anda buat sebelumnya.

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

Output:

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

Selanjutnya, perbarui baris ENV DOCKER_REGISTRY dengan FQDN server login registri Anda. Contoh ini menggambarkan contoh nama registri, uniqueregistryname:

ENV DOCKER_REGISTRY uniqueregistryname.azurecr.io

Menyusun gambar kontainer

Sekarang setelah Anda memperbarui Dockerfile dengan FQDN server login registri Anda, Anda dapat menggunakan docker build untuk membuat gambar kontainer. Jalankan perintah berikut untuk menyusun gambar dan menandainya dengan URL registri pribadi Anda, sekali lagi mengganti <acrName> dengan nama registri Anda:

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

Beberapa baris output ditampilkan saat gambar Docker dibangun (ditunjukkan di sini terpotong):

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

Gunakan docker images untuk melihat gambar bawaan dan yang ditandai:

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

Dorong gambar ke Azure Container Registry

Selanjutnya, gunakan perintah docker push untuk mendorong gambar acr-helloworld ke registri Anda. Ganti <acrName> dengan nama registri Anda.

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

Karena Anda telah mengonfigurasi registri untuk replikasi geografis, gambar Anda secara otomatis direplikasi ke wilayah AS Barat dan AS Timur dengan perintah docker push tunggal ini.

$ 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

Langkah berikutnya

Dalam tutorial ini, Anda membuat registri kontainer pribadi yang direplikasi secarfa geografis, membangun gambar kontainer, dan kemudian mendorong gambar itu ke registri Anda.

Lanjutkan ke tutorial berikutnya untuk menyebarkan kontainer Anda ke beberapa Aplikasi Web untuk instans Kontainer, menggunakan replikasi geografis untuk melayani gambar secara lokal.