先上报错:
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.12:build (default-cli) on project docker-demo: Exception caught: Timeout: GET http://192.168.184.130:2375/version: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.conn.ConnectTimeoutException: Connect to 192.168.184.130:2375 [/192.168.184.130] failed: connect timed out。
不知道做了什么处理,突然生成镜像就会提示连接超时,先介绍下环境:
docker安装在腾讯云linux服务器上,本机idea配置如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定该Main Class为全局的唯一入口 -->
<mainClass>com.hxb.hu_web.HuWebApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>106.53.9.163:5000/${project.artifactId}:${project.version}</imageName>
<baseImage>jdk1.8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://106.53.9.163:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
linux上docker的配置文件已添加允许外部访问:
docker是active状态,本地ping服务器的2375端口也ping不通。还是一直提示下面的错误:
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.12:build (default-cli) on project docker-demo: Exception caught: Timeout: GET http://192.168.184.130:2375/version: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.conn.ConnectTimeoutException: Connect to 192.168.184.130:2375 [/192.168.184.130] failed: connect timed out。
后来查到防火墙,于是查了如下的信息:
可以看到第一次查看iptables的时候显示tcp:2375的状态是DROP的,不知道是啥意思,百度了下:
可以看到对远程服务器2375端口的请求均被拦截,于是照网上要求,在iptables链中新插入一条tcp:2375的信息,状态改为ACCEPT,并且使用-I参数,将这个链至于iptables顶部,就不会过滤2375端口的请求了。
于是执行mvn docker:build -DpushImage命令,生成镜像成功,docker中也有了该镜像。
或者直接执行service iptables stop;关闭防火墙
注:
可能有小伙伴遇到的是其他的问题,或者不是这种解决方法,这只是其中一种,仅供参考。