Quickstart: نشر مثيل حاوية في Azure باستخدام Azure CLI

استخدام Azure Container Instances لتشغيل حاويات Docker بدون خادم في Azure ببساطة وبسرعة. انشر تطبيقاً على مثيل حاوية عند الطلب عندما لا تحتاج إلى نظام أساسي لتنظيم حاوية كاملة، مثل Azure Kubernetes Service.

في هذا البدء السريع، يمكنك استخدام Azure CLI لنشر حاوية Docker معزولة وإتاحة تطبيقه باسم مجال مؤهل بالكامل (FQDN). بعد بضع ثوانٍ من تنفيذ أمر النشر الفردي، يمكنك التصفح وصولاً إلى التطبيق الذي يُشغل في الحاوية:

View an app deployed to Azure Container Instances in browser

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

المتطلبات الأساسية

  • يتطلب بدء التشغيل السريع هذا توافر الإصدار 2.0.55 من Azure CLI أو الأحدث. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.

    تحذير

    أفضل الممارسات: يتم تخزين بيانات اعتماد المستخدم التي تم تمريرها عبر واجهة سطر الأوامر (CLI) كنص عادي في الخلفية. يعد تخزين بيانات الاعتماد في نص عادي خطرا أمنيا؛ تنصح Microsoft العملاء بتخزين بيانات اعتماد المستخدم في متغيرات بيئة CLI للتأكد من تشفيرها/تحويلها عند تخزينها في الخلفية.

إنشاء مجموعة موارد

يجب توزيع container instances مثل الموارد الخاصة بـ Azure على مجموعة الموارد. تسمح لك مجموعات الموارد بتنظيم وإدارة موارد Azure ذات الصلة.

أولاً، أنشئ مجموعة موارد باسم myResourceGroup في موقع eastus باستخدام الأمر التالي az group create:

az group create --name myResourceGroup --location eastus

إنشاء حاوية

الآن بعد أن أصبح لديك مجموعة موارد، يمكنك تشغيل حاوية في Azure. لإنشاء مثيل حاوية باستخدام Azure CLI، قم بتوفير اسم مجموعة موارد واسم مثيل الحاوية وصورة حاوية Docker إلى الأمر az container create. في هذه البداية السريعة، يمكن استخدام صورة mcr.microsoft.com/azuredocs/aci-helloworld العامة. تعمل هذه الصورة على حزم تطبيق ويب صغير مكتوب بلغة Node.js لصفحة HTML ثابتة.

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

قم بتنفيذ أمر مشابه لما يلي لبدء مثيل حاوية. قم بتعيين قيمة --dns-name-label فريدة داخل منطقة Azure حيث تقوم بإنشاء المثيل. إذا تلقيت رسالة خطأ "تسمية اسم DNS غير متوفرة"، فجرب تسمية اسم DNS مختلفة.

az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80

في غضون ثوانٍ قليلة، يجب أن تحصل على استجابة من Azure CLI تشير إلى اكتمال النشر. تحقق من حالتها باستخدام الأمر az container show:

az container show --resource-group myResourceGroup --name mycontainer --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table

عند تشغيل الأمر، يتم عرض اسم المجال المؤهل بالكامل للحاوية (FQDN) وحالة التزويد الخاصة به.

FQDN                               ProvisioningState
---------------------------------  -------------------
aci-demo.eastus.azurecontainer.io  Succeeded

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

View an app deployed to Azure Container Instances in browser

إذا لم يتم عرض التطبيق في البداية، فقد تحتاج إلى الانتظار بضع ثوانٍ أثناء انتشار DNS، ثم حاول تحديث متصفحك.

اسحب سجلات الحاوية

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

اسحب سجلات مثيل الحاوية باستخدام الأمر "az container logs":

az container logs --resource-group myResourceGroup --name mycontainer

يعرض الإخراج سجلات الحاوية، ويجب أن يُظهر طلبات HTTP GET التي تم إنشاؤها عند عرض التطبيق في متصفحك.

listening on port 80
::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

إرفاق تدفقات الإخراج

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

أولاً، قم بتنفيذ الأمر "az container attach" لإرفاق وحدة التحكم المحلية الخاصة بك بتدفقات إخراج الحاوية:

az container attach --resource-group myResourceGroup --name mycontainer

بمجرد إرفاقه، قم بتحديث المستعرض الخاص بك عدة مرات لإنشاء بعض المخرجات الإضافية. عند الانتهاء، افصل وحدة التحكم الخاصة بك مع Control+C. يجب أن ترى مخرجات مماثلة لما يلي:

Container 'mycontainer' is in state 'Running'...
(count: 1) (last timestamp: 2019-03-21 17:27:20+00:00) pulling image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:24+00:00) Successfully pulled image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Created container
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Started container

Start streaming logs:
listening on port 80

::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:47:01 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.56 - - [21/Mar/2019:17:47:12 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

تنظيف الموارد

عند الانتهاء من الحاوية، قم بإزالتها باستخدام الأمر az container delete:

az container delete --resource-group myResourceGroup --name mycontainer

للتحقق من حذف الحاوية، قم بتنفيذ الأمر az container list:

az container list --resource-group myResourceGroup --output table

يجب ألا تظهر حاوية mycontainer في إخراج الأمر. إذا لم يكن لديك أي حاويات أخرى في مجموعة الموارد، فلن يتم عرض أي إخراج.

إذا انتهيت من مجموعة الموارد myResourceGroup وجميع الموارد التي تحتوي عليها، فاحذفها باستخدام الأمر az group delete:

az group delete --name myResourceGroup

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

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

لتجربة خيارات تشغيل الحاويات في نظام تزامن على Azure، راجع الخطوات السريعة لخدمة Azure Kubernetes (AKS).