【问题标题】:How to push Docker image to ECR in Jenkins?如何在 Jenkins 中将 Docker 镜像推送到 ECR?
【发布时间】:2020-01-30 12:54:30
【问题描述】:

我正在与詹金斯一起工作。我正在尝试将图像推送到ECR。我正在使用本地 Docker 来构建图像。

下面是我的 Jenkins 文件:

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                bat  'docker build -t sampleapp -f SampleApp/Dockerfile .'
            }
        }
        stage('Push image') {
         steps {
           withDockerRegistry([url: "https://536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/test-repository",credentialsId: "ecr:ap-southeast-2:demo-ecr-credentials"]) {
           bat 'docker push sampleapp:latest'
               }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
            }
        }
    }
}

在上面的代码中,我能够构建和创建图像。在第二阶段,我面临着问题。我收到以下错误:

$ docker login -u AWS -p ******** https://536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/test-repository

WARNING! Using --password via the CLI is insecure. Use --password-stdin.  
Login Succeeded
C:\Program Files (x86)\Jenkins\workspace\SampleAppPipeLine>docker push sampleapp:latest 
The push refers to repository [docker.io/library/sampleapp]
a160522d6d0e: Preparing
2e2c2606bd45: Preparing
9b0a482c69b1: Preparing
995a0cc6a5f6: Preparing
c1b55dcb46c2: Preparing
cf5b3c6798f7: Preparing
cf5b3c6798f7: Waiting
    
denied: requested access to the resource is denied

有人可以帮我解决这个问题吗?任何帮助将不胜感激。
谢谢。

【问题讨论】:

  • 我在日志中没有看到任何错误?
  • 嗨进程显然从未启动过消息,它将显示并卡住。同样在工作空间中的 templ 文件夹将被创建,并且文件 script.sh 将被创建。在 script.sh 我可以看到 docker tag sampleapp 536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/sampleapp:latest
  • 我可以知道536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/…这是应该在script.sh中的url吗?
  • 是的,如果这是您的 AWS ECR 网址
  • 但是在哪里改变呢? docker.withRegistry 我已经给了 https

标签: amazon-web-services docker jenkins docker-image amazon-ecr


【解决方案1】:

docker.io 的默认存储库是 hardcode 是:docker.io/library/

因此,对于 AWS ECR 存储库,您应该:

docker build -t test-repository .

docker 标签 test-repository:latest 536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/test-repository:latest

docker push 536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/test-repository:latest

确保test-repository repo 已在 ECR 上创建。

【讨论】:

  • 我添加了 bat 'docker push 536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/…' 并得到无效的参考格式错误
  • 536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/test-repository:latest 是这个吗?对吗?
  • 是的,这是 ECR 回购网址
  • 你有没有 tag 获取图片:docker tag latest aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app
  • 是的,在构建阶段。我已经在上面上传了我的jenkins文件代码
猜你喜欢
  • 2020-02-13
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
相关资源
最近更新 更多