Docker@2 - Docker v2 görevi

Docker görüntüleri oluşturun veya gönderin, oturum açın veya oturumu kapatın, kapsayıcıları başlatın veya durdurun ya da bir Docker komutu çalıştırın.

Docker görüntülerini derleyin veya gönderin, oturum açın veya oturumu kapatın ya da bir Docker komutu çalıştırın.

Syntax

# 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.

Girişler

containerRegistry - Kapsayıcı kayıt defteri
string.

Docker kayıt defteri hizmeti bağlantısının adı. Kayıt defteriyle kimlik doğrulaması gerçekleştiren komutlar için gereklidir.


repository - Kapsayıcı deposu
string. İsteğe bağlı. olduğunda command != login && command != logout && command != start && command != stopkullanın.

Deponun adını belirtir.


repository - Kapsayıcı deposu
string. İsteğe bağlı. olduğunda command != login && command != logoutkullanın.

Deponun adını belirtir.


command - Komut
string. Gereklidir. İzin verilen değerler: buildAndPush, build, push, login, , logout, start, stop. Varsayılan değer: buildAndPush.

Çalıştırılacak Docker komutunu belirtir.


command - Komut
string. Gereklidir. İzin verilen değerler: buildAndPush, build, push, login, logout. Varsayılan değer: buildAndPush.

Çalıştırılacak Docker komutunu belirtir.


Dockerfile - Dockerfile
string. olduğunda command = build || command = buildAndPushgereklidir. Varsayılan değer: **/Dockerfile.

Docker dosyasının yolunu belirtir. Görev, görüntüyü oluşturmak için bulduğu ilk Docker dosyasını kullanır.


buildContext - Derleme bağlamı
string. İsteğe bağlı. olduğunda command = build || command = buildAndPushkullanın. Varsayılan değer: **.

Derleme bağlamı yolunu belirtir. Docker dosyasını içeren dizini belirtmek için geçirin ** .


tags - Etiketler
string. İsteğe bağlı. olduğunda command = build || command = push || command = buildAndPushkullanın. Varsayılan değer: $(Build.BuildId).

Virgülle ayrılmış etiketlerin listesini belirtir. Bu etiketler , push ve buildAndPush komutlarında buildkullanılır.


arguments - Bağımsız değişken
string. İsteğe bağlı. olduğunda command != login && command != logout && command != buildAndPushkullanın.

Docker istemcisine geçirilecek ek bağımsız değişkenleri belirtir. Komut parametresinin değeri buildAndPush kullanılıyorsa arguments özelliği yoksayılır.

Örnek: derleme komutunu kullanarak. --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet


addPipelineData - Görüntülere İşlem hattı meta verileri ekleme
boolean. Varsayılan değer: true.

Varsayılan olarak, kaynak dal adı veya derleme kimliği gibi işlem hattı verileri eklenir ve izlenebilirliğe yardımcı olur. Örneğin, görüntüyü hangi işlem hattının derlediğini bulmak için bir görüntüyü inceleyebilirsiniz. Bu varsayılan davranışı geri çevirebilirsiniz.


addBaseImageData - Görüntülere temel görüntü meta verileri ekleme
boolean. Varsayılan değer: true.

Varsayılan olarak, temel görüntü adı veya özet gibi temel görüntü verileri eklenir ve izlenebilirliğe yardımcı olur. Bu varsayılan davranışı geri çevirebilirsiniz.


container - Kapsayıcı
string. İsteğe bağlı. olduğunda command = start || command = stopkullanın.

Başlatacak veya durdurulacak kapsayıcı kaynağının adını belirtir. Bu komutu ve stop komutları ile start kullanın.


Görev denetim seçenekleri

Tüm görevlerde görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz . Denetim seçenekleri ve ortak görev özellikleri.

Çıkış değişkenleri

Bu görev aşağı akış adımlarında, işlerde ve aşamalarda kullanabileceğiniz aşağıdaki çıkış değişkenlerini tanımlar.

DockerOutput
Komut çıkışını içeren dosyaların yolunu belirtir. komut için ayrı satırlarda iki dosya yolunu ve diğer komutlar için buildAndPush bir dosya yolunu listeleyebilirsiniz.

Açıklamalar

Docker istemci ikili dosyasını doğrudan bir betikte kullanmak yerine Docker görevini kullanmanın temel avantajları aşağıdadır.

  • Docker kayıt defteri hizmeti bağlantısıyla tümleştirme - Görev, herhangi bir kapsayıcı kayıt defterine bağlanmak için Docker kayıt defteri hizmeti bağlantısının kullanılmasını kolaylaştırır. Oturum açtıktan sonra, Docker görevi tarafından kullanılan oturum açmadan yararlanarak diğer görevleri veya betikleri yürüten izleme görevleri ekleyebilirsiniz. Örneğin, herhangi bir Azure Container Registry oturum açmak için Docker görevini kullanın ve ardından kayıt defterine görüntü oluşturup göndermek için başka bir görev veya betik kullanın.

  • Etiket olarak eklenen meta veriler - Görev, aşağıdaki etiketlerde görüntüye izlenebilirlikle ilgili meta veriler ekler -

    • 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

Sorun giderme

Docker görevi neden buildAndPush komutuna geçirilen bağımsız değişkenleri yoksayıyor?

buildAndPush komutu kullanılarak yapılandırılan Docker görevi geçirilen bağımsız değişkenleri yoksayar çünkü bunlar iç oluşturma ve gönderme komutlarında belirsiz hale gelir. Komutunuzu ayrı oluşturma ve gönderme adımlarına bölebilir ve uygun bağımsız değişkenleri geçirebilirsiniz. Örneğin, bu stackoverflow gönderisine bakın.

DockerV2 yalnızca Docker kayıt defteri hizmeti bağlantısını destekler ve ARM hizmet bağlantısını desteklemez. Docker görevinde kimlik doğrulaması için mevcut bir Azure hizmet sorumlusunu (SPN) nasıl kullanabilirim?

Azure SPN kimlik bilgilerinizi kullanarak Docker kayıt defteri hizmet bağlantısı oluşturamazsınız. Kayıt defteri türü olarak diğerlerini seçin ve ayrıntıları aşağıdaki gibi sağlayın:

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

Örnekler

Oturum aç

Aşağıdaki YAML kod parçacığında Docker kayıt defteri hizmeti bağlantısı kullanılarak bir kapsayıcı kayıt defteri oturum açma işlemi gösterilmektedir.

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

Derleme ve Gönderme

adlı buildAndPush bir kolaylık komutu, görüntülerin tek bir komutla derlenip kapsayıcı kayıt defterine gönderimini sağlar.

Aşağıdaki YAML kod parçacığı, bir görüntünün birden çok etiketini oluşturup birden çok kayıt defterine gönderme örneğidir.

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

Yukarıdaki kod parçacığında, ve görüntüleri contosoRepository:tag1contosoRepository:tag2 oluşturulur ve ve dockerRegistryServiceConnection2öğesine karşılık gelen kapsayıcı kayıt defterlerine dockerRegistryServiceConnection1 iletilir.

Kimliği doğrulanmış tüm kapsayıcı kayıt defterlerini aynı anda oluşturmak ve göndermek yerine belirli bir kimliği doğrulanmış kapsayıcı kayıt defteri oluşturmak ve göndermek istiyorsanız, girişi command: buildAndPush gösterildiği gibi açıkça belirtincontainerRegistry:

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

Oturumu Kapat

Aşağıdaki YAML kod parçacığı, Docker kayıt defteri hizmet bağlantısı kullanarak bir kapsayıcı kayıt defterinden nasıl çıkış yapılacağını gösterir.

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

Başlat/durdur

İş ve hizmet kapsayıcılarını denetlemek için bu görevi kullanın. Bu kullanım nadirdir, ancak bazen benzersiz koşullarda kullanılır.

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

Diğer komutlar ve bağımsız değişkenler

Komut ve bağımsız değişken girişleri, örnekte gösterildiği gibi Docker istemci ikili dosyasını kullanarak derleme veya gönderme komutları için ek bağımsız değişkenler geçirmek için kullanılır.

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

Not

Bağımsız değişken girişi dışındaki buildAndPushtüm komutlar için değerlendirilir. buildAndPush bir kolaylık komutudur (build ve ardından push), arguments kullanıldığında giriş yoksayılır.

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalıştırılır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü 2.172.0 veya üzeri
Görev kategorisi Oluşturma
Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalıştırılır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü Desteklenen tüm aracı sürümleri.
Görev kategorisi Yapı