【问题标题】:Fetching Concourse Docker resources from ECR从 ECR 获取 Concourse Docker 资源
【发布时间】:2018-01-10 17:27:31
【问题描述】:

我正在尝试使用存储在 AWS EC2 容器服务存储库 (ECR) 中的 Docker 资源。配置如下:

- name: my-docker-resource
  type: docker-image
  source:
    repository: account-id.dkr.ecr.eu-west-1.amazonaws.com/my-repo
    tag: d196e5688d
    aws_access_key_id: ((docker-aws-access-key-id))
    aws_secrey_access_key: ((docker-aws-secret-access-key))

当我在此资源上运行 get 的管道时,我看到“没有可用的版本”。

我尝试验证我使用的凭据是否允许访问 repo:

$(aws ecr get-login --no-include-email --profile concourse)
You must specify a region. You can also configure your region by running "aws configure".

所以问题 1:我如何告诉资源使用哪个区域?它是从 repo URL 中猜测的吗?提供区域似乎表明凭据具有足够的权限:

$(aws ecr get-login --no-include-email --profile concourse --region eu-west-1)
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded

然后我尝试提取回购。在我的机器上工作(tm)。管道仍然显示“没有可用的版本”。

我在某处读到自定义存储库需要明确说明端口,所以我也尝试了account-id.dkr.ecr.eu-west-1.amazonaws.com:5000,但无济于事。在标签中使用它在本地也根本不起作用。

任何指针?

【问题讨论】:

    标签: concourse


    【解决方案1】:

    弹出两件事:

    • concourse docker 图像资源经过多次更改,有些版本无法使用 ECR。与您的大厅捆绑在一起的docker-image 版本可能已过期。您可以通过声明自定义资源类型来引用最新版本:

    resource_types:
      # Override the built-in docker-image to get a recent version
      - name: latest-docker-image
        type: docker-image
        source:
          repository: concourse/docker-image-resource
          tag: latest
    resources:
      - name: my-docker-resource
        type: latest-docker-image
    
    • 端口是必需的,一般是443。试试:

    - name: my-docker-resource
      type: docker-image
      source:
        repository: account-id.dkr.ecr.eu-west-1.amazonaws.com:443/my-repo
        tag: d196e5688d
        aws_access_key_id: ((docker-aws-access-key-id))
        aws_secrey_access_key: ((docker-aws-secret-access-key))
    

    【讨论】:

      【解决方案2】:

      这正在工作,虽然我无法真正告诉你“不工作”和“工作”的根源是什么。我目前的配置:

      - name: ecr-repository
        type: docker-image
        source:
          repository: ((account_id)).dkr.ecr.eu-west-1.amazonaws.com/myapp
          aws_access_key_id: ((aws_access_key_id))
          aws_secret_access_key: ((aws_secret_access_key))
      

      基本上和我开始的一样。要么我搞砸了凭据或其他一些上下文,要么我的时间不走运(关于 Docker 资源映像),正如 Phillip 建议的那样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-20
        • 2019-03-02
        • 1970-01-01
        相关资源
        最近更新 更多