Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jib maven插件无法将映像从本地推送到DockerHub_Docker_Jib_Maven Jib - Fatal编程技术网

Jib maven插件无法将映像从本地推送到DockerHub

Jib maven插件无法将映像从本地推送到DockerHub,docker,jib,maven-jib,Docker,Jib,Maven Jib,我有一个简单的Spring Boot应用程序。我尝试使用jib maven插件创建它的docker映像。但当我构建这个应用程序时,它失败了,出现了401个未经授权的异常。但是我在日志中正确地给出了所有配置,我可以看到它被正确地读取了,但是在推送它失败的同时,映像出现了I/O错误 <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugi

我有一个简单的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>
详细日志

[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
[DEBUG]正在刷新注册表-1.docker.io/userName/java-spring/singin/singin的承载身份验证令牌。。。
2020年7月31日下午3:00:58 com.google.api.client.http.HttpRequest执行
配置:------------请求--------------
得到https://auth.docker.io/token?service=registry.docker.io&scope=repository:userName/java-spring/singin/singin:pull、push和scope=repository:library/openjdk:pull
接受:*/*
接受编码:gzip
授权:
用户代理:jib 2.4.0 jib maven插件Google HTTP Java Client/1.34.0(gzip)
2020年7月31日下午3:00:58 com.google.api.client.http.HttpRequest执行
CONFIG:curl-v--compressed-H'Accept://*'-H'Accept编码:gzip'-H'授权:'-H'用户代理:jib 2.4.0 jib maven插件Google HTTP Java客户端/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'
2020年7月31日下午3:00:58 com.google.api.client.http.HttpResponse
配置:-------------响应--------------
HTTP/1.1200ok
内容类型:application/json
日期:2020年7月31日星期五19:00:59 GMT
传输编码:分块
严格的运输安全:最大年龄=31536000
2020年7月31日下午3:00:58 com.google.api.client.util.LoggingByteArrayOutputStream关闭
配置:总计:4279字节
2020年7月31日下午3:00:58 com.google.api.client.util.LoggingByteArrayOutputStream关闭
配置:{“令牌”:“EYJHBGCOIIJ…”,“访问令牌”:“EYJHBGCOIIJ…”,“到期日”:300,“发布时间:”:“2020-07-31T19:00:59.184599872Z”}
2020年7月31日下午3:00:58 com.google.api.client.http.HttpRequest执行
配置:------------请求--------------
头https://registry-1.docker.io/v2/userName/java-spring/singin/singin/blobs/sha256:6a1d32d7f6ff4a41815f4be581691138a588a3e8b4faa839e1e80f7e51b2cd6f
接受:
接受编码:gzip
授权:
用户代理:jib 2.4.0 jib maven插件Google HTTP Java Client/1.34.0(gzip)
2020年7月31日下午3:00:58 com.google.api.client.http.HttpRequest执行
CONFIG:curl-v--compressed-X HEAD-H'Accept:'-H'Accept编码:gzip'-H'授权:'-H'用户代理:jib 2.4.0 jib maven插件Google HTTP Java Client/1.34.0(gzip)'--'https://registry-1.docker.io/v2/userName/java-spring/singin/singin/blobs/sha256:6a1d32d7f6ff4a41815f4be581691138a588a3e8b4faa839e1e80f7e51b2cd6f'
2020年7月31日下午3:00:58 com.google.api.client.http.HttpResponse
配置:-------------响应--------------
HTTP/1.1 401未经授权
内容类型:application/json
Docker分发Api版本: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=“scope不足”
日期:2020年7月31日星期五19:00:59 GMT
内容长度:179
严格的运输安全:最大年龄=31536000
更新

我在配置图像URL时出错。我已经在DockerHub中手动创建了一个repo,名为JavaSpring,并将其附加到图像URL中,它将成为Docker不支持的多级repo。在从配置和DockerHub(删除手动创建的RepoJavaSpring)中删除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>

com.google.cloud.tools
jib maven插件
2.4.0
openjdk:最新版本
用户名
密码
/${project.artifactId}:最新版本
用户名
密码
-Xms512m
-Xmx512m
包裹
建造
码头中心。例如,发生这种情况时,您不能在Docker Hub中使用类似
的存储库名称



另外,您可以删除
块,因为
openjdk
是Docker Hub上的公共映像。

非常奇怪。显然,Jib最初成功地通过Docker Hub对
openjdk
/JavaSpring/singin
进行了身份验证。你的构建需要很多时间吗?您可以尝试使用
mvn-Djib.blobMounts=false…
?否则,在Jib GitHub repo上创建一个文件。(顺便说一句,因为
openjdk
是一个公共repo,所以您不需要在
中使用
)另外,为了进行测试,请尝试
-Djib.serialize=true
(这会关闭并发性,速度可能非常慢)如果它仍然失败并出现相同的错误。@ChanseokOh没有运气仍然得到相同的错误error@ChanseokOh更新了网络跟踪logs@ChanseokOh如果我从我的URL中删除我的repo名称,我就能够推送图像用户名/插件图像名称。但是构建日志说它失败了。
<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>