البرنامج التعليمي: إعداد سجل حاوية Azure مكرر جغرافياً

سجل حاوية Azure هو سجل Docker خاص تم نشره في Azure بحيث يمكنك إبقاء الشبكة قريبة من عمليات النشر الخاصة بك. في هذه المجموعة المكونة من ثلاث مقالات تعليمية، ستتعلم كيفية استخدام النسخ إلى أماكن متباعدة جغرافياً الجغرافي لنشر تطبيق ويب ASP.NET Core يعمل في حاوية Linux إلى مثيلين من Web Apps for Containers. سترى كيف ينشر Azure الصورة تلقائياً لكل مثيل تطبيق ويب من أقرب مستودع تم تكرير نسخ بياناته إلى أماكن متباعدة جغرافياً.

في هذا البرنامج التعليمي، الجزء الأول في سلسلة من ثلاثة أجزاء:

  • إنشاء سجل حاوية Azure يتم نسخ بياناته إلى أماكن متباعدة جغرافياً
  • نسخ التعليمة البرمجية المصدر للتطبيق من GitHub
  • إنشاء صورة حاوية Docker من مصدر التطبيق
  • دفع صورة الحاوية إلى السجل الخاص بك

في البرامج التعليمية اللاحقة، ستقوم بنشر الحاوية من السجل الخاص بك إلى تطبيق ويب يعمل في منطقتين من مناطق Azure. يمكنك بعد ذلك تحديث التعليمة البرمجية في التطبيق، وتحديث كل من مثيلات Web App باستخدام docker push واحد في السجل الخاص بك.

قبل أن تبدأ

يتطلب هذا البرنامج التعليمي تثبيت Azure CLI محلياً (الإصدار 2.0.31 أو أحدث). قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أوالترقية، فراجع تثبيت Azure CLI.

يجب أن تكون على دراية بمفاهيم Docker الأساسية مثل الحاويات وصور الحاوية وأوامر Docker CLI الأساسية. للحصول على نظرة تمهيدية على أساسيات الحاوية، راجع بدء استخدام Docker.

لإكمال هذا البرنامج التعليمي، تحتاج إلى تثبيت Docker محلي. يوفر Docker إرشادات التثبيت لأنظمة macOSوWindowsوLinux.

لا يتضمن Azure Cloud Shell مكونات Docker المطلوبة لإكمال كل خطوة في هذا البرنامج التعليمي. لذلك، نوصي بالتثبيت المحلي لبيئة تطوير Azure CLI وDocker.

إنشاء سجل حاويات

في هذا البرنامج التعليمي، تحتاج إلى سجل حاوية Azure في طبقة الخدمة Premium. لإنشاء سجل حاوية Azure جديد، اتبع الخطوات الواردة في هذا القسم.

تلميح

إذا كنت قد أنشأت سجلاً مسبقاً وتحتاج إلى الترقية، فراجع تغيير الطبقات.

تسجيل الدخول إلى ⁧⁩مدخل Azure⁧⁩.

حدد Create a resource>Containers>Azure Container Registry.

إنشاء سجل حاوية في مدخل Microsoft Azure

قم بتكوين السجل الجديد الخاص بك مع الإعدادات التالية. في علامة التبويب Basics:

  • اسم السجل: أنشئ اسم سجل فريداً بشكل عام داخل Azure، يحتوي على 5-50 حرفاً أبجدياً رقمياً
  • مجموعة الموارد: إنشاء جديد>myResourceGroup
  • الموقع : West US
  • SKU : Premium (مطلوب لنسخ البيانات إلى أماكن متباعدة جغرافياً)

حدد Review + create ثم Create لإنشاء مثيل السجل.

تكوين سجل حاوية في مدخل Microsoft Azure

خلال بقية هذا البرنامج التعليمي، سنستخدم <acrName> كعنصر نائب للحاوية اسم السجل الذي تختاره.

تلميح

نظراً لأن سجلات حاوية Azure هي عادةً موارد طويلة العمر يتم استخدامها عبر عدة مضيفات حاوية، نوصي بإنشاء السجل الخاص بك في مجموعة الموارد الخاصة به. أثناء تكوين السجلات المكرر نسخها إلى أماكن متباعدة جغرافياً وخطافات الويب، يتم وضع هذه الموارد الإضافية في نفس مجموعة الموارد.

تكوين النسخ إلى أماكن متباعدة جغرافياً

الآن بعد أن أصبح لديك سجل Premium، يمكنك تكوين النسخ إلى أماكن متباعدة جغرافياً الجغرافي. يمكن لتطبيق الويب الخاص بك، الذي قمت بتكوينه في البرنامج التعليمي التالي للتشغيل في منطقتين، سحب صور الحاوية الخاصة به من أقرب سجل.

انتقل إلى سجل الحاوية الجديد في مدخل Microsoft Azure وحدد Replications ضمن Services:

 النسخ إلى أماكن متباعدة جغرافياً في واجهة مستخدم تسجيل حاوية مدخل Microsoft Azure

يتم عرض خريطة توضح الأشكال السداسية الخضراء التي تمثل مناطق Azure المتاحة للنسخ إلى أماكن متباعدة جغرافياً:

خريطة المنطقة في مدخل Microsoft Azure

قم بنسخ السجل الخاص بك إلى منطقة شرق الولايات المتحدة عن طريق تحديد الشكل السداسي الأخضر الخاص به، ثم حدد Create ضمن Create replication:

إنشاء واجهة مستخدم للنسخ في مدخل Microsoft Azure

عند اكتمال النسخ إلى أماكن متباعدة جغرافياً، فإن المدخل يعرض Ready لكلتا المنطقتين. استخدم الزر Refresh لتحديث حالة النسخ إلى أماكن متباعدة جغرافياً؛ يمكن أن يستغرق إنشاء النسخ إلى أماكن متباعدة جغرافياً ومزامنتها دقيقة أو نحو ذلك.

واجهة مستخدم حالة النسخ إلى أماكن متباعدة جغرافياً في مدخل Microsoft Azure

تمكين حساب المسؤول

في البرامج التعليمية اللاحقة، تقوم بنشر صورة حاوية من التسجيل مباشرة إلى تطبيق الويب للحاويات. لتمكين هذه الإمكانية، يجب عليك أيضاً تمكين حساب المسؤول الخاص بالسجل.

انتقل إلى سجل الحاوية الجديد في مدخل Microsoft Azure وحدد Access keys ضمن Settings. ضمن Admin user، حدد Enable.

تمكين حساب المسؤول في مدخل Microsoft Azure

تسجيل الدخول إلى سجل الحاوية

الآن بعد أن قمت بتكوين النسخ إلى أماكن متباعدة جغرافياً الجغرافي، أنشئ صورة حاوية وادفعها إلى السجل الخاص بك. يجب عليك أولاً تسجيل الدخول إلى السجل الخاص بك قبل إرسال الصور إليه.

استخدم الأمر az acr login لمصادقة بيانات اعتماد السجل وتخزينها مؤقتاً. استبدال <acrName> باسم السجل الذي قمت بإنشائه سابقًا.

az acr login --name <acrName>

يقوم الأمر بإرجاع Login Succeeded عند اكتماله.

الحصول على التعليمة البرمجية للتطبيق

تتضمن العينة في هذا البرنامج التعليمي تطبيق ويب صغيراً تم إنشاؤه باستخدام ASP.NET Core. يقدم التطبيق صفحة HTML تعرض المنطقة التي تم نشر الصورة منها بواسطة Azure Container Registry.

يظهر التطبيق التعليمي في المتصفح

استخدم Git لتنزيل النموذج إلى دليل محلي، وcd في الدليل:

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

إذا لم يكن git مثبتاً لديك، فيمكنك تنزيل أرشيف ZIP مباشرة من GitHub.

تحديث Dockerfile

يوضح Dockerfile المتضمن في العينة كيف تم بناء الحاوية. يبدأ من صورة وقت تشغيل ASP.NET Core الرسمية، وينسخ ملفات التطبيق في الحاوية، ويثبت التبعيات، ويجمع المخرجات باستخدام صورة .NET Core SDK الرسمية، وأخيراً، ينشئ صورة aspnetcore محسّنة.

يقع Dockerfile في ./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"]

يحاول التطبيق الموجود في صورة acr-helloworld تحديد المنطقة التي تم نشر حاويتها منها عن طريق الاستعلام عن DNS للحصول على معلومات حول خادم تسجيل الدخول الخاص بالسجل. يجب تحديد اسم المجال المؤهل بالكامل (FQDN) لخادم تسجيل الدخول إلى السجل في متغير البيئة DOCKER_REGISTRY في Dockerfile.

أولاً، احصل على خادم تسجيل الدخول إلى السجل باستخدام الأمر az acr show. استبدل <acrName> باسم السجل الذي أنشأته في الخطوات السابقة.

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

المخرجات:

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

بعد ذلك، قم بتحديث السطر ENV DOCKER_REGISTRY باستخدام FQDN لخادم تسجيل الدخول الخاص بالسجل. يعكس هذا المثال مثال اسم السجل، uniqueregistryname:

ENV DOCKER_REGISTRY uniqueregistryname.azurecr.io

بناء صورة حاوية

الآن بعد أن قمت بتحديث Dockerfile باستخدام FQDN لخادم تسجيل الدخول إلى السجل، يمكنك استخدام docker build لإنشاء صورة الحاوية. قم بتشغيل الأمر التالي لإنشاء الصورة ووضع علامة عليها بعنوان URL الخاص بالسجل الخاص بك، مع استبدال <acrName> مرة أخرى باسم السجل الخاص بك:

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

يتم عرض عدة أسطر من الإخراج أثناء إنشاء صورة Docker (تظهر هنا مقطوعة):

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

استخدم docker images لمشاهدة الصورة المبنية والمميزة بعلامات:

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

دفع الصورة إلى Azure Container Registry

بعد ذلك، استخدم الأمر docker push لدفع صورة acr-helloworld إلى السجل الخاص بك. استبدل <acrName> باسم سجلك.

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

نظراً لأنك قمت بتكوين السجل الخاص بك للنسخ الجغرافي، يتم نسخ صورتك تلقائياً إلى مناطق West US وEast US باستخدام هذا الأمر docker push الفردي.

$ 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

الخطوات التالية

في هذا البرنامج التعليمي، أنشأت سجل حاوية خاصاً مكرراً جغرافياً، وأنشأت صورة حاوية، ثم دفعت تلك الصورة إلى السجل الخاص بك.

تابع إلى البرنامج التعليمي التالي لنشر الحاوية الخاصة بك إلى العديد من تطبيقات الويب للحاويات، باستخدام النسخ إلى أماكن متباعدة جغرافياً الجغرافي لخدمة الصور محلياً.