التشغيل السريع: إنشاء وتشغيل صورة حاوية باستخدام مهام تسجيل الحاوية في Azure

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

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

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

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

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

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

إذا لم يكن لديك سجل حاوية بالفعل، فأنشئ أولا مجموعة موارد باستخدام الأمر az group create . مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها.

في المثال التالي، سيتم إنشاء مجموعة موارد باسم myResourceGroup في موقع eastus.

az group create --name myResourceGroup --location eastus

إنشاء سجل حاويات

إنشاء سجل حاوية باستخدام الأمر az acr create . يجب أن يكون اسم السجل فريداً داخل Azure، وأن يحتوي على 5 إلى 50 حرفاً أبجدياً رقمياً. في المثال التالي، يتم استخدام mycontainerregistry008 . قم بتحديث هذا إلى قيمة فريدة.

az acr create --resource-group myResourceGroup \
  --name mycontainerregistry008 --sku Basic

ينشئ هذا المثال سجلا أساسيا ، وهو خيار محسن التكلفة للمطورين الذين يتعلمون عن Azure Container Registry. للحصول على تفاصيل حول مستويات الخدمة المتوفرة، راجع مستويات خدمة تسجيل الحاوية.

قم بإنشاء صورة ودفعها من Dockerfile

الآن استخدام سجل حاوية Azure لإنشاء صورة ودفعها. أولا، قم بإنشاء دليل عمل محلي ثم قم بإنشاء Dockerfile باسم Dockerfile باستخدام السطر الفردي: FROM mcr.microsoft.com/hello-world. هذا مثال بسيط لإنشاء صورة حاوية Linux من الصورة المستضافة hello-world في Microsoft Container Registry. يمكنك إنشاء Dockerfile القياسي الخاص بك وبناء الصور لأنظمة أساسية أخرى. إذا كنت تعمل في shell bash، فقم بإنشاء Dockerfile بالأمر التالي:

echo "FROM mcr.microsoft.com/hello-world" > Dockerfile

قم بتشغيل الأمر az acr build، الذي ينشئ الصورة، وبعد إنشاء الصورة بنجاح، يدفعها إلى السجل الخاص بك. ينشئ المثال التالي الصورة ويدفعها sample/hello-world:v1 . في . نهاية الأمر يعين موقع Dockerfile، في هذه الحالة الدليل الحالي.

az acr build --image sample/hello-world:v1 \
  --registry mycontainerregistry008 \
  --file Dockerfile . 

يأتي الإخراج من البناء والدفع الناجحين للصورة مشابهًا لما يلي:

Packing source code into tar to upload...
Uploading archived source code from '/tmp/build_archive_b0bc1e5d361b44f0833xxxx41b78c24e.tar.gz'...
Sending context (1.856 KiB) to registry: mycontainerregistry008...
Queued a build with ID: ca8
Waiting for agent...
2019/03/18 21:56:57 Using acb_vol_4c7ffa31-c862-4be3-xxxx-ab8e615c55c4 as the home volume
2019/03/18 21:56:57 Setting up Docker configuration...
2019/03/18 21:56:58 Successfully set up Docker configuration
2019/03/18 21:56:58 Logging in to registry: mycontainerregistry008.azurecr.io
2019/03/18 21:56:59 Successfully logged into mycontainerregistry008.azurecr.io
2019/03/18 21:56:59 Executing step ID: build. Working directory: '', Network: ''
2019/03/18 21:56:59 Obtaining source code and scanning for dependencies...
2019/03/18 21:57:00 Successfully obtained source code and scanned for dependencies
2019/03/18 21:57:00 Launching container with name: build
Sending build context to Docker daemon  13.82kB
Step 1/1 : FROM mcr.microsoft.com/hello-world
latest: Pulling from hello-world
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586fxxxx21577a99efb77324b0fe535
Successfully built fce289e99eb9
Successfully tagged mycontainerregistry008.azurecr.io/sample/hello-world:v1
2019/03/18 21:57:01 Successfully executed container: build
2019/03/18 21:57:01 Executing step ID: push. Working directory: '', Network: ''
2019/03/18 21:57:01 Pushing image: mycontainerregistry008.azurecr.io/sample/hello-world:v1, attempt 1
The push refers to repository [mycontainerregistry008.azurecr.io/sample/hello-world]
af0b15c8625b: Preparing
af0b15c8625b: Layer already exists
v1: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
2019/03/18 21:57:03 Successfully pushed image: mycontainerregistry008.azurecr.io/sample/hello-world:v1
2019/03/18 21:57:03 Step ID: build marked as successful (elapsed time in seconds: 2.543040)
2019/03/18 21:57:03 Populating digests for step ID: build...
2019/03/18 21:57:05 Successfully populated digests for step ID: build
2019/03/18 21:57:05 Step ID: push marked as successful (elapsed time in seconds: 1.473581)
2019/03/18 21:57:05 The following dependencies were found:
2019/03/18 21:57:05
- image:
    registry: mycontainerregistry008.azurecr.io
    repository: sample/hello-world
    tag: v1
    digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
  runtime-dependency:
    registry: registry.hub.docker.com
    repository: library/hello-world
    tag: v1
    digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
  git: {}

Run ID: ca8 was successful after 10s

تشغيل الصورة

الآن شغّل الصورة التي بنيتها ودفعت بها إلى السجل الخاص بك بسرعة. هنا يمكنك استخدام az acr run لتشغيل أمر الحاوية. في سير عمل تطوير الحاوية، قد تكون هذه خطوة التحقق من الصحة قبل نشر الصورة، أو يمكنك تضمين الأمر في ملف YAML متعدد الخطوات.

يستخدم المثال التالي $Registry لتحديد نقطة نهاية السجل حيث تقوم بتشغيل الأمر:

az acr run --registry mycontainerregistry008 \
  --cmd '$Registry/sample/hello-world:v1' /dev/null

تشغل cmd المعلمة في هذا المثال الحاوية في تكوينها الافتراضي، ولكنها cmd تدعم معلمات إضافية docker run أو حتى أوامر أخرى docker .

الإخراج مشابه لما يلي:

Packing source code into tar to upload...
Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'...
Sending context (1.855 KiB) to registry: mycontainerre...
Queued a run with ID: cab
Waiting for an agent...
2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume
2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge'
2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network
2019/03/19 19:01:53 Setting up Docker configuration...
2019/03/19 19:01:54 Successfully set up Docker configuration
2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io
2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io
2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
2019/03/19 19:01:55 Launching container with name: acb_step_0

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

2019/03/19 19:01:56 Successfully executed container: acb_step_0
2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801)

Run ID: cab was successful after 6s

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

عند عدم الحاجة، يمكنك استخدام الأمر az group delete لإزالة مجموعة الموارد وسجل الحاوية وصور الحاوية المخزنة هناك.

az group delete --name myResourceGroup

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

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