توزيع صورة Docker على Azure Container Instance

مكتمل

تعمل خدمة Azure Container Instance على تحميل وتشغيل صور Docker عند الطلب. يمكن لخدمة Azure Container Instance استرداد الصورة من سجل مثل، Docker Hub أو Azure Container Registry.

تريد مؤسستك استخدام Azure لتشغيل تطبيقاتها على الويب. لهذا السبب، من المنطقي تخزين الصور في Azure Container Registry وتشغيلها باستخدام خدمة Azure Container Instance.

في هذه الوحدة، ستتعلم كيفية تحميل صورة Docker إلى Azure Container Registry. ثم، ستشغل الصورة باستخدام خدمة Azure Container Instance.

استخدام Azure Container Registry لتخزين حاوية

Azure Container Registry هي خدمة استضافة سجل مقدمة من Azure. ويمثل كل مورد من موارد Azure Container Registry تقوم بإنشائه سجلاً منفصلاً بعنوان URL فريد. كون هذه السجلات خاصة: فهي تتطلب مصادقة لدفع أو سحب الصور. يعمل Azure Container Registry في السحابة ويوفر مستويات مماثلة من قابلية التوسع والتوافر لخدمات Azure الأخرى.

يمكنك إنشاء سجل باستخدام مدخل Microsoft Azure أو واجهة سطر الأوامر Azure (CLI). يمكنك استخدام Cloud Shell في مدخل Azure أو تثبيت محلي من Azure CLI. ضع في اعتبارك أنه سيجب عليك إنشاء مجموعة موارد قبل إنشاء السجل. عند إنشاء مجموعة موارد، نوصي باختيار أقرب منطقة. في هذا المثال، اسم مجموعة الموارد لدينا هو mygroup، والموقع هو غرب الولايات المتحدة.

لا تحتاج إلى تشغيل أي من الأوامر التالية. سنفعل ذلك في التمرين التالي.

إشعار

تحتاج إلى اسم فريد للحاوية لديك. يمكنك التحقق لمعرفة ما إذا كان الاسم قيد الاستخدام بالفعل هنا.

az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true

توفر وحدات حفظ المخزون (SKU) المختلفة مستويات مختلفة من قابلية التوسع والتخزين.

تكون مستودعات Azure Container Registry خاصة، مما يعني أنها لا تدعم الوصول ما لم تتم مصادقته. لسحب الصور من مستودع Azure Container Registry، استخدم أمر docker login وحدد عنوان URL لخادم تسجيل الدخول الخاص بالسجل. يأخذ عنوان URL لخادم تسجيل الدخول الخاص بالسجل في Azure Container Registry الشكل <registry_name>.azurecr.io.

docker login myregistry.azurecr.io

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

az acr credential show --name myregistry --resource-group mygroup

يمكنك دفع صورة من جهاز الكمبيوتر المحلي إلى سجل Docker باستخدام الأمر.docker push لكن، قبل أن تدفع إحدى الصور، يجب أن تُنشئ اسماً مستعاراً للصورة التي تحدد المستودع والعلامة المراد إنشاؤهما في سجل Docker. يجب أن يأخذ اسم المستودع الشكل *<login_server>/<image_name>:<tag/>. استخدم أمر docker tag لتنفيذ هذه العملية. ينشئ المثال التالي اسماً مستعاراً لصورة reservationsystem.

docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2

إذا قمت بتشغيل docker image ls، سترى إدخالين للصورة: أحدهما بالاسم الأصلي، والثاني بالاسم المستعار الجديد.

بعد تشغيل الأمر التمييز، يمكنك تحميل الصورة إلى التسجيل في Azure Container Registry باستخدام الأمر التالي.

docker push myregistry.azurecr.io/reservationsystem:v2

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

az acr repository list --name myregistry --resource-group mygroup

يمكنك سرد الصور في السجل باستخدام أمرacr repository show.

az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup

إشعار

سترى علامتين على الأقل لكل صورة في مستودع. ستكون إحدى العلامات القيمة التي حددتها في أمر acr build (v1 في المثال السابق). والأخرى ستكون latest. في كل مرة تعيد فيها إنشاء صورة، تنشئ خدمة Azure Container Registry علامة latest تلقائياً كاسم مستعار لأحدث إصدار من الصورة.

استخدام Azure Container Instance لتشغيل صورة

يمكن لخدمة Azure Container Instance تحميل صورة من Azure Container Registry وتشغيلها في Azure.

يمكنك إنشاء مثيل حاوية وبدء تشغيل الصورة قيد التشغيل باستخدام أمر az container create. أدخل اسم المستخدم وكلمة المرور للسجل في معلمتي registry-username وregistry-password. سيتم تخصيص عنوان IP للمثيل. يمكنك الوصول إلى المثيل بعنوان IP هذا. يمكنك تحديد اسم DNS اختيارياً إذا كنت تفضل الإشارة إلى المثيل من خلال تسمية أكثر سهولة. لاحظ أنه يمكنك تحديد الصورة كعنوان URL يشير إلى السجل (myregistry) في خدمة Azure Container Registry (azurecr.io). إذا كنت تستخدم Docker Hub أو سجلاً آخر، فاستبدل عنوان صورتك في ذلك السجل بعنوان URL هذا.

az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>

يستضيف Azure المثيل باسم مجال استناداً إلى تسمية DNS التي حددتها. يمكنك العثور على اسم المجال المؤهل بالكامل للمثيل عن طريق الاستعلام عن عنوان IP للمثيل.

az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn

يمكنك الوصول إلى التطبيق باستخدام مستعرض ويب. يمكنك الانتقال إلى عنوان URL الذي تم إرجاعه بواسطة هذا الأمر؛ سنتعلم كيف في الوحدة التالية.