Jenkins管道无法让docker登录从dockerhub提取公共映像

Jenkins管道无法让docker登录从dockerhub提取公共映像,jenkins,continuous-integration,jenkins-pipeline,sonatype,nexus3,Jenkins,Continuous Integration,Jenkins Pipeline,Sonatype,Nexus3,使用下面的声明性管道代码,我试图从jenkins的dockerhub中提取一个公共映像,但是失败了,错误如下 pipeline { agent { docker { image 'ubuntu:latest' label "jenkins-slave-01" } } stages { stage('Build') {

使用下面的声明性管道代码,我试图从jenkins的dockerhub中提取一个公共映像,但是失败了,错误如下

pipeline {  
    agent {
        docker {
            image 'ubuntu:latest'
            label "jenkins-slave-01"
            }
    }
    stages {    
        stage('Build') {    
            steps { 
                sh 'cat /etc/lsb-release'
            }   
        }   
        stage('Deploy') {   
            steps { 
                sh 'cat /etc/lsb-release'
            }   
        }           
    }   
}
詹金斯控制台输出:-

[Pipeline] withDockerRegistry
Using the existing docker config file.Removing blacklisted property: auths$ docker login -u test -p ******** https://index.docker.io/v1/
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
[Pipeline] // withDockerRegistry
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: docker login failed
Finished: FAILURE

甚至从dockerhub获取公共图像都需要jenkins的身份验证?由于我已经在jenkins的
声明性管道(Docker)
部分配置了私有注册中心(nexus),因此我想从dockerhub中获取公共映像。

从我们对您最初问题的评论进行的交换中,我们可以在“声明性管道”中获得您的Docker配置插件指向的是拉式缓存配置,而不是公共docker注册表,您可以在这里看到一些相关信息

如果您想使用插件上配置的凭据,您应该能够配置访问该存储库的凭据,然后选择要与此私有存储库一起使用的凭据,并为ppl查看此问题提供上下文,您在命令中提到的插件具有以下配置:

在注册表凭据上,是否选择了某些内容? 在我的例子中,我使用了artifactory存储库,但没有使用这个插件配置它,而是使用Jenkins上配置的凭据,并在我的管道上声明代理时调用完整的存储库URL

也许您可以避免使用管道上配置的管道,声明下载ubuntu的完整docker URL,而不是仅使用容器+版本,如:

agent {
    docker {
        image 'registry.hub.docker.com/library/ubuntu:latest'
        label "jenkins-slave-01"
        }
}

希望这有助于@SouravAtta,在我的情况下,我已经在jenkins中配置了私有注册表,同时我希望从dockerhub中提取公共映像。您使用的是哪个私有注册表ex.Nexus?是的,我们使用Nexus作为私有注册表。您在Nexus中做过类似的设置吗?是的,如果我保留我的
声明性管道(Docker)
URl和凭证
none
Docker{image'ubuntu:latest'}
它可以工作。但是,我将尝试将
注册表配置为直通式缓存
方法,以使用私有注册表从dockerhub中提取公共映像。问题是否已得到解答,或者您为您的代理下载docker映像时是否仍有问题?非常感谢
Ikaro0
Sourav Atta
。我不知道Nexus甚至可以用来缓存dockerhub的图像。