Docker@2 - مهمة Docker v2

إنشاء صور Docker أو دفعها، أو تسجيل الدخول أو تسجيل الخروج، أو بدء تشغيل الحاويات أو إيقافها، أو تشغيل أمر Docker.

إنشاء صور Docker أو دفعها، أو تسجيل الدخول أو تسجيل الخروج، أو تشغيل أمر Docker.

بناء الجملة

# Docker v2
# Build or push Docker images, login or logout, start or stop containers, or run a Docker command.
- task: Docker@2
  inputs:
  # Container Repository
    #containerRegistry: # string. Container registry. 
    #repository: # string. Optional. Use when command != login && command != logout && command != start && command != stop. Container repository. 
  # Commands
    command: 'buildAndPush' # 'buildAndPush' | 'build' | 'push' | 'login' | 'logout' | 'start' | 'stop'. Required. Command. Default: buildAndPush.
    Dockerfile: '**/Dockerfile' # string. Required when command = build || command = buildAndPush. Dockerfile. Default: **/Dockerfile.
    #buildContext: '**' # string. Optional. Use when command = build || command = buildAndPush. Build context. Default: **.
    #tags: '$(Build.BuildId)' # string. Optional. Use when command = build || command = push || command = buildAndPush. Tags. Default: $(Build.BuildId).
    #arguments: # string. Optional. Use when command != login && command != logout && command != buildAndPush. Arguments. 
    #addPipelineData: true # boolean. Add Pipeline metadata to image(s). Default: true.
    #addBaseImageData: true # boolean. Add base image metadata to image(s). Default: true.
    #container: # string. Optional. Use when command = start || command = stop. Container.
# Docker v2
# Build or push Docker images, login or logout, start or stop containers, or run a Docker command.
- task: Docker@2
  inputs:
  # Container Repository
    #containerRegistry: # string. Container registry. 
    #repository: # string. Optional. Use when command != login && command != logout && command != start && command != stop. Container repository. 
  # Commands
    command: 'buildAndPush' # 'buildAndPush' | 'build' | 'push' | 'login' | 'logout' | 'start' | 'stop'. Required. Command. Default: buildAndPush.
    Dockerfile: '**/Dockerfile' # string. Required when command = build || command = buildAndPush. Dockerfile. Default: **/Dockerfile.
    #buildContext: '**' # string. Optional. Use when command = build || command = buildAndPush. Build context. Default: **.
    #tags: '$(Build.BuildId)' # string. Optional. Use when command = build || command = push || command = buildAndPush. Tags. Default: $(Build.BuildId).
    #arguments: # string. Optional. Use when command != login && command != logout && command != buildAndPush. Arguments. 
    #addPipelineData: true # boolean. Add Pipeline metadata to image(s). Default: true.
    #container: # string. Optional. Use when command = start || command = stop. Container.
# Docker v2
# Build or push Docker images, login or logout, or run a Docker command.
- task: Docker@2
  inputs:
  # Container Repository
    #containerRegistry: # string. Container registry. 
    #repository: # string. Optional. Use when command != login && command != logout. Container repository. 
  # Commands
    command: 'buildAndPush' # 'buildAndPush' | 'build' | 'push' | 'login' | 'logout'. Required. Command. Default: buildAndPush.
    Dockerfile: '**/Dockerfile' # string. Required when command = build || command = buildAndPush. Dockerfile. Default: **/Dockerfile.
    #buildContext: '**' # string. Optional. Use when command = build || command = buildAndPush. Build context. Default: **.
    #tags: '$(Build.BuildId)' # string. Optional. Use when command = build || command = push || command = buildAndPush. Tags. Default: $(Build.BuildId).
    #arguments: # string. Optional. Use when command != login && command != logout && command != buildAndPush. Arguments. 
    #addPipelineData: true # boolean. Add Pipeline metadata to image(s). Default: true.
# Docker v2
# Build or push Docker images, login or logout, or run a Docker command.
- task: Docker@2
  inputs:
  # Container Repository
    #containerRegistry: # string. Container registry. 
    #repository: # string. Optional. Use when command != login && command != logout. Container repository. 
  # Commands
    command: 'buildAndPush' # 'buildAndPush' | 'build' | 'push' | 'login' | 'logout'. Required. Command. Default: buildAndPush.
    Dockerfile: '**/Dockerfile' # string. Required when command = build || command = buildAndPush. Dockerfile. Default: **/Dockerfile.
    #buildContext: '**' # string. Optional. Use when command = build || command = buildAndPush. Build context. Default: **.
    #tags: '$(Build.BuildId)' # string. Optional. Use when command = build || command = push || command = buildAndPush. Tags. Default: $(Build.BuildId).
    #arguments: # string. Optional. Use when command != login && command != logout && command != buildAndPush. Arguments.

الإدخالات

containerRegistry - سجل الحاوية
string.

اسم اتصال خدمة تسجيل Docker. مطلوب للأوامر التي تقوم بالمصادقة باستخدام سجل.


repository - مستودع الحاوية
string. ‏‏اختياري. استخدم عندما command != login && command != logout && command != start && command != stop.

يحدد اسم المستودع.


repository - مستودع الحاوية
string. ‏‏اختياري. استخدم عندما command != login && command != logout.

يحدد اسم المستودع.


command - الامر
string. مطلوب القيم المسموح بها: buildAndPush، build، push، login، logout، start. stop القيمة الافتراضية: buildAndPush.

يحدد أمر Docker للتشغيل.


command - الامر
string. مطلوب القيم المسموح بها: buildAndPush، build، push، login، logout. القيمة الافتراضية: buildAndPush.

يحدد أمر Docker للتشغيل.


Dockerfile - Dockerfile
string. مطلوب عند command = build || command = buildAndPush. القيمة الافتراضية: **/Dockerfile.

يحدد المسار إلى ملف Docker. تستخدم المهمة أول ملف Docker تجده لإنشاء الصورة.


buildContext - سياق الإنشاء
string. ‏‏اختياري. استخدم عندما command = build || command = buildAndPush. القيمة الافتراضية: **.

يحدد المسار إلى سياق الإنشاء. مرر ** للإشارة إلى الدليل الذي يحتوي على ملف Docker.


tags - العلامات
string. ‏‏اختياري. استخدم عندما command = build || command = push || command = buildAndPush. القيمة الافتراضية: $(Build.BuildId).

يحدد قائمة بالعلامات المفصولة بفواصل. يتم استخدام هذه العلامات في buildالأوامر و buildAndPushpush.


arguments - الحجج
string. ‏‏اختياري. استخدم عندما command != login && command != logout && command != buildAndPush.

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

مثال: باستخدام أمر الإنشاء، --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.


addPipelineData - إضافة بيانات تعريف البنية الأساسية لبرنامج ربط العمليات التجارية إلى الصورة (الصور)
boolean. القيمة الافتراضية: true.

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


addBaseImageData - إضافة بيانات تعريف الصورة الأساسية إلى الصورة (الصور)
boolean. القيمة الافتراضية: true.

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


container - حاويه
string. ‏‏اختياري. استخدم عندما command = start || command = stop.

يحدد اسم مورد الحاوية للبدء أو الإيقاف. استخدم هذا الأمر مع start الأوامر و stop .


خيارات التحكم بالمهمة

تحتوي جميع المهام على خيارات التحكم بالإضافة إلى مدخلات المهام الخاصة بها. لمزيد من المعلومات، راجع خيارات التحكم وخصائص المهمة الشائعة.

متغيرات الإخراج

تحدد هذه المهمة متغيرات الإخراج التالية، والتي يمكنك استهلاكها في خطوات انتقال البيانات من الخادم والوظائف والمراحل.

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

الملاحظات

فيما يلي الفوائد الرئيسية لاستخدام مهمة Docker بدلا من استخدام ثنائي عميل Docker مباشرة في برنامج نصي.

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

  • تمت إضافة بيانات التعريف كتسميات - تضيف المهمة بيانات التعريف المتعلقة بقابلية التتبع إلى الصورة في التسميات التالية -

    • com.azure.dev.image.build.buildnumber
    • com.azure.dev.image.build.builduri
    • com.azure.dev.image.build.definitionname
    • com.azure.dev.image.build.repository.name
    • com.azure.dev.image.build.repository.uri
    • com.azure.dev.image.build.sourcebranchname
    • com.azure.dev.image.build.sourceversion
    • com.azure.dev.image.release.definitionname
    • com.azure.dev.image.release.releaseid
    • com.azure.dev.image.release.releaseweburl
    • com.azure.dev.image.system.teamfoundationcollectionuri
    • com.azure.dev.image.system.teamproject

استكشاف الأخطاء وإصلاحها

لماذا تتجاهل مهمة Docker الوسيطات التي تم تمريرها إلى الأمر buildAndPush؟

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

يدعم DockerV2 اتصال خدمة تسجيل Docker فقط ولا يدعم اتصال خدمة ARM. كيف يمكنني استخدام كيان خدمة Azure (SPN) موجود للمصادقة في مهمة Docker؟

يمكنك إنشاء اتصال خدمة تسجيل Docker باستخدام بيانات اعتماد Azure SPN. اختر الآخرين من نوع التسجيل وقدم التفاصيل على النحو التالي:

Docker Registry:    Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID:          Service principal client ID
Password:           Service principal key

أمثلة

تسجيل الدخول

تعرض القصاصة البرمجية YAML التالية تسجيل دخول سجل الحاوية باستخدام اتصال خدمة سجل Docker.

- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1

الإنشاء والدفع

يسمح أمر الراحة المسمى buildAndPush ببناء الصور ودفعها إلى سجل حاوية في أمر واحد.

القصاصة البرمجية YAML التالية هي مثال على إنشاء ودفع علامات متعددة لصورة إلى سجلات متعددة.

steps:
- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1
- task: Docker@2
  displayName: Login to Docker Hub
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection2
- task: Docker@2
  displayName: Build and Push
  inputs:
    command: buildAndPush
    repository: contosoRepository # username/contosoRepository for DockerHub
    tags: |
      tag1
      tag2

في القصاصة البرمجية أعلاه، يتم إنشاء الصور contosoRepository:tag2contosoRepository:tag1 ودفعها إلى سجلات الحاوية المقابلة ل dockerRegistryServiceConnection1 وdockerRegistryServiceConnection2.

إذا كنت ترغب في إنشاء سجل حاوية مصادق عليه محدد ودفعه بدلا من إنشاء ودفع جميع سجلات الحاويات المصادق عليها في وقت واحد، فحدد containerRegistry الإدخال بشكل صريح مع command: buildAndPush كما هو موضح:

steps:
- task: Docker@2
  displayName: Build and Push
  inputs:
    command: buildAndPush
    containerRegistry: dockerRegistryServiceConnection1
    repository: contosoRepository
    tags: |
      tag1
      tag2

تسجيل الخروج

توضح القصاصة البرمجية YAML التالية كيفية تسجيل الخروج من سجل حاوية باستخدام اتصال خدمة سجل Docker.

- task: Docker@2
  displayName: Logout of ACR
  inputs:
    command: logout
    containerRegistry: dockerRegistryServiceConnection1

البدء/الإيقاف

استخدم هذه المهمة للتحكم في حاويات الوظائف والخدمة. هذا الاستخدام غير شائع، ولكنه يستخدم أحيانا في ظروف فريدة.

resources:
  containers:
  - container: builder
    image: ubuntu:18.04
steps:
- script: echo "I can run inside the container (it starts by default)"
  target:
    container: builder
- task: Docker@2
  inputs:
    command: stop
    container: builder
# any task beyond this point would not be able to target the builder container
# because it's been stopped

الأوامر والوسيطات الأخرى

يتم استخدام إدخالات الأوامر والوسيطات لتمرير وسيطات إضافية لأوامر الإنشاء أو الدفع باستخدام ثنائي عميل Docker كما هو موضح في المثال.

steps:
- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1
- task: Docker@2
  displayName: Build
  inputs:
    command: build
    repository: contosoRepository # username/contosoRepository for DockerHub
    tags: tag1
    arguments: --secret id=mysecret,src=mysecret.txt

ملاحظة

يتم تقييم إدخال الوسيطات لجميع الأوامر باستثناء buildAndPush. buildAndPush هو أمر ملائم (build متبوعا ب pusharguments يتم تجاهل الإدخال عند استخدامه.

المتطلبات

المتطلبات الوصف
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي
يعمل على Agent, DeploymentGroup
المطالب بلا
القدرات لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة.
قيود الأوامر أي
متغيرات Settable أي
إصدار الوكيل 2.172.0 أو أحدث
فئة المهمة البنية
المتطلبات الوصف
أنواع البنية الأساسية لبرنامج ربط العمليات التجارية YAML، الإصدار الكلاسيكي، الإصدار الكلاسيكي
يعمل على Agent, DeploymentGroup
المطالب بلا
القدرات لا تفي هذه المهمة بأي طلبات للمهام اللاحقة في الوظيفة.
قيود الأوامر أي
متغيرات Settable أي
إصدار الوكيل جميع إصدارات العامل المدعومة.
فئة المهمة البنية