Udostępnij za pośrednictwem


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, , pushbuild, login, logout, start, . stop Wartość domyślna: buildAndPush.

Określa polecenie platformy Docker do uruchomienia.


command - Polecenia
string. Wymagane. Dozwolone wartości: buildAndPush, , pushbuild, 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 buildpush 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