Aracılığıyla paylaş


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üleri oluşturun veya gönderin, oturum açın veya oturumu kapatın ya da bir Docker komutu çalıştırın.

Sözdizimi

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

Girişler

kapsayıcı kayıt deftericontainerRegistry -
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. Opsiyonel. command != login && command != logout && command != start && command != stopolduğunda kullanın.

Deponun adını belirtir.


repository - Kapsayıcı deposu
string. Opsiyonel. command != login && command != logoutolduğunda kullanın.

Deponun adını belirtir.


command - Komut
string. Gerekli. İ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. Gerekli. İzin verilen değerler: buildAndPush, build, push, login, logout. Varsayılan değer: buildAndPush.

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


DockerfileDockerfile -
string. command = build || command = buildAndPushgerekir. 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. Opsiyonel. command = build || command = buildAndPusholduğunda kullanın. Varsayılan değer: **.

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


tags - Etiketleri
string. Opsiyonel. command = build || command = push || command = buildAndPusholduğunda kullanın. Varsayılan değer: $(Build.BuildId).

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


bağımsız değişkenleriarguments -
string. Opsiyonel. command != login && command != logout && command != buildAndPusholduğunda kullanın.

Docker istemcisine geçirecek ek bağımsız değişkenleri belirtir. Komut parametresi için buildAndPush değeri 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 izlenebilirlik konusunda 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 izlenebilirlik konusunda yardımcı olur. Bu varsayılan davranışı geri çevirebilirsiniz.


kapsayıcıcontainer -
string. Opsiyonel. command = start || command = stopolduğunda kullanın.

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


Görev denetimi seçenekleri

Tüm görevlerin, 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örevaşağıdaki çıkış değişkenlerini tanımlar. Bu değişkenleri aşağı akış adımlarında, işlerde ve aşamalarda kullanabilirsiniz.

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

Açıklamalar

Aşağıda, docker istemci ikili dosyasını doğrudan bir betikte kullanmak yerine Docker görevini kullanmanın temel avantajları yer alı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'de 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 bir Docker görevi, iç derleme ve gönderme komutları için belirsiz hale geldiği için geçirilen bağımsız değişkenleri yoksayar. 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ünden 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 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

buildAndPush adlı bir convenience komutu, görüntülerin tek bir komutla derlenip kapsayıcı kayıt defterine gönderilip gönderilip oluşturulmasını sağlar.

Aşağıdaki YAML kod parçacığı, bir görüntünün birden çok etiketini birden çok kayıt defterine derleme ve 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 görüntüler contosoRepository:tag1 ve contosoRepository:tag2 oluşturulur ve dockerRegistryServiceConnection1 ve dockerRegistryServiceConnection2karşılık gelen kapsayıcı kayıt defterlerine 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, containerRegistry ile command: buildAndPush girişini açıkça belirtin:

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

Oturumu kapatma

Aşağıdaki YAML kod parçacığı, Docker kayıt defteri hizmeti 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 durumlarda 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

Uyarı

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

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Agent, DeploymentGroup
Talepleri Hiç kimse
Özellikleri Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi bir
Ayarlanabilir değişkenleri Herhangi bir
Aracı sürümü 2.172.0 veya üzeri
Görev kategorisi İnşa et
Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalışır Agent, DeploymentGroup
Talepleri Hiç kimse
Özellikleri Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi bir
Ayarlanabilir değişkenleri Herhangi bir
Aracı sürümü Desteklenen tüm aracı sürümleri.
Görev kategorisi İnşa et