【问题标题】:How to run a docker container in azure devops?如何在 azure devops 中运行 docker 容器?
【发布时间】:2021-07-19 19:01:03
【问题描述】:

我目前正在使用 docker 容器和 azure devops,目标是从中运行几个测试。

这是我目前所做的:

  1. 我在我的仓库中创建了一个 dockerfile
  2. 我创建了一个用于构建映像并将其推送到容器注册表的管道
  3. 我已检查该映像是否存在于容器注册表中
  4. 我已经开始了一个新的发布管道,任务如下:
    • 一个登录任务:

       steps:
        - task: Docker@2
          displayName: Login
          inputs:
            containerRegistry: nameOfMyRegistry
            command: login
      
    • 一个运行任务:

      steps:
         - task: Docker@2
           displayName: 'Run tests'
           inputs:
              containerRegistry: nameOfRegistry
              repository: nameOfRepository
              command: run
              arguments: 'nameOfImage -p 8089:8089 -f tests.py --run-time 30s -u 1 -r 1'
      

但是在我运行这个之后,我得到了以下错误:

            2021-04-26T11:39:38.9204965Z ##[error]Unable to find image 'nameOfMyImage:latest' locally

            2021-04-26T11:39:38.9228444Z ##[error]docker: Error response from daemon: manifest for nameOfMyImage:latest not found: manifest unknown: manifest tagged by "latest" is not found.

所以我不确定我是否遗漏了什么?我将所有信息都放入了我的 azure 容器注册表,所以我认为它只会从中获取图像,但似乎找不到它。

【问题讨论】:

    标签: azure docker azure-devops


    【解决方案1】:

    没什么复杂的,貌似任务输入command只支持buildAndPush,build,push,login,logout不支持runreference

    script 这样的东西应该可以工作。 reference

    resources:
      containers:
      - container: builder
        image: ubuntu:18.04
    steps:
    - script: echo "I can run inside the container (it starts by default)"
      target:
        container: builder
    

    【讨论】:

      【解决方案2】:

      规范中没有选项run

      https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/docker?view=azure-devops#task-inputs

      要构建应用程序并在构建后立即运行测试,您可以使用以下命令:

      steps:
      - task: Docker@2
        displayName: Login to ACR
        inputs:
          command: login
          containerRegistry: dockerRegistryServiceConnection1
      - task: Docker@2
        displayName: Build
        inputs:
          command: build
          repository: contosoRepository
          tags: tag1
      

      如果你想在 Docker 容器中运行测试,你应该使用

      【讨论】:

      • 其实你可以在command-变量中放任何你想要的docker命令。列出的只是具有特定实现的那些。所有其他值将使用dockercommand-handler。 Source code
      【解决方案3】:

      我知道我得到的答案是你不能将runDocker@2 任务一起使用,但我实际上设法让它现在运行。问题是我使用了错误的图像名称。我不得不这样写:

      nameOfRegistry.azurecr.io/nameOfRepository:tag

      这对我来说太糟糕了,但如果有人设法犯同样的错误,我会把它留在这里。

      【讨论】:

        猜你喜欢
        • 2020-12-14
        • 1970-01-01
        • 2019-03-08
        • 1970-01-01
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 2022-08-16
        • 2020-06-27
        相关资源
        最近更新 更多