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

Jib maven plugn无法将图像从本地推送到DockerHub

江曦
2023-03-14

我有一个简单的Spring Boot应用程序。我试图用jib maven插件创建它的docker图像。但当我构建这个应用程序时,它失败了,出现了401个未经授权的异常。但是我在日志中正确地给出了所有配置,我可以看到它被正确地读取了,但是在推送其失败时,图像出现了I/O错误。。

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.4.0</version>
    <configuration>
         <from>
            <image>openjdk:latest</image>
            <auth>
              <username>userName</username>
              <password>password</password>
            </auth>
        </from> 
         <to>
            <image><userName>/java-spring/${project.artifactId}:latest</image>
            <auth>
              <username>userName</username>
              <password>password</password>
            </auth>
        </to> 
        <container>
            <jvmFlags>
                <jvmFlag>-Xms512m</jvmFlag>
                <jvmFlag>-Xmx512m</jvmFlag>
            </jvmFlags>
        </container>
    </configuration> 
   <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>build</goal>
      </goals>
    </execution>
  </executions>
</plugin>

我正在使用mvn clean install-Djib。httpTimeout=0-X构建时

[DEBUG] bearer auth succeeded for registry-1.docker.io/<userName>/java-spring/singin
[DEBUG] TIMED   Authenticating push to registry-1.docker.io : 3433.0 ms
[DEBUG] TIMING  Preparing layer pushers
[DEBUG] TIMED   Preparing layer pushers : 2.0 ms
[DEBUG] TIMING  Pushing BLOB digest: sha256:6a1d32d7f6ff4a41815f4be581691138a588a3e8b4faa839e1e80f7e51b2cd6f, size: 1544
[DEBUG] TIMING  Pushing BLOB digest: sha256:fe3d76ed81f8e2c7419641c7accf6a0f1c4d15a5b5e344d5848422d7e481edd2, size: 314
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] TIMED   Pulling base image manifest : 4079.0 ms
[DEBUG] TIMING  Preparing base image layer pullers
[DEBUG] TIMED   Preparing base image layer pullers : 0.0 ms
[DEBUG] TIMING  Preparing layer pushers
[DEBUG] TIMED   Preparing layer pushers : 1.0 ms
[DEBUG] TIMING  Pulling base image layer sha256:69e2f037cdb30c8d329b17dad42cd9d92a45d93c17e6699650b23c55eceacb5f
[DEBUG] TIMING  Pulling base image layer sha256:42196c7f3671dd040a08f3515d758e322ed3276abedebd86072bb966f068a783
[DEBUG] TIMING  Pulling base image layer sha256:3e010093287c245d72a774033b4cddd6451a820bfbb1948c97798e1838858dd2
[DEBUG] TIMING  Pulling base image layer sha256:d0e5d6aa3b5285b5d96315f094cdf61ee0c54fbbf9c2e559a09a85afcdc65336
[DEBUG] TIMING  Pulling base image layer sha256:423773833537fe0e40fa349a4bc0a2001340dac0c77d7a9fcf693df3068d4a3d
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] TIMED   Pushing BLOB digest: sha256:6a1d32d7f6ff4a41815f4be581691138a588a3e8b4faa839e1e80f7e51b2cd6f, size: 1544 : 2713.0 ms
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] TIMED   Pushing BLOB digest: sha256:fe3d76ed81f8e2c7419641c7accf6a0f1c4d15a5b5e344d5848422d7e481edd2, size: 314 : 2853.0 ms
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] Building dependencies layer built sha256:e33c10e34799462008afa4ef873291b337878a958002e7567db5bbefa9602633
[DEBUG] TIMED   Building dependencies layer : 6513.0 ms
[DEBUG] TIMING  Pushing BLOB digest: sha256:e33c10e34799462008afa4ef873291b337878a958002e7567db5bbefa9602633, size: 16212760
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] TIMED   Pulling base image layer sha256:69e2f037cdb30c8d329b17dad42cd9d92a45d93c17e6699650b23c55eceacb5f : 2622.0 ms
[DEBUG] refreshing bearer auth token for registry-1.docker.io/<userName>/java-spring/singin...
[DEBUG] TIMED   Pulling base image layer sha256:42196c7f3671dd040a08f3515d758e322ed3276abedebd86072bb966f068a783 : 2660.0 ms
[DEBUG] TIMED   Building and pushing image : 7058.0 ms
[ERROR] I/O error for image [registry-1.docker.io/<userName>/java-spring/singin]:
[DEBUG] TIMED   Pulling base image layer sha256:423773833537fe0e40fa349a4bc0a2001340dac0c77d7a9fcf693df3068d4a3d : 2707.0 ms
[ERROR]     java.net.SocketException
[ERROR]     Socket closed
[DEBUG] TIMED   Pulling base image layer sha256:3e010093287c245d72a774033b4cddd6451a820bfbb1948c97798e1838858dd2 : 2726.0 ms
[DEBUG] TIMED   Pushing BLOB digest: sha256:e33c10e34799462008afa4ef873291b337878a958002e7567db5bbefa9602633, size: 16212760 : 390.0 ms
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

详细日志

[DEBUG] refreshing bearer auth token for registry-1.docker.io/userName/java-spring/singin/singin...
Jul 31, 2020 3:00:58 PM com.google.api.client.http.HttpRequest execute
CONFIG: -------------- REQUEST  --------------
GET https://auth.docker.io/token?service=registry.docker.io&scope=repository:userName/java-spring/singin/singin:pull,push&scope=repository:library/openjdk:pull
Accept: */*
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: jib 2.4.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)

Jul 31, 2020 3:00:58 PM com.google.api.client.http.HttpRequest execute
CONFIG: curl -v --compressed -H 'Accept: */*' -H 'Accept-Encoding: gzip' -H 'Authorization: <Not Logged>' -H 'User-Agent: jib 2.4.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://auth.docker.io/token?service=registry.docker.io&scope=repository:userName/java-spring/singin/singin:pull,push&scope=repository:library/openjdk:pull'
Jul 31, 2020 3:00:58 PM com.google.api.client.http.HttpResponse <init>
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
Content-Type: application/json
Date: Fri, 31 Jul 2020 19:00:59 GMT
Transfer-Encoding: chunked
Strict-Transport-Security: max-age=31536000

Jul 31, 2020 3:00:58 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: Total: 4,279 bytes
Jul 31, 2020 3:00:58 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: {"token":"eyJhbGciOiJ...","access_token":"eyJhbGciOiJ...","expires_in":300,"issued_at":"2020-07-31T19:00:59.184599872Z"}

Jul 31, 2020 3:00:58 PM com.google.api.client.http.HttpRequest execute
CONFIG: -------------- REQUEST  --------------
HEAD https://registry-1.docker.io/v2/userName/java-spring/singin/singin/blobs/sha256:6a1d32d7f6ff4a41815f4be581691138a588a3e8b4faa839e1e80f7e51b2cd6f
Accept: 
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: jib 2.4.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)

Jul 31, 2020 3:00:58 PM com.google.api.client.http.HttpRequest execute
CONFIG: curl -v --compressed -X HEAD -H 'Accept: ' -H 'Accept-Encoding: gzip' -H 'Authorization: <Not Logged>' -H 'User-Agent: jib 2.4.0 jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)' -- 'https://registry-1.docker.io/v2/userName/java-spring/singin/singin/blobs/sha256:6a1d32d7f6ff4a41815f4be581691138a588a3e8b4faa839e1e80f7e51b2cd6f'
Jul 31, 2020 3:00:58 PM com.google.api.client.http.HttpResponse <init>
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 401 Unauthorized
Content-Type: application/json
Docker-Distribution-Api-Version: registry/2.0
Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:userName/java-spring/singin/singin:pull",error="insufficient_scope"
Date: Fri, 31 Jul 2020 19:00:59 GMT
Content-Length: 179
Strict-Transport-Security: max-age=31536000

使现代化

我在配置图像URL时出错。我已经在DockerHub中以java spring的形式手动创建了一个repo,并将其附加到图像URL中,它将成为Docker不支持的多级repo。在从配置和DockerHub(删除手动创建的repo java spring)中删除repo名称后,我可以使用JIB从本地推送图像。

下面的配置就可以了。

<plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>2.4.0</version>
        <configuration>
             <from>
                <image>openjdk:latest</image>
                <auth>
                  <username>userName</username>
                  <password>password</password>
                </auth>
            </from> 
             <to>
                <image><userName>/${project.artifactId}:latest</image>
                <auth>
                  <username>userName</username>
                  <password>password</password>
                </auth>
            </to> 
            <container>
                <jvmFlags>
                    <jvmFlag>-Xms512m</jvmFlag>
                    <jvmFlag>-Xmx512m</jvmFlag>
                </jvmFlags>
            </container>
        </configuration> 
       <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>build</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

共有1个答案

包承望
2023-03-14

Docker Hub不支持多级存储库名称。例如,不能使用

当这种情况发生时,Jib团队将努力用Docker Hub显示更好的错误消息

附言:您可以删除

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

  • private registry在docker 1.10.3的基础上工作得很好,但在docker更新到1.12.0后,我无法拉/推映像。 我已将/etc/sysconfig/docker修改为: 或 更重要的是,我只是运行一个简单的命令来启动私有注册表进行测试,其他的都是默认的: 未配置代理。总而言之,它只是一个测试的安静的样本环境。

  • 我尝试运行Drupal作为Docker容器在Vagant box boot2docker(在Windows 8.1)。 Vagrantfile(Drupal容器) 主机/Vagrantfile(boot2docker) 在Drupal容器的目录中运行会导致错误,因为找不到Drupal映像。 输出 它的工作原理,如果我将主机的方框更改为 主机/虚拟文件(ubuntu/trusty64) 但我喜欢使用

  • 本文向大家介绍Git 将本地更改推送到SVN,包括了Git 将本地更改推送到SVN的使用技巧和注意事项,需要的朋友参考一下 示例 命令 将为您的每个本地git提交创建SVN修订版。与SVN一样,您的本地git历史记录必须与SVN信息库中的最新更改同步,因此,如果命令失败,请尝试先执行git svn rebase。

  • 我试图测试一些普罗米修斯度量,通过推动到本地push网关。push网关docker映像正在运行,当我使用:http://localhost:9091/metrics时,我可以在浏览器中看到它 然而,当我运行python脚本来推送指标时,我得到一个404错误。 错误:urllib2。HTTPError:HTTP错误404:未找到 推送地址中有我遗漏的东西吗?我已尝试添加/度量,但存在相同的错误

  • 我无法将docker映像推送到低于错误的工件注册表 登录和拉取工作正常 詹金斯档案: Dockerfile: 我不确定这是怎么回事。我可以在jenkins从属节点上手动推送图像。但使用詹金斯会产生错误 我构建工作的日志 这是我的构建日志中的内容。