如何在Jenkins中将Docker镜像推送到ECR?

4

我正在使用Jenkins进行工作。我试图将镜像推送到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

有人能帮我解决这个问题吗?非常感谢帮助。
谢谢。


我在日志中没有看到任何错误? - Adiii
进程似乎从未启动,会显示消息并停止。同时,工作空间中将创建模板文件夹,并创建名为 script.sh 的文件。在 script.sh 中,我可以看到 docker 标记为 sampleapp 536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/sampleapp:latest。 - Niranjan
请问http://536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/sampleapp:latest是应该放在script.sh脚本中的URL吗? - Niranjan
是的,如果这是您的 AWS ECR URL。 - Adiii
但是在哪里更改呢?docker.withRegistry我已经使用https给出了。 - Niranjan
1个回答

3

docker.io的默认仓库被硬编码为: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

请确保在ECR上已经创建了test-repository代码库。


这是什么?536703334988.dkr.ecr.ap-southeast-2.amazonaws.com/test-repository:latest - Thanh Nguyen Van
你是否为这个镜像打了标签:docker tag latest aws_account_id.dkr.ecr.region.amazonaws.com/my-web-app - Thanh Nguyen Van
我添加了上面的代码,但出现了错误:来自守护进程的错误响应: 没有这样的镜像:latest:latest。那么它是在查找图像最新版本:最新版本吗? - Niranjan
你可以将$buildnumber设置为你的标签。 - Thanh Nguyen Van
这样构建Docker镜像:docker build -t $buildnumber -f SampleApp/Dockerfile . - Niranjan
显示剩余14条评论

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