البرنامج التعليمي: إعداد سجل حاوية 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.
قم بتكوين السجل الجديد الخاص بك مع الإعدادات التالية. في علامة التبويب Basics:
- اسم السجل: أنشئ اسم سجل فريداً بشكل عام داخل Azure، يحتوي على 5-50 حرفاً أبجدياً رقمياً
- مجموعة الموارد: إنشاء جديد>
myResourceGroup
- الموقع :
West US
- SKU :
Premium
(مطلوب لنسخ البيانات إلى أماكن متباعدة جغرافياً)
حدد Review + create ثم Create لإنشاء مثيل السجل.
خلال بقية هذا البرنامج التعليمي، سنستخدم <acrName>
كعنصر نائب للحاوية اسم السجل الذي تختاره.
تلميح
نظراً لأن سجلات حاوية Azure هي عادةً موارد طويلة العمر يتم استخدامها عبر عدة مضيفات حاوية، نوصي بإنشاء السجل الخاص بك في مجموعة الموارد الخاصة به. أثناء تكوين السجلات المكرر نسخها إلى أماكن متباعدة جغرافياً وخطافات الويب، يتم وضع هذه الموارد الإضافية في نفس مجموعة الموارد.
تكوين النسخ إلى أماكن متباعدة جغرافياً
الآن بعد أن أصبح لديك سجل Premium، يمكنك تكوين النسخ إلى أماكن متباعدة جغرافياً الجغرافي. يمكن لتطبيق الويب الخاص بك، الذي قمت بتكوينه في البرنامج التعليمي التالي للتشغيل في منطقتين، سحب صور الحاوية الخاصة به من أقرب سجل.
انتقل إلى سجل الحاوية الجديد في مدخل Microsoft Azure وحدد Replications ضمن Services:
يتم عرض خريطة توضح الأشكال السداسية الخضراء التي تمثل مناطق Azure المتاحة للنسخ إلى أماكن متباعدة جغرافياً:
قم بنسخ السجل الخاص بك إلى منطقة شرق الولايات المتحدة عن طريق تحديد الشكل السداسي الأخضر الخاص به، ثم حدد Create ضمن Create replication:
عند اكتمال النسخ إلى أماكن متباعدة جغرافياً، فإن المدخل يعرض Ready لكلتا المنطقتين. استخدم الزر Refresh لتحديث حالة النسخ إلى أماكن متباعدة جغرافياً؛ يمكن أن يستغرق إنشاء النسخ إلى أماكن متباعدة جغرافياً ومزامنتها دقيقة أو نحو ذلك.
تمكين حساب المسؤول
في البرامج التعليمية اللاحقة، تقوم بنشر صورة حاوية من التسجيل مباشرة إلى تطبيق الويب للحاويات. لتمكين هذه الإمكانية، يجب عليك أيضاً تمكين حساب المسؤول الخاص بالسجل.
انتقل إلى سجل الحاوية الجديد في مدخل Microsoft Azure وحدد Access keys ضمن Settings. ضمن Admin user، حدد Enable.
تسجيل الدخول إلى سجل الحاوية
الآن بعد أن قمت بتكوين النسخ إلى أماكن متباعدة جغرافياً الجغرافي، أنشئ صورة حاوية وادفعها إلى السجل الخاص بك. يجب عليك أولاً تسجيل الدخول إلى السجل الخاص بك قبل إرسال الصور إليه.
استخدم الأمر 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
الخطوات التالية
في هذا البرنامج التعليمي، أنشأت سجل حاوية خاصاً مكرراً جغرافياً، وأنشأت صورة حاوية، ثم دفعت تلك الصورة إلى السجل الخاص بك.
تابع إلى البرنامج التعليمي التالي لنشر الحاوية الخاصة بك إلى العديد من تطبيقات الويب للحاويات، باستخدام النسخ إلى أماكن متباعدة جغرافياً الجغرافي لخدمة الصور محلياً.