إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
مهام ACR هي مجموعة من الميزات داخل Azure Container Registry التي توفر إصدارات صورة حاوية Docker مبسطة وفعالة في Azure. في هذه المقالة، ستتعلم كيفية استخدام ميزة المهمة السريعة لمهام ACR.
تُعد دورة تطوير «الحلقة الداخلية» هي العملية التكرارية لكتابة التعليمات البرمجية، والإنشاء، واختبار التطبيق الخاص بك قبل الالتزام بالتحكم في المصدر. تعمل المهمة السريعة على بسط الحلقة الداخلية الخاصة بك إلى السحابة، ما يمكّنك من التحقق من نجاح الإنشاء والدفع التلقائي لصور البنيات بنجاح إلى سجل الحاويات الخاصة بك. يتم إنشاء صورك في السحابة، قريبة من السجل، مما يتيح لك نشر أسرع.
جميع خبرات Dockerfile لديك قابلة للتحويل مباشرة إلى مهام ACR. لم تكن بحاجة إلى تغيير Dockerfiles الخاص بك من أجل إنشائه في السحابة مع مهام ACR، مجرد الأمر الذي تقوم بتشغيله.
في هذا البرنامج التعليمي، الجزء الأول من السلسلة:
- الحصول على التعليمات البرمجية لمصدر تطبيق العينة
- إنشاء صورة حاوية في Azure
- استخدم حاوية من أجل Azure Container Instances
في البرامج التعليمية اللاحقة، ستتعلم استخدام مهام ACR لصورة حاوية آلية قائمة على تثبيت التعليمات البرمجية وتحديث الصورة الأساسية. يمكن أيضاً تشغيل مهام ACR مهام متعددة الخطوات، باستخدام ملف YAML لتحديد خطوات لإنشاء ودفع واختبار حاويات متعددة اختيارياً.
المتطلبات الأساسية
حساب GitHub
قم بإنشاء حساب في https://github.com إذا لم يكن لديك حساب بالفعل. تستخدم هذه السلسلة التعليمية مستودع GitHub لعرض البنيات التلقائية للصور في مهام ACR.
نسخة مستودع العينة
بعد ذلك، استخدم واجهة المستخدم GitHub لنسخ مستودع العينة إلى حسابك على GitHub. في هذا البرنامج التعليمي، يمكنك إنشاء صورة حاوية من المصدر في المستودع، وفي البرنامج التعليمي المقبل، يمكنك دفع التثبيت إلى نسخة المستودع الخاصة بك من أجل البدء في مهمة الآلية.
نسخ هذا المستودع: https://github.com/Azure-Samples/acr-build-helloworld-node
انسخ نسخة المستودع
بمجرد الانتهاء من نسخ المستودع، استنسخ نسختك، وأدخل الدليل الذي يحتوي على الاستنساخ المحلي الخاص بك.
استنساخ الريبو باستخدامgit، واستبدل < اسم المستخدم الخاص بك على >github باسم مستخدم GitHub الخاص بك:
git clone https://github.com/<your-github-username>/acr-build-helloworld-node
أدخل الدليل الذي يحتوي على التعليمات البرمجية للمصدر:
cd acr-build-helloworld-node
Bash shell
يتم تنسيق الأوامر في هذه السلسلة التعليمية لـ Bash shell. إذا كنت تفضل استخدام PowerShell أو Command Prompt أو واجهة أخرى، فقد تحتاج إلى ضبط تنسيق متغير متابعة الخط والبيئة وفقًا لذلك.
إعداد البيئة الخاصة بك لـ Azure CLI
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محليا، فقم بتثبيت Azure CLI. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيتا محليا، فسجل الدخول إلى Azure CLI باستخدام الأمر az login . لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات تسجيل الدخول الأخرى، راجع المصادقة على Azure باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات حول الملحقات، راجع استخدام الملحقات وإدارتها باستخدام Azure CLI.
قم بتشغيل az version للعثور على الإصدار والمكتبات التابعة المثبتة. للترقية إلى أحدث إصدار، قم بتشغيل az upgrade.
إنشاء في Azure باستخدام مهام ACR
الآن بعد أن سحبت التعليمات البرمجية المصدر إلى جهازك، اتبع تلك الخطوات من أجل إنشاء سجل حاوية وإنشاء صورة الحاوية باستخدام مهام ACR.
لتسهيل تنفيذ أوامر العينة، تستخدم البرامج التعليمية في هذه السلسلة متغيرات بيئة الواجهة. نفذ الأمر التالي لتعيين ACR_NAME المتغير. استبدل <اسم التسجيل> باسم فريد لسجل الحاوية الجديد. ينبغي أن يكون اسم السجل فريدًا داخل Azure، وأن يحتوي على أحرف صغيرة فقط، ويحتوي على 5 إلى 50 حرفًا أبجديًا ورقميًا. تعتمد الموارد الأخرى التي تقوم بإنشائها في البرنامج التعليمي على هذا الاسم، لذلك ينبغي لك تعديل هذا المتغير الأول فقط.
ACR_NAME=<registry-name>
مع وجود متغير بيئة تسجيل الحاوية مملوءًا، ينبغي أن تتمكن الآن من نسخ ولصق ما تبقى من الأوامر في البرنامج التعليمي دون تحرير أي قيم. نفّذ الأوامر التالية لإنشاء مجموعة موارد وسجل حاوية.
RES_GROUP=$ACR_NAME # Resource Group name
az group create --resource-group $RES_GROUP --location eastus
az acr create --resource-group $RES_GROUP --name $ACR_NAME --sku Standard --location eastus
الآن، بعد أن كان لديك سجل، استخدم مهام ACR لإنشاء صورة حاوية من التعليمات البرمجية للعينة. تنفيذ الأمر az acr build لتنفيذ مهمة سريعة.
إشعار
يعتمد ملف Docker المستخدَم في المثال التالي على صورة حاوية قاعدة عامة من Docker Hub. لتحسين الموثوقية عند استخدام المحتوى العام، قم باستيراد الصورة وإدارتها في سجل حاوية Azure خاص، وتحديث Dockerfile الخاص بك لاستخدام الصورة الأساسية المُدارة بشكل خاص. تعرف على المزيد حول العمل مع الصور العامة.
az acr build --registry $ACR_NAME --image helloacrtasks:v1 --file /path/to/Dockerfile /path/to/build/context.
الإخراج من الأمر az acr build مشابهة للآتي. يمكنك مشاهدة تحميل التعليمات البرمجية المصدر ("السياق") إلى Azure، وتفاصيل docker build العملية التي تشغلها مهمة ACR في السحابة. نظرا لأن مهام ACR تستخدم docker build لإنشاء صورك، فلا يلزم إجراء أي تغييرات على Dockerfiles لبدء استخدام مهام ACR على الفور.
Packing source code into tar file to upload...
Sending build context (4.813 KiB) to ACR...
Queued a build with build ID: da1
Waiting for build agent...
2023/11/18 18:31:42 Using acb_vol_01185991-be5f-42f0-9403-a36bb997ff35 as the home volume
2023/11/18 18:31:42 Setting up Docker configuration...
2023/11/18 18:31:43 Successfully set up Docker configuration
2023/11/18 18:31:43 Logging in to registry: myregistry.azurecr.io
2023/11/18 18:31:55 Successfully logged in
Sending build context to Docker daemon 21.5kB
Step 1/5 : FROM node:15-alpine
15-alpine: Pulling from library/node
Digest: sha256:8dafc0968fb4d62834d9b826d85a8feecc69bd72cd51723c62c7db67c6dec6fa
Status: Image is up to date for node:15-alpine
---> a56170f59699
Step 2/5 : COPY . /src
---> 88087d7e709a
Step 3/5 : RUN cd /src && npm install
---> Running in e80e1263ce9a
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN helloworld@1.0.0 No repository field.
up to date in 0.1s
Removing intermediate container e80e1263ce9a
---> 26aac291c02e
Step 4/5 : EXPOSE 80
---> Running in 318fb4c124ac
Removing intermediate container 318fb4c124ac
---> 113e157d0d5a
Step 5/5 : CMD ["node", "/src/server.js"]
---> Running in fe7027a11787
Removing intermediate container fe7027a11787
---> 20a27b90eb29
Successfully built 20a27b90eb29
Successfully tagged myregistry.azurecr.io/helloacrtasks:v1
2023/11/18 18:32:11 Pushing image: myregistry.azurecr.io/helloacrtasks:v1, attempt 1
The push refers to repository [myregistry.azurecr.io/helloacrtasks]
6428a18b7034: Preparing
c44b9827df52: Preparing
172ed8ca5e43: Preparing
8c9992f4e5dd: Preparing
8dfad2055603: Preparing
c44b9827df52: Pushed
172ed8ca5e43: Pushed
8dfad2055603: Pushed
6428a18b7034: Pushed
8c9992f4e5dd: Pushed
v1: digest: sha256:b038dcaa72b2889f56deaff7fa675f58c7c666041584f706c783a3958c4ac8d1 size: 1366
2023/11/18 18:32:43 Successfully pushed image: myregistry.azurecr.io/helloacrtasks:v1
2023/11/18 18:32:43 Step ID acb_step_0 marked as successful (elapsed time in seconds: 15.648945)
The following dependencies were found:
- image:
registry: myregistry.azurecr.io
repository: helloacrtasks
tag: v1
digest: sha256:b038dcaa72b2889f56deaff7fa675f58c7c666041584f706c783a3958c4ac8d1
runtime-dependency:
registry: registry.hub.docker.com
repository: library/node
tag: 15-alpine
digest: sha256:8dafc0968fb4d62834d9b826d85a8feecc69bd72cd51723c62c7db67c6dec6fa
git: {}
Run ID: da1 was successful after 1m9.970148252s
من قُرب نهاية الإخراج، تُظهر مهام ACR التبعيات التي تم اكتشافها لصورتك. يُمكّن ذلك مهام ACR من أتمتة إنشاء الصورة على تحديثات الصور الأساسية، مثلما يحدث عند تحديث صورة أساسية باستخدام نظام التشغيل أو تصحيحات الإطار. يمكنك معرفة دعم مهام ACR لتحديثات الصورة الأساسية لاحقًا في هذه السلسلة التعليمية.
النشر إلى مثيلات حاوية Azure
تعمل مهام ACR تلقائيًا على دفع الصور التي تم إنشاؤها بنجاح إلى السجل بشكل افتراضي، ما يسمح لك بنشرها من خلال سجلك فورًا.
في هذا الجزء، يمكنك إنشاء Azure Key Vault، وإنشاء كيان خدمة، ثم نشر الحاوية إلى Azure Container Instances (ACI) باستخدام بيانات اعتماد أساس الخدمة.
تكوين مصادقة السجل
يجب أن تستخدم جميع سيناريوهات الإنتاج أساسيات الخدمة للوصول إلى سجل حاوية Azure. توفر لك كيانات الخدمة التحكم في الوصول المستند إلى الدور لصور الحاوية. فيمكنك على سبيل المثال تكوين كيان خدمة مع وصول السحب فقط إلى السجل.
إنشاء مخزن رئيسي
إذا لم يكن لديك بالفعل مخزن في Azure Key Vault، فأنشئ مخزناً باستخدام Azure CLI باستخدام الأوامر التالية.
AKV_NAME=$ACR_NAME-vault
az keyvault create --resource-group $RES_GROUP --name $AKV_NAME
أنشئ كيان خدمة، وخزن بيانات الاعتماد
تحتاج الآن إلى إنشاء كيان خدمة وتخزين بيانات اعتمادها في المخزن الرئيسي.
استخدم الأمر az ad sp create-for-rbac لإنشاء كيان الخدمة، وتعيين az keyvault secret لتخزين كلمة مرور كيان الخدمة في المخزن. استخدم الإصدار 2.25.0 من Azure CLI أو أحدث لهذه الأوامر:
يعتمد الدور الصحيح الذي يجب استخدامه في تعيين الدور على ما إذا كان السجل ممكنا من ABAC أم لا.
# Create service principal, store its password in AKV (the registry *password*)
ROLE="Container Registry Repository Reader" # For ABAC-enabled registries. For non-ABAC registries, use AcrPull.
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-pwd \
--value $(az ad sp create-for-rbac \
--name $ACR_NAME-pull \
--scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
--role "$ROLE" \
--query password \
--output tsv)
تقوم --role الوسيطة في الأمر السابق بتكوين كيان الخدمة بدور مضمن لمنحه حق الوصول إلى السجل فقط. يعتمد الدور الصحيح الذي يجب استخدامه في تعيين الدور على ما إذا كان السجل ممكنا من ABAC أم لا، مع حاجة السجلات الممكنة ل ABAC إلى Container Registry Repository Reader الدور والسجلات غير ABAC التي AcrPull تحتاج إلى الدور.
لمنح حق الوصول للدفع والسحب، قم بتغيير --role الوسيطة إما Container Registry Repository Writer إلى دور السجلات التي تدعم ABAC، أو AcrPush دور السجلات غير الممكنة ل ABAC.
لمزيد من المعلومات حول Microsoft Entra ABAC، راجع أذونات المستودع المستندة إلى Microsoft Entra.
بعد ذلك، قم بتخزين appId الخاص بكيان الخدمة في المخزن، وهو اسم المستخدم الذي تمرره إلى Azure Container Registry للمصادقة:
# Store service principal ID in AKV (the registry *username*)
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-usr \
--value $(az ad sp list --display-name $ACR_NAME-pull --query [].appId --output tsv)
لقد أنشأت Azure Key Vault وخزنت فيه سرين من أسرارك:
-
$ACR_NAME-pull-usr: المعرف الرئيسي للخدمة، لاستخدامه كسجل الحاوية username. -
$ACR_NAME-pull-pwd: كلمة المرور الرئيسية للخدمة، لاستخدامها كسجل للحاوية password.
يمكنك الآن الرجوع إلى تلك الأسرار بالاسم عندما تسحب أنت أو التطبيقات والخدمات الصور من التسجيل.
نشر حاوية باستخدام CLI Azure
الآن، بعد أن تُخزن بيانات اعتماد كيان الخدمة كأسرار Azure Key Vault، يمكن للتطبيقات والخدمات استخدامها للوصول إلى سجلك.
قم بتنفيذ الأمر التالي az container create لنشر مثيل حاوية. يستخدم الأمر بيانات اعتماد كيان الخدمة المُخزنة في Azure Key Vault للمصادقة على سجل الحاوية.
az container create \
--resource-group $RES_GROUP \
--name acr-tasks \
--image $ACR_NAME.azurecr.io/helloacrtasks:v1 \
--registry-login-server $ACR_NAME.azurecr.io \
--registry-username $(az keyvault secret show --vault-name $AKV_NAME --name $ACR_NAME-pull-usr --query value -o tsv) \
--registry-password $(az keyvault secret show --vault-name $AKV_NAME --name $ACR_NAME-pull-pwd --query value -o tsv) \
--dns-name-label acr-tasks-$ACR_NAME \
--query "{FQDN:ipAddress.fqdn}" \
--output table
--dns-name-label يجب أن تكون القيمة فريدة داخل Azure، لذلك يقوم الأمر السابق بإلحاق اسم سجل الحاوية بتسمية اسم DNS للحاوية. يُظهر الناتج من الأمر اسم المجال المؤهل تماماً والخاص بالحاوية (FQDN)، على سبيل المثال:
FQDN
----------------------------------------------
acr-tasks-myregistry.eastus.azurecontainer.io
لاحظ FQDN الخاص بالحاوية، لأنك ستستخدمه في القسم التالي.
التحقق من التوزيع
لمشاهدة عملية بدء تشغيل الحاوية، استخدم الأمر az container attach :
az container attach --resource-group $RES_GROUP --name acr-tasks
az container attach يعرض الإخراج أولا حالة الحاوية أثناء سحبها للصورة وبدء تشغيلها، ثم ربط STDOUT وSTDERR لوحدة التحكم المحلية الخاصة بك بتلك الخاصة بالحاوية.
Container 'acr-tasks' is in state 'Running'...
(count: 1) (last timestamp: 2023-11-18 18:39:10+00:00) pulling image "myregistry.azurecr.io/helloacrtasks:v1"
(count: 1) (last timestamp: 2023-11-18 18:39:15+00:00) Successfully pulled image "myregistry.azurecr.io/helloacrtasks:v1"
(count: 1) (last timestamp: 2023-11-18 18:39:17+00:00) Created container
(count: 1) (last timestamp: 2023-11-18 18:39:17+00:00) Started container
Start streaming logs:
Server running at http://localhost:80
عند Server running at http://localhost:80 ظهور، انتقل إلى FQDN الخاص بالحاوية في المستعرض الخاص بك لمشاهدة التطبيق قيد التشغيل. يجب أن يتم عرض FQDN في إخراج الأمر الذي az container create قمت بتنفيذه في القسم السابق.
لفصل وحدة التحكم الخاصة بك من الحاوية، اضغط على Control+C.
تنظيف الموارد
أوقف مثيل الحاوية باستخدام الأمر az container delete على الأمر:
az container delete --resource-group $RES_GROUP --name acr-tasks
لإزالة جميع الموارد التي قمت بإنشائها في هذا البرنامج التعليمي، بما في ذلك سجل الحاوية، وخزنة المفاتيح، ومدير الخدمة، قم بإصدار الأوامر التالية. ومع ذلك، يتم استخدام هذه الموارد في البرنامج التعليمي التالي في السلسلة، لذلك قد ترغب في الاحتفاظ بها إذا انتقلت مباشرة إلى البرنامج التعليمي التالي.
az group delete --resource-group $RES_GROUP
az ad sp delete --id http://$ACR_NAME-pull
الخطوات التالية
الآن بعد أن اختبرت الحلقة الداخلية الخاصة بك مع مهمة سريعة، قم بتكوين مهمة بناء لتشغيل إنشاءات صور الحاوية عند الالتزام بالتعليمات البرمجية المصدر إلى مستودع Git: