Docker@2 — задача Docker версии 2
Создание или отправка образов Docker, вход в систему или выход из системы, запуск или остановка контейнеров или выполнение команды Docker.
Создание или отправка образов Docker, вход или выход из системы либо выполнение команды Docker.
Синтаксис
# 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.
Входные данные
containerRegistry
-
Реестр контейнеров
string
.
Имя подключения к службе реестра Docker. Требуется для команд, выполняющих проверку подлинности с помощью реестра.
repository
-
Репозиторий контейнеров
string
. Необязательный элемент. Используйте при command != login && command != logout && command != start && command != stop
.
Указывает имя репозитория.
repository
-
Репозиторий контейнеров
string
. Необязательный элемент. Используйте при command != login && command != logout
.
Указывает имя репозитория.
command
-
Команды
string
. Обязательный. Допустимые значения: buildAndPush
, build
, push
, login
, logout
, start
. stop
Значение по умолчанию: buildAndPush
.
Указывает выполняемую команду Docker.
command
-
Команды
string
. Обязательный. Допустимые значения: buildAndPush
, build
, push
, login
, logout
. Значение по умолчанию: buildAndPush
.
Указывает выполняемую команду Docker.
Dockerfile
-
Dockerfile
string
. Требуется, если command = build || command = buildAndPush
. Значение по умолчанию: **/Dockerfile
.
Указывает путь к файлу Docker. Задача использует первый файл Docker, который она находит для сборки образа.
buildContext
-
Контекст сборки
string
. Необязательный элемент. Используйте при command = build || command = buildAndPush
. Значение по умолчанию: **
.
Указывает путь к контексту сборки. Передайте **
, чтобы указать каталог, содержащий файл Docker.
tags
-
Теги
string
. Необязательный элемент. Используйте при command = build || command = push || command = buildAndPush
. Значение по умолчанию: $(Build.BuildId)
.
Указывает список тегов с разделителями-запятыми. Эти теги используются в build
командах , push
и buildAndPush
.
arguments
-
Аргументы
string
. Необязательный элемент. Используйте при command != login && command != logout && command != buildAndPush
.
Указывает дополнительные аргументы для передачи клиенту Docker. При использовании значения buildAndPush
параметра команды свойство arguments игнорируется.
Пример: использование команды сборки , --build-arg HTTP_PROXY=http://10.20.30.2:1234 --quiet
.
addPipelineData
-
Добавление метаданных конвейера в образы
boolean
. Значение по умолчанию: true
.
По умолчанию данные конвейера, такие как имя исходной ветви или идентификатор сборки, добавляются и помогают с возможностью трассировки. Например, можно проверить образ, чтобы узнать, какой конвейер создал образ. Вы можете отказаться от этого поведения по умолчанию.
addBaseImageData
-
Добавление метаданных базового образа в образы
boolean
. Значение по умолчанию: true
.
По умолчанию добавляются данные базового образа, такие как имя базового образа или дайджест, которые помогают отслеживать данные. Вы можете отказаться от этого поведения по умолчанию.
container
-
Контейнер
string
. Необязательный элемент. Используйте при command = start || command = stop
.
Указывает имя ресурса контейнера для запуска или остановки. Используйте эту команду с командами start
и stop
.
Параметры управления задачами
Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.
Выходные переменные
Эта задача определяет следующие выходные переменные, которые можно использовать в нисходящих шагах, заданиях и этапах.
DockerOutput
Указывает путь к файлам, содержащим выходные данные команды. Вы можете указать два пути к файлам в отдельных строках для команды и один путь к файлу buildAndPush
для любой другой команды.
Комментарии
Ниже приведены основные преимущества использования задачи Docker вместо непосредственного использования двоичного файла клиента Docker в скрипте.
Интеграция со службой реестра Docker . Эта задача упрощает использование подключения к службе реестра Docker для подключения к любому реестру контейнеров. После входа можно добавить последующие задачи, которые выполняют другие задачи или скрипты, используя вход, используемый задачей Docker. Например, используйте задачу Docker для входа в любой Реестр контейнеров Azure, а затем используйте другую задачу или скрипт для сборки и отправки образа в реестр.
Метаданные, добавленные в виде меток . Задача добавляет метаданные, связанные с возможностью трассировки, к изображению в следующих метках:
- 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
Устранение неполадок
Почему задача Docker игнорирует аргументы, переданные команде buildAndPush?
Задача Docker, настроенная с помощью команды buildAndPush
, игнорирует переданные аргументы, так как они становятся неоднозначными для внутренних команд сборки и отправки. Вы можете разделить команду на отдельные шаги сборки и отправки и передать подходящие аргументы. Пример см. в этой публикации на сайте StackOverflow.
DockerV2 поддерживает только подключение к службе реестра Docker и не поддерживает подключение к службе ARM. Как использовать существующий субъект-службу Azure (SPN) для проверки подлинности в задаче Docker?
Вы можете создать подключение к службе реестра Docker, используя учетные данные имени субъекта-службы Azure. Выберите другие значения в разделе "Тип реестра" и укажите следующие сведения:
Docker Registry: Your container registry URL (eg. https://myacr.azurecr.io)
Docker ID: Service principal client ID
Password: Service principal key
Примеры
Вход
В следующем фрагменте YAML показан вход в реестр контейнеров с помощью подключения к службе реестра Docker.
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: dockerRegistryServiceConnection1
Сборка и отправка
Удобная команда с именем buildAndPush
позволяет выполнять сборку и отправку образов в реестр контейнеров с помощью одной команды.
Следующий фрагмент YAML является примером создания и отправки нескольких тегов образа в несколько реестров.
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
В приведенном выше фрагменте образы contosoRepository:tag1
и contosoRepository:tag2
создаются и отправляются в реестры контейнеров, соответствующие dockerRegistryServiceConnection1
и dockerRegistryServiceConnection2
.
Если вы хотите выполнить сборку и отправку в определенный реестр контейнеров с проверкой подлинности вместо сборки и отправки во все реестры контейнеров, прошедших проверку подлинности, явно укажите containerRegistry
входные данные, command: buildAndPush
как показано ниже.
steps:
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
containerRegistry: dockerRegistryServiceConnection1
repository: contosoRepository
tags: |
tag1
tag2
Logout
В следующем фрагменте YAML показано, как выйти из реестра контейнеров с помощью подключения к службе реестра Docker.
- task: Docker@2
displayName: Logout of ACR
inputs:
command: logout
containerRegistry: dockerRegistryServiceConnection1
Запуск и остановка
Используйте эту задачу для управления контейнерами заданий и служб. Это редкое использование, но иногда используется в уникальных обстоятельствах.
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
Другие команды и аргументы
Входные данные команды и аргументов используются для передачи дополнительных аргументов для команд сборки или отправки с помощью двоичного файла клиента Docker, как показано в примере.
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
Примечание
Входные аргументы вычисляются для всех команд, кроме buildAndPush
.
buildAndPush
— это удобная команда (build
за которой следует push
), arguments
входные данные игнорируются при использовании.
Требования
Требование | Описание |
---|---|
Типы конвейеров | YAML, классическая сборка, классический выпуск |
Выполняется в | Агент, DeploymentGroup |
Требования | None |
Capabilities | Эта задача не удовлетворяет требованиям для последующих задач в задании. |
Ограничения команд | Любой |
Устанавливаемые переменные | Любой |
Версия агента | 2.172.0 или более поздней версии |
Категория задач | Сборка |
Требование | Описание |
---|---|
Типы конвейеров | YAML, классическая сборка, классический выпуск |
Выполняется в | Агент, DeploymentGroup |
Требования | None |
Capabilities | Эта задача не удовлетворяет требованиям для последующих задач в задании. |
Ограничения команд | Любой |
Устанавливаемые переменные | Любой |
Версия агента | Все поддерживаемые версии агента. |
Категория задач | Сборка |