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.
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.
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:
Peta ditampilkan memperlihatkan segi enam hijau yang mewakili wilayah Azure yang tersedia untuk replikasi geografis:
Replikasi registri Anda ke wilayah AS Timur dengan memilih segi enam hijaunya, lalu pilih Buat pada Buat replikasi:
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.
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.
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.
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.