如何在Jenkins中从注册表终端A拉取镜像并将构建的镜像推送到注册表终端B

40次阅读
没有评论

问题描述

在Jenkins中遇到一个问题:他有两个Nexus OSS注册表终端,一个用于拉取镜像(端口10500),另一个用于推送镜像(端口10501)。他在Jenkinsfile中使用了docker.withRegistry来构建和推送镜像,但在拉取镜像时遇到了问题。用户想知道如何在拉取核心镜像时使用10500端口,而在推送镜像时使用10501端口。

解决方案

请注意以下操作可能因Jenkins版本差异而略有不同。

步骤1:使用链式withRegistry

在Jenkinsfile中,您可以使用链式的docker.withRegistry来实现您的需求。以下是修改后的代码示例:

docker.withRegistry('https://registry:10500', 'credentials-id') {
    docker.withRegistry('https://registry:10501', 'credentials-id') {
        docker.build(imageToBuild.getName(), '-f ' + imageToBuild.tag + '.Dockerfile .').push();
    }
}

在上面的示例中,我们首先在docker.withRegistry中使用10500端口来拉取核心镜像,然后在嵌套的docker.withRegistry中使用10501端口来推送构建的镜像。

步骤2:执行Jenkins作业

在您的Jenkins作业中,使用上述修改后的Jenkinsfile来构建和推送镜像。确保在docker.withRegistry中指定了正确的注册表URL和凭据ID。

注意事项

  • 确保credentials-id参数是您的Jenkins凭据中的正确凭据ID。
  • 如果您遇到任何证书或安全相关的问题,请确保注册表终端的证书和安全设置正确配置。
  • 需要根据您的实际情况进行适当的调整,如URL、凭据ID等。

通过使用链式的docker.withRegistry,您可以在拉取和推送镜像时分别指定不同的注册表终端,从而解决了您在Jenkins中遇到的问题。

建议在执行任何更改之前备份您的Jenkins作业和配置,以防止意外情况的发生。

请根据您的实际情况和Jenkins版本,适当地修改以上步骤中的参数和配置。在执行更改之前,最好在测试环境中进行验证,以确保一切正常运行。

请注意,Jenkins和Docker等工具的版本可能会影响操作的方式和结果。本文中的解决方案是基于提供的问题和回答数据提供的信息,实际操作可能需要根据您的环境和工具版本进行微调。

正文完