البرنامج التعليمي: أتمتة بنيات صورة الحاوية عند تحديث صورة أساسية في سجل حاويات Azure
تدعم مهام ACR عمليات بنيات صورة الحاوية المؤتمتة عند تحديث الصورة الأساسية للحاوية، كما هو الحال عند تصحيح نظام التشغيل أو إطار عمل التطبيق في إحدى الصور الأساسية.
في هذا البرنامج التعليمي، تتعلم كيفية إنشاء مهمة ACR التي تؤدي وجود الإنشاء في السحابة عند دفع الصورة الأساسية للحاوية إلى السجل ذاته. يمكنك أيضًا تجربة برنامج تعليمي لإنشاء مهمة ACR تعمل على إنشاء صورة عندما يتم دفع صورة أساسية إلى سجل حاوية Azure آخر.
سوف تتعلم في هذا البرنامج التعليمي:
- إنشاء صورة أساسية
- إنشاء صورة تطبيق في السجل ذاته لتعقب الصورة الأساسية
- تحديث الصورة الأساسية لتشغيل مهمة صور التطبيق
- اعرض المهمة التي تم تشغيلها
- تحقق من صورة التطبيق المحدثة
المتطلبات الأساسية
استكمل البرامج التعليمية السابقة
يفترض هذا البرنامج التعليمي أنك قمت بالفعل بتكوين بيئتك واستكملت الخطوات في أول سلسلتين من البرامج التعليمية، والتي تعلمت فيها ما يلي:
- إنشاء سجل حاوية Azure
- نسخة مستودع العينة
- استنساخ تقرير العينة
- إنشاء رمز الوصول الشخصي GitHub
إذا لم تكن قد فعلت ذلك بالفعل، فاستكمل الدروس التالية قبل المتابعة:
أنشئ صور حاوية في السحابة باستخدام مهام تسجيل حاوية Azure
أتمتة بنيات صور حاوية في السحابة التي تم إنشاؤها مع مهام تسجيل حاوية Azure
قم بتكوين البيئة
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدماً أمر az login. لإنهاء عملية المصادقة، التزم بالخطوات المعروضة في وحدتك الطرفية. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تتطلب هذه المقالة الإصدار 2.0.46، أو إصداراً أحدث من Azure CLI. في حال استخدام Azure Cloud Shell، يكون الإصدار الأخير مثبتًا بالفعل.
تعبئة متغيرات بيئة shell هذه بقيم مناسبة لبيئتك. هذه الخطوة غير مطلوبة بالضرورة، ولكن يجعل تنفيذ أوامر Azure CLI متعددة الخطوط في هذا البرنامج التعليمي أسهل قليلاً. إذا لم تملأ متغيرات البيئة هذه، فإنه يجب استبدال كل قيمة يدوياً أينما ظهرت في أوامر المثال.
ACR_NAME=<registry-name> # The name of your Azure container registry
GIT_USER=<github-username> # Your GitHub user account name
GIT_PAT=<personal-access-token> # The PAT you generated in the second tutorial
سيناريو تحديثات الصورة الأساسية
يعرفك هذا البرنامج التعليمي على سيناريو تحديث صورة أساسية يتم فيها الاحتفاظ بصورة أساسية وصورة تطبيق في سجل واحد.
تشمل عينة التعليمات البرمجية ملفين Dockerfiles: صورة تطبيق وصورة يحددها كأساس له. في المقاطع التالية، يمكنك إنشاء مهمة ACR تلقائيًا بتشغيل إنشاء صورة التطبيق عند دفع إصدار جديد من الصورة الأساسية إلى سجل الحاوية ذاته.
Dockerfile-app: تطبيق ويب Node.js صغير يعرض صفحة ويب ثابتة تظهر إصدار Node.js الذي تستند إليه. تمت محاكاة سلسلة الإصدار: فهي تعرض محتويات متغير البيئة،
NODE_VERSION
، المحدد في الصورة الأساسية.Dockerfile-base: الصورة التي
Dockerfile-app
تحدد على أنها أساسها. إنه ذاته يعتمد على صورة Node، ويتضمنNODE_VERSION
متغير البيئة.
في الأقسام التالية، تقوم بإنشاء مهمة، وتحديث القيمة NODE_VERSION
في Dockerfile للصورة الأساسية، ثم استخدام ACR Tasks لبناء الصورة الأساسية. عند دفع مهمة ACR للصورة الأساسية الجديدة إلى التسجيل الخاص بك، فإنه يقوم تلقائياً بتشغيل بناء صورة التطبيق. يجوز لك وفقاً لتقديرك تشغيل صورة حاوية التطبيق محلياً لمشاهدة سلاسل الإصدار مختلفة في الصور المضمنة.
في هذا البرنامج التعليمي، تعمل بمهمة ACR على إنشاء صورة حاوية تطبيق محددة في ملف Dockerfile ودفعها. يمكن أيضاً تشغيل مهام ACR مهام متعددة الخطوات، باستخدام ملف YAML لتحديد خطوات لإنشاء ودفع واختبار حاويات متعددة اختيارياً.
إنشاء صورة أساسية
ابدأ بإنشاء صورة أساسية مع مهمة سريعةمهام ACR، وذلك باستخدام az acr build. كما هو مُبين في البرنامج التعليمي الأول في السلسلة، هذه العملية ليس فقط لإنشاء الصورة، ولكن للدفع إلى تسجيل الحاوية الخاصة بك إذا كان الإنشاء ناجحًا.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
إنشاء مهمة
بعد ذلك، إنشاء مهمة مع az acr task create:
az acr task create \
--registry $ACR_NAME \
--name baseexample1 \
--image helloworld:{{.Run.ID}} \
--arg REGISTRY_NAME=$ACR_NAME.azurecr.io \
--context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
--file Dockerfile-app \
--git-access-token $GIT_PAT
تتشابه هذه المهمة مع المهمة التي تم إنشاؤها في البرنامج التعليمي السابق. كما أنه يرشد مهام ACR لتشغيل بنية صورة عند دفع عمليات الالتزام إلى المستودع المحدد بواسطة --context
. بينما Dockerfile المُستخدمة لإنشاء الصورة في البرنامج التعليمي السابق، ويحدد صورة قاعدة عامة (FROM node:15-alpine
)، Dockerfile في هذه المهمة، Dockerfile-app، يحدد صورة أساسية في السجل ذاته:
FROM ${REGISTRY_NAME}/baseimages/node:15-alpine
يسهل هذا التكوين من محاكاة تصحيح إطار العمل في الصورة الأساسية في وقت لاحق في هذا البرنامج التعليمي.
أنشئ حاوية التطبيق
استخدام az acr task run لتشغيل المهمة يدويًا وإنشاء صورة التطبيق. تُعد هذه الخطوة ضرورية بحيث تتعقب المهمة تبعية صورة التطبيق على الصورة الأساسية.
az acr task run --registry $ACR_NAME --name baseexample1
بمجرد إتمام المهمة، لاحظ معرف التشغيل (على سبيل المثال، "da6") إذا كنت ترغب في إتمام الخطوة الاختيارية التالية.
اختياري: تشغيل حاوية التطبيق محلياً
إذا كنت تعمل على المستوى المحلي (وليس في Cloud Shell)، وكان لديك Docker مثبت، فشغل الحاوية لرؤية التطبيق المقدم في مستعرض ويب قبل إعادة إنشاء صورته الأساسية. إذا كنت تستخدم Cloud Shell، فتخطَّ هذا القسم (لا تدعم Cloud Shell az acr login
أو docker run
).
أولاً، المصادقة على سجل الحاويات الخاص بك باستخدام az acr login:
az acr login --name $ACR_NAME
شغل الحاوية على الصعيد المحلي docker run
. استبدل <run-id> بمعرف التشغيل الموجود في الإخراج من الخطوة السابقة (على سبيل المثال، "da6"). يضع هذا المثال أسماء الحاوية myapp
ويتضمن --rm
المعلمة لإزالة الحاوية عند إيقافها.
docker run -d -p 8080:80 --name myapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
انتقل إلى http://localhost:8080
في متصفحك، وسترى رقم الإصدار Node.js المقدم في صفحة الويب، على غرار ما يلي. في خطوة لاحقة، يمكنك تفريغ الإصدار عن طريق إضافة "a" إلى سلسلة الإصدار.
لإيقاف الحاوية وإزالتها، شغل الأمر التالي:
docker stop myapp
سرد البنيات
التالي، ضع قائمة بالمهام المُشغلة التي أكملتها مهام ACR للسجل الخاص بك، شغّل الأمر az acr task list-runs:
az acr task list-runs --registry $ACR_NAME --output table
إذا أكملت البرنامج التعليمي السابق (ولم تقم بحذف التسجيل)، ينبغي أن تشاهد الإخراج مشابهاً لما يلي. لاحظ عدد تشغيل المهام ومعرف RUN الأخير، بحيث يمكنك مقارنة الإخراج بعد تحديث الصورة الأساسية في المقطع التالي.
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- --------- -------------------- ----------
cax baseexample1 linux Succeeded Manual 2020-11-20T23:33:12Z 00:00:30
caw taskhelloworld linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:29
cav example2 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:55
cau example1 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:40
cat taskhelloworld linux Succeeded Manual 2020-11-20T23:07:29Z 00:00:27
تحديث الصورة الأساسية
يمكنك عندئذ محاكاة تصحيح إطار العمل في الصورة الأساسية. تحرير Dockerfile-base، وإضافة "a" بعد رقم الإصدار المحدد في NODE_VERSION
:
ENV NODE_VERSION 15.2.1a
شغل مهمة سريعة لإنشاء صورة أساسية معدلة. دوّن مُعرف التشغيل في الإخراج.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
بمجرد اكتمال الإنشاء ودفع مهمة ACR للصورة الأساسية الجديدة إلى التسجيل الخاص بك، فإنه يؤدي إلى إنشاء صورة التطبيق. قد يستغرق الأمر بضع لحظات للمهمة التي قمت بإنشائها في وقت سابق لتشغيل إنشاء صورة التطبيق، حيث يجب الكشف عن الصورة الأساسية المبنية حديثاً، والتي تم دفعها.
قائمة الإنشاء المحدثة
والآن بعد تحديث الصورة الأساسية، شغل قائمة المهام مرة أخرى للمقارنة بالقائمة السابقة. إذا لم يختلف الإخراج في البداية، فشغل الأمر بشكل دوري لرؤية تشغيل المهمة الجديدة تظهر في القائمة.
az acr task list-runs --registry $ACR_NAME --output table
يتشابه الإخراج مع المثال التالي. يجب أن يكون TRIGGER للبناء المنفذ الأخير «تحديث الصورة»، مما يشير إلى أن المهمة قد تم تشغيلها من خلال مهمتك السريعة للصورة الأساسية.
Run ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- ------------ -------------------- ----------
ca11 baseexample1 linux Succeeded Image Update 2020-11-20T23:38:24Z 00:00:34
ca10 taskhelloworld linux Succeeded Image Update 2020-11-20T23:38:24Z 00:00:24
cay linux Succeeded Manual 2020-11-20T23:38:08Z 00:00:22
cax baseexample1 linux Succeeded Manual 2020-11-20T23:33:12Z 00:00:30
caw taskhelloworld linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:29
cav example2 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:55
cau example1 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:40
cat taskhelloworld linux Succeeded Manual 2020-11-20T23:07:29Z 00:00:27
إذا كنت ترغب في تنفيذ الخطوة الاختيارية التالية لتشغيل الحاوية التي تم إنشاؤها حديثًا لرؤية رقم الإصدار المُحدث، فلاحظ قيمة RUN ID للبناء الذي تم تشغيله في تحديث الصورة (في الإخراج السابق، فإنه "ca11").
اختياريًا: شغل صورة تم إنشاؤها حديثًا
إذا كنت تعمل محلياً (وليس في Cloud Shell)، وكان لديك Docker مثبتاً، شغل صورة التطبيق الجديدة بمجرد اكتمال إنشائها. استبدال <run-id>
باستخدام RUN ID الذي تلقيته في الخطوة السابقة. إذا كنت تستخدم Cloud Shell، فتخطَّ هذا القسم (لا تدعم Cloud Shell docker run
).
docker run -d -p 8081:80 --name updatedapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
انتقل إلى http://localhost:8081 في متصفحك، وسترى رقم الإصدار Node.js (بحرف «a») في صفحة الويب:
الأمر المهم هو ملاحظة أنك قمت بتحديث الصورة الأساسية الخاصة بك مع رقم الإصدار الجديد، ولكن صورة التطبيق المُنشأة سابقاً تظهر الإصدار الجديد. التقطت مهام ACR التغيير إلى الصورة الأساسية، ثم أعدت إنشاء صورة التطبيق تلقائياً.
لإيقاف الحاوية وإزالتها، شغل الأمر التالي:
docker stop updatedapp
الخطوات التالية
في هذا البرنامج التعليمي، تعلمتَ كيفية استخدام مهمة لتشغيل إنشاءات صورة الحاوية تلقائيًا في Azure عند تحديث الصورة الأساسية.
للحصول على سير عمل كامل لإدارة الصور الأساسية التي تنشأ من مصدر عام، راجع كيفية استهلاك المحتوى العام والحفاظ عليه باستخدام Azure Container Registry Tasks.
الآن، انتقل إلى البرنامج التعليمي التالي لمعرفة كيفية تشغيل المهام على جدول زمني محدد.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ