Docker@2 - Tugas Docker v2

Buat atau dorong gambar Docker, masuk atau keluar, mulai atau hentikan kontainer, atau jalankan perintah Docker.

Buat atau dorong gambar Docker, masuk atau keluar, atau jalankan perintah Docker.

Sintaks

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

Input

containerRegistry - Registri kontainer
string.

Nama koneksi layanan registri Docker. Diperlukan untuk perintah yang melakukan autentikasi dengan registri.


repository - Repositori kontainer
string. Pilihan. Gunakan saat command != login && command != logout && command != start && command != stop.

Menentukan nama repositori.


repository - Repositori kontainer
string. Opsional. Gunakan saat command != login && command != logout.

Menentukan nama repositori.


command - Perintah
string. Wajib diisi. Nilai yang diizinkan: buildAndPush, , pushbuild, login, logout, start, stop. Nilai default: buildAndPush.

Menentukan perintah Docker untuk dijalankan.


command - Perintah
string. Wajib diisi. Nilai yang diizinkan: buildAndPush, build, push, login, logout. Nilai default: buildAndPush.

Menentukan perintah Docker untuk dijalankan.


Dockerfile - Dockerfile
string. Diperlukan saat command = build || command = buildAndPush. Nilai default: **/Dockerfile.

Menentukan jalur ke file Docker. Tugas ini menggunakan file Docker pertama yang ditemukannya untuk membangun gambar.


buildContext - Konteks build
string. Pilihan. Gunakan saat command = build || command = buildAndPush. Nilai default: **.

Menentukan jalur ke konteks build. Teruskan ** untuk menunjukkan direktori yang berisi file Docker.


tags - Tags
string. Pilihan. Gunakan saat command = build || command = push || command = buildAndPush. Nilai default: $(Build.BuildId).

Menentukan daftar tag yang dipisahkan koma. Tag ini digunakan dalam buildperintah , dan pushbuildAndPush .


arguments - Argumen
string. Opsional. Gunakan saat command != login && command != logout && command != buildAndPush.

Menentukan argumen tambahan untuk diteruskan ke klien Docker. Jika menggunakan nilai buildAndPush untuk parameter perintah, properti argumen diabaikan.

Contoh: Menggunakan perintah build, --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet.


addPipelineData - Menambahkan metadata Alur ke gambar
boolean. Nilai default: true.

Secara default, data alur seperti nama cabang sumber, atau ID build ditambahkan dan membantu keterlacakan. Misalnya, Anda dapat memeriksa gambar untuk mengetahui alur mana yang membangun gambar. Anda dapat menolak perilaku default ini.


addBaseImageData - Menambahkan metadata gambar dasar ke gambar
boolean. Nilai default: true.

Secara default, data gambar dasar seperti nama gambar dasar, atau hash ditambahkan dan membantu keterlacakan. Anda dapat menolak perilaku default ini.


container - Wadah
string. Pilihan. Gunakan saat command = start || command = stop.

Menentukan nama sumber daya kontainer untuk memulai atau berhenti. Gunakan perintah ini dengan start perintah dan stop .


Opsi kontrol tugas

Semua tugas memiliki opsi kontrol selain input tugas mereka. Untuk informasi selengkapnya, lihat Opsi kontrol dan properti tugas umum.

Variabel output

Tugas ini mendefinisikan variabel output berikut, yang dapat Anda konsumsi dalam langkah-langkah hilir, pekerjaan, dan tahapan.

DockerOutput
Menentukan jalur ke file yang berisi output perintah. Anda dapat mencantumkan dua jalur file pada baris terpisah untuk buildAndPush perintah, dan satu jalur file untuk perintah lainnya.

Keterangan

Berikut ini adalah manfaat utama menggunakan tugas Docker alih-alih secara langsung menggunakan biner klien Docker dalam skrip.

  • Integrasi dengan koneksi layanan registri Docker - Tugas ini memudahkan penggunaan koneksi layanan registri Docker untuk menyambungkan ke registri kontainer apa pun. Setelah masuk, Anda dapat menambahkan tugas tindak lanjut yang menjalankan tugas atau skrip lain dengan memanfaatkan masuk yang digunakan oleh tugas Docker. Misalnya, gunakan tugas Docker untuk masuk ke Azure Container Registry apa pun, lalu gunakan tugas atau skrip lain untuk membangun dan mendorong gambar ke registri.

  • Metadata ditambahkan sebagai label - Tugas menambahkan metadata terkait keterlacakan ke gambar dalam label berikut -

    • 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

Pemecahan Masalah

Mengapa tugas Docker mengabaikan argumen yang diteruskan ke perintah buildAndPush?

Tugas Docker yang dikonfigurasi menggunakan perintah buildAndPush mengabaikan argumen yang diteruskan karena menjadi ambigu ke perintah build dan dorong internal. Anda dapat membagi perintah menjadi langkah-langkah build dan dorong terpisah dan meneruskan argumen yang sesuai. Misalnya, lihat postingan stackoverflow ini.

DockerV2 hanya mendukung koneksi layanan registri Docker dan tidak mendukung koneksi layanan ARM. Bagaimana cara menggunakan perwakilan layanan Azure (SPN) yang sudah ada untuk autentikasi dalam tugas Docker?

Anda dapat membuat koneksi layanan registri Docker menggunakan info masuk Azure SPN Anda. Pilih yang lain dari jenis Registri dan berikan detailnya sebagai berikut:

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

Contoh

Masuk

Cuplikan YAML berikut menunjukkan masuk registri kontainer menggunakan koneksi layanan registri Docker.

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

Bangun dan Dorong

Perintah kenyamanan yang disebut buildAndPush memungkinkan build dan dorongan gambar ke registri kontainer dalam satu perintah.

Cuplikan YAML berikut adalah contoh membangun dan mendorong beberapa tag gambar ke beberapa registri.

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

Dalam cuplikan di atas, gambar contosoRepository:tag1 dan contosoRepository:tag2 dibangun dan didorong ke registri kontainer yang sesuai dengan dockerRegistryServiceConnection1 dan dockerRegistryServiceConnection2.

Jika Anda ingin membangun dan mendorong ke registri kontainer tertentu yang diautentikasi alih-alih membangun dan mendorong ke semua registri kontainer terautentikasi sekaligus, tentukan input secara eksplisit dengan command: buildAndPush seperti yang containerRegistry ditunjukkan:

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

Keluar

Cuplikan YAML berikut menunjukkan cara keluar dari registri kontainer menggunakan koneksi layanan registri Docker.

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

Mulai/berhenti

Gunakan tugas ini untuk mengontrol pekerjaan dan kontainer layanan. Penggunaan ini jarang terjadi, tetapi kadang-kadang digunakan dalam keadaan unik.

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

Perintah dan argumen lainnya

Input perintah dan argumen digunakan untuk meneruskan argumen tambahan untuk perintah build atau push menggunakan biner klien Docker seperti yang ditunjukkan dalam contoh.

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

Catatan

Input argumen dievaluasi untuk semua perintah kecuali buildAndPush. buildAndPush adalah perintah kenyamanan (build diikuti oleh push), arguments input diabaikan ketika digunakan.

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen 2.172.0 atau lebih tinggi
Kategori tugas Build
Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen Semua versi agen yang didukung.
Kategori tugas Build