Azure DevOps:Docker Build 任务的镜像名称以 " ***/" 开头。

5
我正在运行一个Docker任务 'buildAndPush',在Azure Pipeline YAML文件中,用于构建我的存储库image并推送到ACR。这个任务运行得非常完美,我可以在docker和ACR中看到我的image。
然而,我想分解这个任务。我想在docker中构建image。我想本地运行一次docker image,然后运行docker image中的测试脚本(一个python文件)。只有在测试结果成功后,我才应该将其推送到ACR。
所以,我从构建任务开始。
  - task: Docker@2
    inputs:
      containerRegistry: 'mycontainerRegistry'
      repository: 'myrepository'
      command: 'build'
      Dockerfile: '**/Dockerfile'
      tags: $(Build.BuildId) 

这成功地构建了我的镜像。现在我运行一个bash命令来列出我的镜像。

- bash: docker image ls

我可以看到我的镜像已经构建完成,但是它显示为“***/myrepository”。这就是问题所在。

我想要使用这个镜像并运行我的新构建的docker镜像,以确保运行成功完成。

- bash: docker run 'myrepository:$(Build.BuildId)'

我遇到了“未找到存储库”的错误。根据图像标记,构建ID是正确的。我无法使用docker run ***/myrepository:$(Build.BuildId),因为它会抛出错误:“格式不正确”。

[error]invalid argument "***/myrepository:7167" for "-t, --tag" flag: invalid reference format

有没有方法可以解决这个问题?我现在采取的方式是否正确?

感谢您的时间!


1
你确定 *** 不是一个被掩盖的秘密吗? - Daniel Mann
我在这里没有提供任何秘密,也没有使用自定义变量或Keyvault。谢谢! - Suraj
1
@DanielMann ACR URI被屏蔽了。感谢您的建议。 - Suraj
1个回答

6
当您将Docker构建任务连接到ACR时,Docker镜像将以您的注册表URI为前缀。其中 ** ****/myrepository中是您的注册表URI加密后的值。
因此,在docker run命令中,您需要指定镜像为Your_ACR_URI/myrepository:$(Build.BuildId)。以下是示例: - bash: docker run 'Your_ACR_URI/myrepository:$(Build.BuildId)'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接