当前位置: 首页 > 知识库问答 >
问题:

如何通过jenkins将docker映像推送到我自己的注册表的凭据?

鲜于渊
2023-03-14

JHipster现在使用maven jib插件。在此之前,运行在docker容器中的jenkins服务器能够用*创建docker映像。war文件,并通过使用“Jenkinsfile”的管道将其推送到我自己的docker注册表(对于gradle,但我现在切换到Maven),在作业完成后,另一个作业通过使用ssh在远程主机上执行shell脚本,将新构建的docker映像拉到我服务器上的新docker容器中。

这项任务的阶段是:

    def dockerImage
    stage('build docker') {
        sh "cp -Rvvv src/main/docker build/"
        sh "cp -vvv build/libs/*.war build/docker/"
        dockerImage = docker.build("$IMAGE_NAME:$IMAGE_TAG", "build/docker")
    }

    stage('publish docker') {
        docker.withRegistry("$REGISTRY_URL", "$REGISTRY_USER") {
            dockerImage.push "$IMAGE_TAG"
        }
    }

    stage('Remove Unused docker image') {
        sh "docker rmi $IMAGE_NAME:$IMAGE_TAG"
    }

现在,据我所知,jib使之更容易,而Jenkinsfile中的相关部分是用$jhipster ci cd制作的

    def dockerImage
    stage('publish docker') {
        sh "./mvnw -ntp jib:build -Dimage=$REGISTRY/$IMAGE_NAME:$IMAGE_TAG  -Djib.to.auth.username=$REGISTRY_USER"
    }

不幸的是jib似乎不再使用给定$REGISTRY_USER的docker注册表用户登录的凭据,这些凭据保存在Jenkins''凭据'-部分中,就像之前在Jenkins运行docker守护进程一样。

我如何告诉jenkins管道中的jib-插件使用docker注册表登录的凭据,这些凭据存储在我的jenkins帐户中,我认为这是/是一个安全的解决方案?我不想在每个客户端或github上都处理凭据,尤其是密码。

共有2个答案

慕容越泽
2023-03-14
pipeline{
  agent any
  stages{
   stage("Docker login"){
      steps{
      withCredentials([string(credentialsId: 'DockerHubPwd', variable: 'dockerpwd')]) {
      sh "docker login -u username -p ${dockerpwd}"
            }
        }
   }
}
堵浩波
2023-03-14

通过环境变量提供凭据的一种方法是按以下方式使用withCredentials(),如本文所示。

    def dockerImage
    stage('publish docker') {
        withCredentials([usernamePassword(credentialsId: 'myregistry-login', passwordVariable: 'DOCKER_REGISTRY_PWD', usernameVariable: 'DOCKER_REGISTRY_USER')]) {
            // assumes Jib is configured to use the environment variables
            sh "./mvnw -ntp jib:build"
        }
    }
 类似资料:
  • 我无法将docker映像推送到低于错误的工件注册表 登录和拉取工作正常 詹金斯档案: Dockerfile: 我不确定这是怎么回事。我可以在jenkins从属节点上手动推送图像。但使用詹金斯会产生错误 我构建工作的日志 这是我的构建日志中的内容。

  • 我无法将docker映像推送到heroku注册表。 根据docker的说法,我已成功登录: 在那之后,我运行了,我得到了一些令人困惑的错误,说我试图推送到一个不安全的repo,而de-output中的url看起来是安全的(以https开头)。我做错了什么? 我正在使用以下jib配置: jib的Maven输出:build wiht-X:

  • 问题内容: 我已经创建了自己的docker文件(该文件运行一个显示“ helloworld”的shell脚本)。图像是“ hellodocker”,标签是“ mytag”,我现在拥有: 如何将Docker映像推送到dockerhub?我用。这给出了“无此类ID”错误。我想念什么?提前致谢。 问题答案: 您要么在构建时就将其标记为标签,例如 或创建绑定到同一图像的新标签,即

  • 问题内容: 我正在尝试将Docker映像推送到Docker Hub上的私人仓库中。但是,我确实看到Docker Hub上有一个“信息”部分,我想使用有关映像的有用信息进行更新。我想知道是否可以推送README.md文件,并且Docker Hub可以解析此文件并以此更新“信息”部分。我不确定是否应该将README.md嵌入到我的映像中以使其工作? 问题答案: Docker Hub将尝试解析您是否正在

  • 我想把我的形象推广到Docker Hub。这项任务似乎很简单,但我对细节一无所知。 变量的值应该是什么,以及如何构造它?这些说明似乎可以解释,但我不明白。

  • 问题内容: 我正在尝试使用docker托管个人笔记网络服务,并希望备份该服务生成的数据(我的笔记)。目前,我计划使用git提交,拉入和推送到存储库以达到我的目的。 要进行git pull and push,我的docker映像需要托管我的凭据。实现此目的最简单但最安全的方法是什么? 到目前为止,我所做的是: 我选择作为我的服务图像的基础图像。 因为我只需要git的凭据,所以我认为将git凭据帮助器