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

无法将docker映像推送到artifactory注册表

楮阳
2023-03-14

我无法将docker映像推送到低于错误的工件注册表

登录和拉取工作正常

92bd1433d7c5: Layer already exists
b31411566900: Layer already exists
f0ed7f14cbd1: Layer already exists
851f3e348c69: Layer already exists
e27a10675c56: Layer already exists
EOF

詹金斯档案:

node ('lnp6xxxxxxb003') {
    def app
    def server = Artifactory.server 'maven-qa'
    server.bypassProxy = true

    stage('Clone repository') {
        /* Let's make sure we have the repository cloned to our workspace */

        checkout scm
    }

    stage('Build image') {
        /* This builds the actual image; synonymous to
         * docker build on the command line */

        app = docker.build("devteam/maven")
    }

    stage('Test image') {
        /* Ideally, we would run a test framework against our image.

        app.inside {
            sh 'mvn --version'
            sh 'echo "Tests passed"'
        }
    }

    stage('Push image') {
        /* Finally, we'll push the image with two tags:
         * First, the incremental build number from Jenkins
         * Second, the 'latest' tag.
         * Pushing multiple tags is cheap, as all the layers are reused. */
          docker.withRegistry('https://docker.maven-qa.xxx.partners', 'docker-credentials') {
            app.push("${env.BUILD_NUMBER}")
          /*  app.push("latest") */
        }
    }
}

Dockerfile:

# Dockerfile

FROM maven

ENV MAVEN_VERSION 3.3.9

ENV MAVEN_HOME /usr/share/maven

VOLUME /root/.m2

CMD ["mvn"]

我不确定这是怎么回事。我可以在jenkins从属节点上手动推送图像。但使用詹金斯会产生错误

我构建工作的日志

    Logs
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build image)
[Pipeline] sh
[docker-maven-image] Running shell script
+ docker build -t devteam/maven .
Sending build context to Docker daemon 231.9 kB

Step 1 : FROM maven
 ---> 1f858e89a584
Step 2 : ENV MAVEN_VERSION 3.3.9
 ---> Using cache
 ---> c5ff64f9ff9f
Step 3 : ENV MAVEN_HOME /usr/share/maven
 ---> Using cache
 ---> 2a2028d6fdbc
Step 4 : VOLUME /root/.m2
 ---> Using cache
 ---> a50223412b56
Step 5 : CMD mvn
 ---> Using cache
 ---> 2d32a26dde10
Successfully built 2d32a26dde10
[Pipeline] dockerFingerprintFrom
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Push image)
[Pipeline] withDockerRegistry
Wrote authentication to /usr/share/tomcat6/.docker/config.json
[Pipeline] {
[Pipeline] sh
[docker-maven-image] Running shell script
+ docker tag --force=true devteam/maven devteam/maven:84
unknown flag: --force
See 'docker tag --help'.
+ docker tag devteam/maven devteam/maven:84
[Pipeline] sh
[docker-maven-image] Running shell script
+ docker push devteam/maven:84
The push refers to a repository [docker.maven-qa.XXXXX.partners/devteam/maven]
e13738d640c2: Preparing
ef91149a34fb: Preparing
3332503b7bd2: Preparing
875b1eafb4d0: Preparing
7ce1a454660d: Preparing
d3b195003fcc: Preparing
92bd1433d7c5: Preparing
f0ed7f14cbd1: Preparing
b31411566900: Preparing
06f4de5fefea: Preparing
851f3e348c69: Preparing
e27a10675c56: Preparing
92bd1433d7c5: Waiting
f0ed7f14cbd1: Waiting
b31411566900: Waiting
06f4de5fefea: Waiting
851f3e348c69: Waiting
e27a10675c56: Waiting
d3b195003fcc: Waiting
e13738d640c2: Layer already exists
3332503b7bd2: Layer already exists
7ce1a454660d: Layer already exists
875b1eafb4d0: Layer already exists
ef91149a34fb: Layer already exists
d3b195003fcc: Layer already exists
f0ed7f14cbd1: Layer already exists
b31411566900: Layer already exists
92bd1433d7c5: Layer already exists
06f4de5fefea: Layer already exists
851f3e348c69: Layer already exists
e27a10675c56: Layer already exists
EOF
[Pipeline] }
[Pipeline] // withDockerRegistry
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE

这是我的构建日志中的内容。

共有2个答案

东郭淇
2023-03-14

在启用Docker管道插件并开始工作后,我也遇到了同样的问题。我想这可能对你有帮助https://plugins.jenkins.io/docker-workflow/

戚飞虎
2023-03-14

我使用nginx作为一个反向代理,这是后面的负载均衡器。我从nginx配置中删除了下面的行,它proxy_set_headerX-artiFactory-Override-Base-Url工作

$http_x_forwarded_proto://$host/artifactory;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

我仍然不知道为什么这些标题会引起问题。

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

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

  • 我有一个小问题与我的docker注册表上openshift源安装。 我创建了一个docker注册表pod: 创建了一条路线: 创建了一个服务: Openshift的Master是在10.0.2.235上的,只有一个节点,现在我已经创建了一个spring boot应用程序,我使用maven插件docker来构建和推送映像。 当我在本地(主计算机上)运行maven push时,工作正常,但如果我在另一

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

  • 问题内容: 我是AWS的新手。我想在AWS ECS容器实例上设置私有Docker存储库。我创建了一个名为的存储库。AWS显示的示例推入命令正在运行。 但是,通过此命令,我构建并推送了一个名为的映像,我想构建一个名为的映像。所以我将命令更改为: 这应该可以,但是不能。重试一段时间后,出现错误: AWS真的需要我要推送的每个映像专用的存储库吗? 问题答案: 在EC2容器注册需要一个像仓库要设置为你想要

  • 我还不太了解dockerhub。我得到了以下案例: 我为中心标记了几张图片 docker标签myImageA myuser/myrepo: 1 docker标签myImageB myuser/myrepo: 1 docker标签myImageC myuser/myrepo: 1 然后我用docker push myuser/myrepo推送它们 现在,当删除所有本地图像并再次拉入自己的docker