Azure Devops Docker 推送:本地不存在带有标签的图像
Azure Devops Docker Push: An image does not exist locally with the tag
我正在使用 spring 引导 maven 插件在 Azure DevOps 上构建一个 java spring 引导应用程序 docker 容器。之后我想将它推送到 azure 容器注册表。但它失败了
An image does not exist locally with the tag: ***/my/container
不幸的是,容器 uri 的开头被 ***
掩盖了。但是正如您在下面 /usr/bin/docker images
的输出中看到的那样,容器已注册。我试着按照这个例子:https://medium.com/@TimvanBaarsen/build-your-spring-boot-project-using-azure-pipelines-in-azure-devops-3305977991d
流水线步骤
steps:
- task: Maven@3
displayName: "Build Docker image"
inputs:
mavenPomFile: 'pom.xml'
goals: 'spring-boot:build-image'
publishJUnitResults: false
jdkVersionOption: '1.11'
mavenOptions: '-Xmx3072m -Dspring-boot.build-image.imageName=acr-foobar.azurecr.io/my/container'
- task: Docker@2
displayName: Push Docker image
inputs:
containerRegistry: 'acr-foobar.azurecr.io'
repository: 'my/container'
command: 'push'
tags: 'latest'
输出Maven任务
[INFO] Successfully built image 'acr-***/my/container:latest'
输出Docker任务
Starting: Push Docker image
==============================================================================
Task : Docker
Description : Build or push Docker images, login or logout, start or stop containers, or run a Docker command
Version : 2.176.0
Author : Microsoft Corporation
Help : https://aka.ms/azpipes-docker-tsg
==============================================================================
/usr/bin/docker images
/usr/bin/docker push ***/my/container:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
paketobuildpacks/run base-cnb 523e5e0ad089 6 days ago 87.2MB
node 10 2457d5f85d32 13 days ago 911MB
node 10-alpine b328632eb00c 13 days ago 83.6MB
node 12 1f560ce4ce7e 4 weeks ago 918MB
buildpack-deps stretch b39de549c36a 4 weeks ago 835MB
buildpack-deps buster f3f98451c17d 4 weeks ago 804MB
debian 9 c4ccba324c9c 4 weeks ago 101MB
debian 8 091099bf65ad 4 weeks ago 129MB
node 12-alpine d8b74300d554 4 weeks ago 89.6MB
ubuntu 14.04 df043b4f0cf1 7 weeks ago 197MB
jekyll/builder latest a8007cad4069 2 months ago 677MB
alpine 3.9 78a2ce922f86 6 months ago 5.55MB
alpine 3.10 be4e4bea2c2e 6 months ago 5.58MB
alpine 3.8 c8bccc0af957 9 months ago 4.41MB
alpine 3.7 6d1ef012b567 20 months ago 4.21MB
mcr.microsoft.com/azure-pipelines/node8-typescript latest 9a948d360778 2 years ago 595MB
gcr.io/paketo-buildpacks/builder base-platform-api-0.3 6248029341bb 40 years ago 568MB
acr-***/my/container latest 61477479d5e0 40 years ago 283MB
The push refers to repository [***/my/container]
An image does not exist locally with the tag: ***/my/container
##[error]An image does not exist locally with the tag: ***/my/container
##[error]The process '/usr/bin/docker' failed with exit code 1
Finishing: Push Docker image
这是怎么回事?
就我而言
我注意到,如果设置了 containerRegistry
值或存在服务连接,则在构建和发布任务中指定注册表名称。我的发布步骤指定了这个属性,但我的构建步骤没有。
我更改了构建步骤以同时传入此参数,并且在这两个步骤中都创建了正确的标签以解决问题。
可以试试这个希望对你有帮助。
看起来容器构建的容器图像标签是 acr-***/my/container
而您要推送的图像标签是 ***/my/container
所以出于某种原因,它切断了 acr-
来自标签名称。
这可能是因为您的 Azure 容器注册表的名称存在问题。它的名称中不应包含连字符。
您确定您的容器注册表名为 acr-foobar.azurecr.io
吗?
我正在使用 spring 引导 maven 插件在 Azure DevOps 上构建一个 java spring 引导应用程序 docker 容器。之后我想将它推送到 azure 容器注册表。但它失败了
An image does not exist locally with the tag: ***/my/container
不幸的是,容器 uri 的开头被 ***
掩盖了。但是正如您在下面 /usr/bin/docker images
的输出中看到的那样,容器已注册。我试着按照这个例子:https://medium.com/@TimvanBaarsen/build-your-spring-boot-project-using-azure-pipelines-in-azure-devops-3305977991d
流水线步骤
steps:
- task: Maven@3
displayName: "Build Docker image"
inputs:
mavenPomFile: 'pom.xml'
goals: 'spring-boot:build-image'
publishJUnitResults: false
jdkVersionOption: '1.11'
mavenOptions: '-Xmx3072m -Dspring-boot.build-image.imageName=acr-foobar.azurecr.io/my/container'
- task: Docker@2
displayName: Push Docker image
inputs:
containerRegistry: 'acr-foobar.azurecr.io'
repository: 'my/container'
command: 'push'
tags: 'latest'
输出Maven任务
[INFO] Successfully built image 'acr-***/my/container:latest'
输出Docker任务
Starting: Push Docker image
==============================================================================
Task : Docker
Description : Build or push Docker images, login or logout, start or stop containers, or run a Docker command
Version : 2.176.0
Author : Microsoft Corporation
Help : https://aka.ms/azpipes-docker-tsg
==============================================================================
/usr/bin/docker images
/usr/bin/docker push ***/my/container:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
paketobuildpacks/run base-cnb 523e5e0ad089 6 days ago 87.2MB
node 10 2457d5f85d32 13 days ago 911MB
node 10-alpine b328632eb00c 13 days ago 83.6MB
node 12 1f560ce4ce7e 4 weeks ago 918MB
buildpack-deps stretch b39de549c36a 4 weeks ago 835MB
buildpack-deps buster f3f98451c17d 4 weeks ago 804MB
debian 9 c4ccba324c9c 4 weeks ago 101MB
debian 8 091099bf65ad 4 weeks ago 129MB
node 12-alpine d8b74300d554 4 weeks ago 89.6MB
ubuntu 14.04 df043b4f0cf1 7 weeks ago 197MB
jekyll/builder latest a8007cad4069 2 months ago 677MB
alpine 3.9 78a2ce922f86 6 months ago 5.55MB
alpine 3.10 be4e4bea2c2e 6 months ago 5.58MB
alpine 3.8 c8bccc0af957 9 months ago 4.41MB
alpine 3.7 6d1ef012b567 20 months ago 4.21MB
mcr.microsoft.com/azure-pipelines/node8-typescript latest 9a948d360778 2 years ago 595MB
gcr.io/paketo-buildpacks/builder base-platform-api-0.3 6248029341bb 40 years ago 568MB
acr-***/my/container latest 61477479d5e0 40 years ago 283MB
The push refers to repository [***/my/container]
An image does not exist locally with the tag: ***/my/container
##[error]An image does not exist locally with the tag: ***/my/container
##[error]The process '/usr/bin/docker' failed with exit code 1
Finishing: Push Docker image
这是怎么回事?
就我而言
我注意到,如果设置了 containerRegistry
值或存在服务连接,则在构建和发布任务中指定注册表名称。我的发布步骤指定了这个属性,但我的构建步骤没有。
我更改了构建步骤以同时传入此参数,并且在这两个步骤中都创建了正确的标签以解决问题。
可以试试这个希望对你有帮助。
看起来容器构建的容器图像标签是 acr-***/my/container
而您要推送的图像标签是 ***/my/container
所以出于某种原因,它切断了 acr-
来自标签名称。
这可能是因为您的 Azure 容器注册表的名称存在问题。它的名称中不应包含连字符。
您确定您的容器注册表名为 acr-foobar.azurecr.io
吗?