java - Maven Docker 插件连接被拒绝

标签 java maven maven-docker-plugin

我正在使用这个 Maven docker 插件

https://github.com/wouterd/docker-maven-plugin

我的 pom.xml 文件看起来像

            <plugin>
            <groupId>net.wouterdanes.docker</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>5.0.0</version>
            <executions>
                <execution>
                    <id>package</id>
                    <goals>
                        <goal>build-images</goal>
                    </goals>
                    <configuration>
                        <images>
                            <image>
                                <id>cloudera</id>
                                <dockerFile>${project.basedir}/src/integration-test/docker/Dockerfile</dockerFile>
                                <artifacts>
                                    <artifact>
                                        <file>${project.build.directory}/${project.build.finalName}.jar</file>
                                    </artifact>
                                </artifacts>
                            </image>
                        </images>
                    </configuration>
                </execution>
                <execution>
                    <id>start</id>
                    <goals>
                        <goal>start-containers</goal>
                    </goals>
                    <configuration>
                        <!-- You can set forceCleanup to true to stop and remove started containers
                             at the end of the build even if the stop-containers goal is not executed
                             (useful for preventing Ctrl+C causing dangling containers) -->
                        <forceCleanup>true</forceCleanup>
                        <containers>
                            <container>
                                <id>cloudera</id>
                                <image>cloudera/quickstart</image>                                    
                                <waitForStartup>Cloudera started for</waitForStartup>
                            </container>
                        </containers>
                    </configuration>
                </execution>
                <execution>
                    <id>stop</id>
                    <goals>
                        <goal>stop-containers</goal>
                    </goals>
                </execution>
                <execution>
                    <id>verify</id>
                    <goals>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

当我使用 mvn verify -e -X 运行构建时,出现错误

    ERROR] Failed to execute goal net.wouterdanes.docker:docker-maven-plugin:5.0.0:build-images (package) on project SparkIntegrationTest: Execution package of goal net.wouterdanes.docker:docker-maven-plugin:5.0.0:build-images failed: java.net.ConnectException: Connection refused -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal net.wouterdanes.docker:docker-maven-plugin:5.0.0:build-images (package) on project SparkIntegrationTest: Execution package of goal net.wouterdanes.docker:docker-maven-plugin:5.0.0:build-images failed: java.net.ConnectException: Connection refused
    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.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:497)
    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.PluginExecutionException: Execution package of goal net.wouterdanes.docker:docker-maven-plugin:5.0.0:build-images failed: java.net.ConnectException: Connection refused
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 20 more
Caused by: javax.ws.rs.ProcessingException: java.net.ConnectException: Connection refused
    at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:229)
    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246)
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:667)
    at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:664)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424)
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:664)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:424)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:333)
    at net.wouterdanes.docker.remoteapi.MiscService.buildImage(MiscService.java:130)
    at net.wouterdanes.docker.provider.RemoteApiBasedDockerProvider.buildImage(RemoteApiBasedDockerProvider.java:99)
    at net.wouterdanes.docker.maven.BuildImageMojo.doExecute(BuildImageMojo.java:60)
    at net.wouterdanes.docker.maven.AbstractDockerMojo.execute(AbstractDockerMojo.java:120)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    ... 21 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
    at sun.net.www.http.HttpClient.New(HttpClient.java:308)
    at sun.net.www.http.HttpClient.New(HttpClient.java:326)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1168)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1104)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:998)

我不明白的是“连接拒绝什么”?哪个资源无法连接?如果我知道也许我可以解决这个问题。

最佳答案

我还没有使用过该插件,但从他的文档来看,它使用 docker HTTP API 与守护进程对话。默认情况下,HTTP API 被禁用(因为它可能存在安全风险,并且使用文件套接字)。要启用 HTTP API,您必须更改守护程序的启动参数并添加参数 -H tcp://0.0.0.0:2375 (或指定 IP 而不是 0.0.0.0) 。这在 docker 守护进程 docs 上有解释。并在plugin documentation

以上内容适用于 Linux(因为 docker 在 Linux 上本地运行)。在 Windows 或 Mac 上,您将使用 docker 机器。在这些情况下,您需要设置 3 个环境变量,可以通过运行命令 docker-machine env default 获取这些变量,然后运行 ​​maven 命令。

关于java - Maven Docker 插件连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634368/

相关文章:

使用 Eclipse 和 Maven 进行 Java 编码

maven - 是否有版本 0.12.1.20110112-1712 的 Maven 插件?

java - 使用eclipse将项目转换为maven

java - 如何知道Jtable的一行是否可编辑?

java - Struts 2中使用ModelDriven上传文件Action类

docker - 尽管我使用Maven Docker插件构建,但未列出Docker镜像

maven - 如何设置AWS ECS + dockerfile-maven-plugin?

maven - Docker maven插件make {}-> unix://localhost:80:管道损坏

java - 将示例 XML 代码放入 Javadoc

java - 在运行时检查端口使用情况?