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
, , push
build
, 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 build
perintah , dan push
buildAndPush
.
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 |