Docker@2 — zadanie platformy Docker w wersji 2
Skompiluj lub wypchnij obrazy platformy Docker, zaloguj się lub wyloguj, uruchom lub zatrzymaj kontenery albo uruchom polecenie platformy Docker.
Skompiluj lub wypchnij obrazy platformy Docker, zaloguj się lub wyloguj lub uruchom polecenie platformy Docker.
Składnia
# 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.
Dane wejściowe
containerRegistry
-
Rejestr kontenerów
string
.
Nazwa połączenia usługi rejestru platformy Docker. Wymagane w przypadku poleceń wykonujących uwierzytelnianie za pomocą rejestru.
repository
-
Repozytorium kontenerów
string
. Opcjonalny. Użyj polecenia , gdy command != login && command != logout && command != start && command != stop
.
Określa nazwę repozytorium.
repository
-
Repozytorium kontenerów
string
. Opcjonalny. Użyj polecenia , gdy command != login && command != logout
.
Określa nazwę repozytorium.
command
-
Polecenia
string
. Wymagane. Dozwolone wartości: buildAndPush
, , push
build
, login
, logout
, start
, . stop
Wartość domyślna: buildAndPush
.
Określa polecenie platformy Docker do uruchomienia.
command
-
Polecenia
string
. Wymagane. Dozwolone wartości: buildAndPush
, , push
build
, login
, logout
. Wartość domyślna: buildAndPush
.
Określa polecenie platformy Docker do uruchomienia.
Dockerfile
-
Dockerfile
string
. Wymagane, gdy command = build || command = buildAndPush
. Wartość domyślna: **/Dockerfile
.
Określa ścieżkę do pliku platformy Docker. Zadanie używa pierwszego znalezionego pliku platformy Docker do skompilowania obrazu.
buildContext
-
Kontekst kompilacji
string
. Opcjonalny. Użyj polecenia , gdy command = build || command = buildAndPush
. Wartość domyślna: **
.
Określa ścieżkę do kontekstu kompilacji. Przekaż **
, aby wskazać katalog zawierający plik platformy Docker.
tags
-
Tagi
string
. Opcjonalny. Użyj polecenia , gdy command = build || command = push || command = buildAndPush
. Wartość domyślna: $(Build.BuildId)
.
Określa listę tagów rozdzielanych przecinkami. Te tagi są używane w build
push
poleceniach i buildAndPush
.
arguments
-
Argumenty
string
. Opcjonalny. Użyj polecenia , gdy command != login && command != logout && command != buildAndPush
.
Określa dodatkowe argumenty do przekazania do klienta platformy Docker. Jeśli używasz wartości buildAndPush
parametru polecenia, właściwość argumentów jest ignorowana.
Przykład: przy użyciu polecenia kompilacji , --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
-
Dodawanie metadanych potoku do obrazów
boolean
. Wartość domyślna: true
.
Domyślnie dane potoku, takie jak nazwa gałęzi źródłowej lub identyfikator kompilacji, są dodawane i ułatwiają śledzenie. Możesz na przykład sprawdzić obraz, aby dowiedzieć się, który potok skompilował obraz. Możesz zrezygnować z tego domyślnego zachowania.
addBaseImageData
-
Dodawanie metadanych obrazu podstawowego do obrazów
boolean
. Wartość domyślna: true
.
Domyślnie są dodawane dane obrazu podstawowego, takie jak nazwa obrazu podstawowego lub skrót, oraz pomoc w śledzeniu. Możesz zrezygnować z tego domyślnego zachowania.
container
-
Kontenera
string
. Opcjonalny. Użyj polecenia , gdy command = start || command = stop
.
Określa nazwę zasobu kontenera do uruchomienia lub zatrzymania. Użyj tego polecenia z poleceniami start
i .stop
Opcje sterowania zadania
Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań. Aby uzyskać więcej informacji, zobacz Opcje sterowania i typowe właściwości zadań.
Zmienne wyjściowe
To zadanie definiuje następujące zmienne wyjściowe, które można używać w krokach podrzędnych, zadaniach i etapach.
DockerOutput
Określa ścieżkę do plików, które zawierają dane wyjściowe polecenia. Możesz wyświetlić dwie ścieżki plików w osobnych wierszach polecenia buildAndPush
i jedną ścieżkę pliku dla dowolnego innego polecenia.
Uwagi
Poniżej przedstawiono najważniejsze korzyści wynikające z używania zadania platformy Docker zamiast bezpośredniego używania pliku binarnego klienta platformy Docker w skrycie.
Integracja z połączeniem usługi rejestru platformy Docker — zadanie ułatwia korzystanie z połączenia usługi rejestru platformy Docker na potrzeby nawiązywania połączenia z dowolnym rejestrem kontenerów. Po zalogowaniu można dodać zadania podrzędne, które wykonują inne zadania lub skrypty, korzystając z logowania używanego przez zadanie platformy Docker. Na przykład użyj zadania platformy Docker, aby zalogować się do dowolnego Azure Container Registry, a następnie użyć innego zadania lub skryptu do skompilowania i wypchnięcia obrazu do rejestru.
Metadane dodane jako etykiety — zadanie dodaje metadane związane ze śledzeniem do obrazu w poniższych etykietach —
- 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
Rozwiązywanie problemów
Dlaczego zadanie platformy Docker ignoruje argumenty przekazywane do polecenia buildAndPush?
Zadanie platformy Docker skonfigurowane przy użyciu polecenia buildAndPush
ignoruje przekazane argumenty, ponieważ stają się one niejednoznaczne dla wewnętrznych poleceń kompilacji i wypychania. Możesz podzielić polecenie na oddzielne kroki kompilacji i wypychania oraz przekazać odpowiednie argumenty. Na przykład zobacz ten wpis w serwisie StackOverflow.
Platforma DockerV2 obsługuje tylko połączenie usługi rejestru platformy Docker i nie obsługuje połączenia z usługą ARM. Jak mogę użyć istniejącej jednostki usługi platformy Azure (SPN) do uwierzytelniania w zadaniu platformy Docker?
Połączenie usługi rejestru platformy Docker można utworzyć przy użyciu poświadczeń SPN platformy Azure. Wybierz opcję „inne” jako typ rejestru i podaj szczegóły w następujący sposób:
Docker Registry: Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID: Service principal client ID
Password: Service principal key
Przykłady
Zaloguj się
Poniższy fragment kodu YAML przedstawia logowanie rejestru kontenerów przy użyciu połączenia usługi rejestru platformy Docker.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Kompilowanie i wypychanie
Wygodne polecenie o nazwie buildAndPush
umożliwia kompilowanie i wypychanie obrazów do rejestru kontenerów w jednym poleceniu.
Poniższy fragment kodu YAML to przykład tworzenia i wypychania wielu tagów obrazu do wielu rejestrów.
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
W powyższym fragmencie kodu obrazy contosoRepository:tag1
i contosoRepository:tag2
są kompilowane i wypychane do rejestrów kontenerów odpowiadających dockerRegistryServiceConnection1
elementom i dockerRegistryServiceConnection2
.
Jeśli chcesz skompilować i wypchnąć do określonego uwierzytelnionego rejestru kontenerów zamiast kompilować i wypychać do wszystkich uwierzytelnionych rejestrów kontenerów jednocześnie, jawnie określ containerRegistry
dane wejściowe, command: buildAndPush
jak pokazano poniżej:
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Logout
Poniższy fragment kodu YAML pokazuje, jak wylogować się z rejestru kontenerów przy użyciu połączenia usługi rejestru platformy Docker.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Uruchamianie/zatrzymywanie
To zadanie służy do kontrolowania kontenerów zadań i usług. To użycie jest rzadkie, ale czasami używane w unikatowych okolicznościach.
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
Inne polecenia i argumenty
Dane wejściowe poleceń i argumentów służą do przekazywania dodatkowych argumentów dla poleceń kompilacji lub wypychania przy użyciu pliku binarnego klienta platformy Docker, jak pokazano w przykładzie.
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
Uwaga
Dane wejściowe argumentów są oceniane dla wszystkich poleceń z wyjątkiem buildAndPush
.
buildAndPush
jest poleceniem wygody (build
po którym następuje push
), arguments
dane wejściowe są ignorowane, gdy jest używany.
Wymagania
Wymaganie | Opis |
---|---|
Typy potoków | YAML, kompilacja klasyczna, wersja klasyczna |
Działa na | Agent, DeploymentGroup |
Wymagania | Brak |
Możliwości | To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu. |
Ograniczenia poleceń | Dowolne |
Zmienne w formie tabeli settable | Dowolne |
Wersja agenta | 2.172.0 lub nowsza |
Kategoria zadania | Kompilacja |
Wymaganie | Opis |
---|---|
Typy potoków | YAML, kompilacja klasyczna, wersja klasyczna |
Działa na | Agent, DeploymentGroup |
Wymagania | Brak |
Możliwości | To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu. |
Ograniczenia poleceń | Dowolne |
Zmienne w formie tabeli settable | Dowolne |
Wersja agenta | Wszystkie obsługiwane wersje agentów. |
Kategoria zadania | Kompilacja |