Docker报Connection reset by peer错误求助:Maven构建镜像失败
你在Windows环境下执行mvn install dockerfile:build构建镜像时碰到的连接重置问题,我梳理了几个针对性的解决方向,你可以逐一排查:
先修正环境变量的拼写错误:你提到设置了
DOCKET_HOST,这里应该是DOCKER_HOST才对!拼写错误会导致这个配置完全不生效,这很可能是问题的核心诱因。匹配Windows环境的Docker连接地址:Windows原生Docker Desktop开启
tcp://localhost:2375无TLS后,DOCKER_HOST应该设置为tcp://localhost:2375——unix:///private/var/tmp/docker.sock是macOS/Linux下的用法,Windows下除非用WSL2后端,否则这个路径完全无效。验证Docker端口是否正常监听:打开PowerShell执行
Test-NetConnection localhost -Port 2375,如果输出显示TcpTestSucceeded: True说明端口是通的;如果失败,检查Docker Desktop的设置是否真的保存生效,或者直接重启Docker试试。在Maven插件里显式指定Docker主机:有时候环境变量可能没被Maven正确读取,你可以直接在
pom.xml的dockerfile插件配置里添加dockerHost参数,强制指定连接地址:
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <!-- 替换成你实际使用的插件版本 --> <configuration> <dockerHost>tcp://localhost:2375</dockerHost> <!-- 你的镜像名称、Dockerfile路径等其他配置 --> </configuration> </plugin>
检查防火墙或杀毒软件拦截:Windows防火墙可能会阻止本地2375端口的连接,你可以临时关闭防火墙测试一下,或者在防火墙规则里添加允许Docker Desktop访问该端口的权限。
如果用WSL2后端的Docker:建议直接切换到WSL2的终端里执行Maven命令,此时
DOCKER_HOST可以设置为unix:///var/run/docker.sock(WSL2能直接访问Docker的unix socket),这种连接方式比TCP更稳定。
最后别忘了,修改Docker配置或者环境变量后,一定要重启Docker Desktop和你的终端,确保新配置完全生效。
内容的提问来源于stack exchange,提问作者Gabor Gyarmati

