Openshift:在构建映像

时间:2018-05-15 09:27:36

标签: maven docker openshift fabric8 openshift-3

我正在尝试使用Fabric8 Maven插件部署示例项目。 https://github.com/jbossdemocentral/katacoda-fuse-getting-started.git

我在远程计算机上有一个正在运行的Openshift环境,我使用“oc login .....”连接到它。

本地开发机器设置:有docker,maven。安装了。

  OS: Mac OS
  > docker version
  Client:
  Version:      1.11.2
  API version:  1.23
  Go version:   go1.5.4
  Git commit:   b9f10c9
  Built:        Wed Jun  1 21:20:08 2016
  OS/Arch:      darwin/amd64

 Server:
 Version:      18.05.0-ce
 API version:  1.37
 Go version:   go1.10.1
 Git commit:   f150324
 Built:        Wed May  9 22:20:42 2018
 OS/Arch:      linux/amd64

>> oc version
oc v3.9.25
kubernetes v1.9.1+a0ce1bc657

当我从命令提示符运行示例项目“mvn fabric8:deploy”时,构建失败并带有

Error Logs:


      [DEBUG] Trying to configure client from Kubernetes config...
      [DEBUG] Found for Kubernetes config at: [/Users/apiteam/.kube/config].
      [WARNING] F8: Cannot access cluster for detecting mode: Unknown host placholder.openshiftenv.com
     [INFO] F8: Building Docker image in Kubernetes mode
     [INFO] F8: spring-boot: Using fat jar packaging as the spring boot plugin is using `repackage` goal execution
     [INFO] F8: Running generator spring-boot
     [INFO] F8: spring-boot: Using Docker image jboss-fuse-6/fis-java-openshift:2.0 as base / builder
     [ERROR] F8: I/O Error executing build for image [fuse/fuse-camel-sb-rest:snapshot-180515-144114-0343] "spring-boot":io.fabric8.maven.docker.access.DockerAccessException: Unable to pull 'jboss-fuse-6/fis-java-openshift:2.0'
     [INFO] ------------------------------------------------------------------------
     [INFO] BUILD FAILURE
     [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 01:22 min
      [INFO] Finished at: 2018-05-15T14:42:21+05:30
      [INFO] Final Memory: 52M/400M
      [INFO] ------------------------------------------------------------------------
      [ERROR] Failed to execute goal io.fabric8:fabric8-maven-plugin:3.1.80.redhat-000010:build (default) on project fuse-camel-sb-rest: I/O Error executing build for image [fuse/fuse-camel-sb-rest:snapshot-180515-144114-0343] "spring-boot":io.fabric8.maven.docker.access.DockerAccessException: Unable to pull 'jboss-fuse-6/fis-java-openshift:2.0': Get https://registry-1.docker.io/v2/jboss-fuse-6/fis-java-openshift/manifests/2.0: Get https://auth.docker.io/token?scope=repository%3Ajboss-fuse-6%2Ffis-java-openshift%3Apull&service=registry.docker.io: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) (Internal Server Error: 500) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal io.fabric8:fabric8-maven-plugin:3.1.80.redhat-000010:build (default) on project fuse-camel-sb-rest: I/O Error executing build for image [fuse/fuse-camel-sb-rest:snapshot-180515-144114-0343] "spring-boot":io.fabric8.maven.docker.access.DockerAccessException: Unable to pull 'jboss-fuse-6/fis-java-openshift:2.0'
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: I/O Error executing build for image [fuse/fuse-camel-sb-rest:snapshot-180515-144114-0343] "spring-boot":io.fabric8.maven.docker.access.DockerAccessException: Unable to pull 'jboss-fuse-6/fis-java-openshift:2.0'
    at io.fabric8.maven.plugin.mojo.build.BuildMojo.buildAndTag(BuildMojo.java:242)
    at io.fabric8.maven.docker.BuildMojo.executeInternal(BuildMojo.java:47)
    at io.fabric8.maven.plugin.mojo.build.BuildMojo.executeInternal(BuildMojo.java:218)
    at io.fabric8.maven.docker.AbstractDockerMojo.execute(AbstractDockerMojo.java:193)
    at io.fabric8.maven.plugin.mojo.build.BuildMojo.execute(BuildMojo.java:201)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 24 more
Caused by: io.fabric8.maven.docker.access.DockerAccessException: Unable to pull 'jboss-fuse-6/fis-java-openshift:2.0'
    at io.fabric8.maven.docker.access.hc.DockerAccessWithHcClient.pullImage(DockerAccessWithHcClient.java:369)
    at io.fabric8.maven.docker.AbstractDockerMojo.checkImageWithAutoPull(AbstractDockerMojo.java:439)
    at io.fabric8.maven.docker.AbstractBuildSupportMojo.autoPullBaseImage(AbstractBuildSupportMojo.java:110)
    at io.fabric8.maven.docker.AbstractBuildSupportMojo.buildImage(AbstractBuildSupportMojo.java:63)
    at io.fabric8.maven.docker.BuildMojo.buildAndTag(BuildMojo.java:56)
    at io.fabric8.maven.plugin.mojo.build.BuildMojo.buildAndTag(BuildMojo.java:235)
    ... 30 more
Caused by: io.fabric8.maven.docker.access.hc.http.HttpRequestException: Get https://registry-1.docker.io/v2/jboss-fuse-6/fis-java-openshift/manifests/2.0: Get https://auth.docker.io/token?scope=repository%3Ajboss-fuse-6%2Ffis-java-openshift%3Apull&service=registry.docker.io: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) (Internal Server Error: 500)
    at io.fabric8.maven.docker.access.hc.ApacheHttpClientDelegate$StatusCodeCheckerResponseHandler.handleResponse(ApacheHttpClientDelegate.java:177)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:222)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:164)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:139)
    at io.fabric8.maven.docker.access.hc.ApacheHttpClientDelegate.post(ApacheHttpClientDelegate.java:97)
    at io.fabric8.maven.docker.access.hc.DockerAccessWithHcClient.pullImage(DockerAccessWithHcClient.java:366)
    ... 35 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

我按照Redhat站点中给出的说明,使用docker,oc设置本地环境,并通过oc登录从本地计算机访问Openshift环境。另外,我对远程运行的openshift环境知之甚少,我只使用了openshift控制台和从本地机器连接的令牌。

所以,现在我的问题是

  1. 在本地计算机上使用fabric8是否还需要其他设置?

  2. 如上所述,我不知道fabric8是否安装在openshift平台之上。是否必须在openshift设置中使用fabric8或openshift提供开箱即用的功能。

  3. 我检查了openshift控制台,它有“jboss-fuse-6 / fis-java-openshift:2.0”图像流。我是否需要获取openshift平台的docker内部存储库URL,是否需要在源代码中配置?在日志“https://registry-1.docker.io/v2/jboss-fuse-6/fis-java-openshift/manifests/2.0”中,这来自 - 我似乎没有在源代码中找到此配置。 fabric8是否自动连接到openshift env?

  4. 的内部docker注册表
  5. 当运行“mvn fabric8:deploy”时,我的理解是“Project是本地编译的,本地docker连接到Openshift环境并拉出基本图像(在这种情况下'jboss-fuse-6 / fis -java-openshift:2.0')进入本地机器并构建最终图像并部署到openshift环境“。这是正确的还是 - 它是另一个,即springboot jar,docker图像是在openshift平台内构建的,也是部署的吗?

  6. 我的openshift配置文件是否还需要访问Internal Openshift Registry以获取docker镜像?

  7. 有人可以澄清疑问并帮助解决问题吗?

2 个答案:

答案 0 :(得分:0)

  1. 如果您使用OpenShift和fabric8 s2i构建,则本地设置不是 需要。所有构建和部署都在OpenShift中运行。错误 表明OpenShift无法拉动 jboss-fuse-6/fis-java-openshift:2.0图片。
  2. AFAIK,OpenShift不提供fabric8。
  3. 此图片位于redhat container registry,而非官方 码头工人注册。换句话说,此图像位于 registry.access.redhat.com/jboss-fuse-6/fis-java-openshift,不是 registry-1.docker.io/v2/jboss-fuse-6/fis-java-openshift。 您需要启用docker引擎才能访问redhat注册表,例如,请参阅this
  4. 如果你正在运行s2i build,那么你的想法并不是这样。
  5. 对于s2i构建或docker构建,没有必要。

答案 1 :(得分:-1)

MVN软件包fabric8:build可以工作。

                    <registry>registry.access.redhat.com</registry>
                    <authConfig>
                      <username>registry-username</username>
                      <password>registry-password</password>
                    </authConfig>

                </configuration>