Docker görevi

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

Genel Bakış

Betikte docker istemci ikili dosyasını doğrudan kullanmaya kıyasla Docker görevini kullanmanın temel avantajları aşağıda ve ardından ve hatta

  • 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 Docker kayıt defteri hizmet bağlantısının kullanımını kolaylaştırır. Oturum açtıktan sonra, kullanıcı Docker görevi tarafından zaten yapılan oturum açma bilgisinden yararlanarak görevleri/betikleri yürütmek için izleme görevleri yazar. Örneğin Docker görevini kullanarak herhangi bir Azure Container Registry ve ardından bu kayıt defterine görüntü derlemek ve itmek için sonraki bir görev/betik kullanabilirsiniz.

  • Etiket olarak eklenen meta veriler - Görev görüntüye izlenebilirlikle ilgili meta verileri aşağıdaki etiketler şeklinde 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

Görev Girişleri

Parametreler Description
command
Komut
(Gerekli) Olası değerler: buildAndPush , build , , pushlogin , logout
Sürüm 2.173.0'a eklendi: start , stop
Varsayılan değer: buildAndPush
containerRegistry
Kapsayıcı kayıt defteri
(İsteğe bağlı) Docker kayıt defteri hizmet bağlantısının adı
repository
Depo
(İsteğe bağlı) Kapsayıcı kayıt defteri içinde giriş olarak belirtilen Docker kayıt defteri hizmet bağlantısına karşılık gelen deponun adı containerRegistry
container
Kapsayıcı
(Komutlar ve start için stop gereklidir) Başlat veya durduracak kapsayıcı kaynağı
tags
Etiketler
(İsteğe bağlı) Her satırın , veya komutlarında kullanılacak bir etiket içerdiği build çok push satırlı buildAndPush giriş
Varsayılan değer: $(Build.BuildId)
Dockerfile
Dockerfile
(İsteğe bağlı) Dockerfile'ın yolu. Görev, görüntüyü oluşturmak için bulduğu ilk dockerfile dosyasını kullanır.
Varsayılan değer: **/Dockerfile
buildContext
Derleme bağlamı
(İsteğe bağlı) Derleme bağlamının yolu
Varsayılan değer: **
arguments
Bağımsız değişkenler
(İsteğe bağlı) Docker istemcisine geçirilen ek bağımsız değişkenler
parametresi için değer kullanırsanız buildAndPushcommand özelliğin arguments yoksayılır.
addPipelineData
İşlem Hattı Verileri Ekleme
(İsteğe bağlı) 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ığında Docker kayıt defteri hizmet bağlantısı kullanılarak kapsayıcı kayıt defteri oturum açma bilgileri yer almaktadır-

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

Derleme ve Itme

buildAndPush adlı kolaylık komutu, tek bir komutla görüntülerin derlemesini ve kapsayıcı kayıt defterine itmeye olanak sağlar. Aşağıdaki YAML kod parçacığı, bir görüntünün birden çok etiketlerini birden çok kayıt deftere ekleme ve itme ö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
    tags: |
      tag1
      tag2

Yukarıdaki kod parçacığında ve contosoRepository:tag1 görüntüleri, ve 'ye karşılık gelen kapsayıcı kayıt defterleri ile birlikte contosoRepository:tag2dockerRegistryServiceConnection1 ekleyebilirsiniz. dockerRegistryServiceConnection2

Bir kişi aynı anda tüm kimliği doğrulanmış kapsayıcı kayıt defterlerini oluşturmak ve buna itmek yerine belirli bir kimliği doğrulanmış kapsayıcı kayıt defteri oluşturmak ve bu kayıt defterine itmek istiyorsa, giriş aşağıda gösterildiği gibi açıkça containerRegistrycommand: buildAndPush 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ığında Docker kayıt defteri hizmet bağlantısı kullanılarak kapsayıcı kayıt defteri oturumu açma bilgileri yer almaktadır-

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

Başlatma/durdurma

Bu görev, iş ve hizmet kapsayıcılarını kontrol etmek için de kullanılabilir. Bu kullanım yaygın değildir, ancak bazen benzersiz durumlar için 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 istemci ikilisini kullanarak derleme veya anında komutlar için ek bağımsız değişkenler geçmek 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şkenleri girişi dışındaki tüm komutlar için buildAndPush değerlendirilir. Kolaylık buildAndPush komutu ( ve build ardından) push gibi, bu komut için giriş arguments yoksayılır.

Sorun giderme

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

buildAndPush komutuyla yapılandırılan Docker görevi, dahili olarak çalıştırılan derleme ve itme komutlarına belirsiz hale geldiklerine göre geçirilen bağımsız değişkenleri yoksayıyor. Komutlarınızı ayrı derleme ve itme adımlarına bölerek uygun bağımsız değişkenleri geçebilirsiniz. Örneğin bu stackoverflow gönderisini bakın.

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

Azure SPN kimlik bilgilerinizi kullanarak bir Docker kayıt defteri hizmeti bağlantısı oluşturabilirsiniz. Kayıt Defteri türünden Diğer'i seçin ve ayrıntıları aşağıdaki gibi sağlar:

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, üzerinde açık kaynak GitHub. Geri bildirim ve katkılar açıktır.