Docker görevi

Docker kayıt defteri hizmet bağlantısını kullanarak herhangi bir kapsayıcı kayıt defterine Docker görüntüleri derlemek ve göndermek için bu görevi kullanın.

Genel Bakış

Komut dosyasında Docker Client ikilisini doğrudan kullanmaya kıyasla Docker görevi kullanmanın başlıca avantajları aşağıda verilmiştir.

  • Docker kayıt defteri hizmet bağlantısıyla tümleştirme -görev, herhangi bir kapsayıcı kayıt defterine bağlanmak Için bir Docker kayıt defteri hizmet bağlantısı kullanmayı kolaylaştırır. Oturum açıldıktan sonra, Kullanıcı, Docker görevi tarafından daha önce yapılan oturum açma özelliğinden yararlanarak herhangi bir görevi/komut dosyasını yürütmek için izleyen görevleri yazabilir. Örneğin, Docker görevini herhangi bir Azure Container Registry oturum açmak için kullanabilir ve ardından bu kayıt defterine görüntü derlemek ve göndermek için sonraki bir görevi/betiği kullanabilirsiniz.

  • Etiketler olarak eklenen meta veriler -görev, aşağıdaki Etiketler biçiminde görüntüye izlenebilirlik ile ilgili meta verileri 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 'si
    • com.azure.dev.image.sysdıtem. teamfoundationcollectionuri
    • com.azure.dev.image.sysdıtem. TeamProject

Görev girişleri

Parametreler Description
command
Komut
Istenir Olası değerler: buildAndPush , build , push , login , logout
2.173.0 sürümüne eklendi: start , stop
Varsayılan değer: buildAndPush
containerRegistry
Kapsayıcı kayıt defteri
Seçim Docker kayıt defteri hizmet bağlantısının adı
repository
Depo
Seçim Kapsayıcı kayıt defteri içindeki, için giriş olarak belirtilen Docker kayıt defteri hizmet bağlantısına karşılık gelen deponun adı containerRegistry
container
Kapsayıcı
(Komutları start ve stop ) başlatılacak veya durdurulacak kapsayıcı kaynağı
tags
Etiketler
Seçim Her satırın içinde kullanılacak bir etiket içerdiği çok satırlı giriş build push veya buildAndPush Komutlar
Varsayılan değer: $(Build.BuildId)
Dockerfile
Dockerfile
Seçim Dockerfile yolu. Görev, görüntüyü oluşturmak için bulduğu ilk dockerfile 'ı kullanır.
Varsayılan değer: **/Dockerfile
buildContext
Derleme bağlamı
Seçim Yapı bağlamının yolu
Varsayılan değer: **
arguments
Bağımsız değişkenler
Seçim Docker istemcisine geçirilecek ek bağımsız değişkenler
buildAndPushParametresi için değer kullanırsanız command , arguments özelliğin yoksayılacağını unutmayın.
addPipelineData
İşlem hattı verileri ekleme
Seçim Yukarıdaki belirtilen meta verileri görüntüye Etiketler olarak ekler
Olası değerler: true , false
Varsayılan değer: true

Oturum aç

Aşağıdaki YAML kod parçacığı Vitrini, Docker kayıt defteri hizmet bağlantısı kullanarak kapsayıcı kayıt defteri oturum açma

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

Derleme ve gönderme

BuildAndPush adlı bir kullanışlı komut, tek bir komutta resimlerin derleme ve kapsayıcı kayıt defterine gönderimi için izin verir. Aşağıdaki YAML kod parçacığı, bir görüntünün birden çok etiketini birden çok kayıt defterlerine oluşturmaya ve göndermeye yönelik bir örnektir.

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
    tags: |
      tag1
      tag2

Yukarıdaki kod parçacığında görüntüler contosoRepository:tag1 ve ve ' a contosoRepository:tag2 karşılık gelen kapsayıcı kayıt defterlerine oluşturulup gönderilir dockerRegistryServiceConnection1 dockerRegistryServiceConnection2 .

Tek seferde tüm kimliği doğrulanmış kapsayıcı kayıt defterlerine derlemek ve göndermek yerine kimlik doğrulaması yapılmış bir kapsayıcı kayıt defteri oluşturmak ve göndermek istiyorsa, containerRegistry giriş command: buildAndPush aşağıda gösterildiği gibi açıkça belirtilebilir

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ığı Vitrini, Docker kayıt defteri hizmet bağlantısı kullanarak oturum kapatma

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

Başlat/Durdur

Bu görev, iş ve hizmet kapsayıcılarını denetlemek için de kullanılabilir. Bu kullanım yaygın bir durumdur, 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, aşağıda gösterildiği gibi Docker Client ikilisini kullanarak derleme veya gönderme komutlarına ek bağımsız değişkenler geçirmek için kullanılabilir.

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

Not

Bağımsız değişkenler girişi hariç tüm komutlar için değerlendirilir buildAndPush . buildAndPushBu, kullanışlı bir komuttur ( build sonrasında push ), arguments Bu komut için giriş yok sayılır.

Sorun giderme

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

BuildAndPush komutuyla yapılandırılan Docker görevi, dahili olarak çalıştırılan derleme ve anında iletme komutlarına belirsiz hale geldiklerinden, geçirilen bağımsız değişkenleri yoksayar. Komutınızı ayrı derleme ve gönderme adımlarına bölebilir ve uygun bağımsız değişkenleri geçirebilirsiniz. Örneğin bu StackOverflow gönderisini inceleyin.

DockerV2 yalnızca Docker kayıt defteri hizmet bağlantısını destekler ve ARM hizmeti 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 bir Docker kayıt defteri hizmet bağlantısı oluşturabilirsiniz. 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

Açık kaynak

Bu görev GitHub 'daaçık kaynaktır. Geribildirim ve katılımlar hoş geldiniz.