提问者:小点点

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


我有一个简单的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个答案

匿名用户

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

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

附言:您可以删除